chat / app.py
SimrusDenuvo's picture
Update app.py
5dee7eb verified
raw
history blame
2.21 kB
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)