Spaces:
Sleeping
Sleeping
| import os | |
| import requests | |
| import gradio as gr | |
| # Токен берётся из Secrets Hugging Face | |
| HF_TOKEN = os.environ.get("HF_TOKEN") | |
| if not HF_TOKEN: | |
| raise ValueError("❌ Токен не найден. Добавьте HF_TOKEN в Secrets!") | |
| # Настройки модели (используем облегчённую версию для стабильности) | |
| MODEL_NAME = "IlyaGusev/saiga_mistral_7b-lora" # Альтернатива: "IlyaGusev/saiga_mistral_7b" | |
| API_URL = f"https://api-inference.huggingface.co/models/{MODEL_NAME}" | |
| headers = {"Authorization": f"Bearer {HF_TOKEN}"} | |
| def generate_response(prompt, history): | |
| """Генерация ответа с учётом истории диалога""" | |
| try: | |
| # Форматируем историю для модели (если нужно) | |
| formatted_prompt = f"Диалог:\n{history}\nПользователь: {prompt}\nАссистент:" | |
| payload = { | |
| "inputs": formatted_prompt, | |
| "parameters": { | |
| "max_new_tokens": 500, | |
| "temperature": 0.7, | |
| "do_sample": True, | |
| } | |
| } | |
| response = requests.post(API_URL, headers=headers, json=payload) | |
| if response.status_code == 200: | |
| return response.json()[0]["generated_text"] | |
| else: | |
| return f"⚠️ Ошибка API: {response.text}" | |
| except Exception as e: | |
| return f"❌ Ошибка: {str(e)}" | |
| # Интерфейс Gradio (аналог ChatGPT) | |
| with gr.Blocks(title="🇷🇺 Russian Saiga Chat") as demo: | |
| gr.Markdown("## 💬 Чат с Saiga Mistral 7B (через HF API)") | |
| chatbot = gr.Chatbot(label="Диалог") | |
| msg = gr.Textbox(label="Сообщение", placeholder="Напишите что-то...") | |
| clear = gr.Button("Очистить") | |
| def respond(message, chat_history): | |
| bot_message = generate_response(message, chat_history) | |
| chat_history.append((message, bot_message)) | |
| return "", chat_history | |
| msg.submit(respond, [msg, chatbot], [msg, chatbot]) | |
| clear.click(lambda: None, None, chatbot, queue=False) | |
| demo.launch(debug=True) | |