Team Ai
Apppublic

TestTesting123/interview-sim-ai

sourceHugging Facemitupdated 8mo agoView on Hugging Face
1likes
app.py73 linesDownload Raw Back to root
1import os2import gradio as gr3from openai import OpenAI4 5# Проверка ключа6api_key = os.getenv("OPENROUTER_API_KEY")7if not api_key:8    raise ValueError("OPENROUTER_API_KEY не найден в Secrets!")9 10# Клиент OpenRouter11client = OpenAI(12    base_url="https://openrouter.ai/api/v1",13    api_key=api_key14)15 16# Функция обработки сообщений17def ask_ai(user_input, role, history=[]):18    if not user_input.strip():19        return history, "Введите сообщение!"20    try:21        # Системный промпт в зависимости от выбранной роли22        system_prompt = f"Ты бот-собеседователь. Роль: {role}. Задавай вопросы и оценивай ответы."23        messages = [{"role": "system", "content": system_prompt}]24        25        # Берем последние 6 сообщений (экономим токены)26        for h in history[-12:]:27            if isinstance(h, dict) and 'role' in h and 'content' in h:28                messages.append(h)29                30        # Добавляем текущее сообщение пользователя31        messages.append({"role": "user", "content": str(user_input)})32 33        # Вызов LLM с ограничением токенов34        response = client.chat.completions.create(35            model="anthropic/claude-3.5-sonnet",36            messages=messages,37            max_tokens=100038        )39 40        answer = response.choices[0].message.content41 42        # Сохраняем историю как словари43        history.append({"role": "user", "content": user_input})44        history.append({"role": "assistant", "content": answer})45 46        return history, ""47    except Exception as e:48        return history, f"Ошибка при вызове AI: {e}"49 50# Gradio интерфейс51with gr.Blocks() as demo:52    gr.Markdown("### 🟢 HR / Tech Interview Chatbot")53    54    with gr.Row():55        role_selector = gr.Dropdown(56            choices=["HR", "Frontend", "Backend"], 57            value="HR", 58            label="Выберите роль собеседования"59        )60        clear_btn = gr.Button("Очистить чат")61    62    chat = gr.Chatbot()63    msg = gr.Textbox(placeholder="Напишите сообщение...")64    state = gr.State([])  # история чата65 66    # Кнопка Clear Chat67    clear_btn.click(lambda: ([], ""), [], [chat, msg])68 69    # Отправка сообщения70    msg.submit(ask_ai, inputs=[msg, role_selector, state], outputs=[chat, msg])71 72# Запуск73demo.launch()