Spaces:
Sleeping
Sleeping
| import os | |
| import gradio as gr | |
| from openai import OpenAI | |
| # Проверяем API ключ | |
| api_key = os.getenv("OPENROUTER_API_KEY") | |
| if not api_key: | |
| raise ValueError("OPENROUTER_API_KEY не найден в Secrets!") | |
| # Создаём клиента OpenRouter | |
| client = OpenAI( | |
| base_url="https://openrouter.ai/api/v1", | |
| api_key=api_key | |
| ) | |
| # Функция обработки сообщений чата | |
| def ask_ai(user_input, history=[]): | |
| if not user_input.strip(): | |
| return history, "Введите сообщение!" | |
| try: | |
| messages = [{"role": "system", "content": "Ты HR-бот, задавай вопросы."}] | |
| # Добавляем историю чата | |
| for h in history: | |
| messages.append({"role": "user", "content": h[0]}) | |
| messages.append({"role": "assistant", "content": h[1]}) | |
| # Текущий пользовательский ввод | |
| messages.append({"role": "user", "content": user_input}) | |
| # Вызов LLM | |
| response = client.chat.completions.create( | |
| model="anthropic/claude-3.5-sonnet", | |
| messages=messages | |
| ) | |
| answer = response.choices[0].message.content | |
| history.append((user_input, answer)) | |
| return history, "" | |
| except Exception as e: | |
| return history, f"Ошибка при вызове AI: {e}" | |
| # Интерфейс Gradio | |
| with gr.Blocks() as demo: | |
| chat = gr.Chatbot() | |
| msg = gr.Textbox(placeholder="Напишите сообщение...") | |
| state = gr.State([]) # история чата | |
| msg.submit(ask_ai, inputs=[msg, state], outputs=[chat, msg]) | |
| # Запуск | |
| demo.launch() |