chat / app.py
SimrusDenuvo's picture
Update app.py
fdefd2f verified
raw
history blame
2.89 kB
import os
import requests
import gradio as gr
from datasets import load_dataset
# --- Конфигурация ---
HF_TOKEN = os.environ.get("HF_TOKEN") # Из Secrets Spaces
MODEL_NAME = "IlyaGusev/saiga_mistral_7b-lora"
API_URL = f"https://api-inference.huggingface.co/models/{MODEL_NAME}"
headers = {"Authorization": f"Bearer {HF_TOKEN}"}
# --- Загрузка датасета ---
try:
dataset = load_dataset("sberbank-ai/ru_helpdesk", split="train[:50]") # Первые 50 примеров
examples = [d["question"] for d in dataset]
except:
examples = [
"Мой заказ #12345 не прибыл вовремя",
"Как вернуть товар?",
"Проблема с оплатой на сайте"
]
# --- Функция генерации ответа ---
def generate_response(message, history):
prompt = f"""Ты - ИИ-ассистент поддержки. Ответь клиенту профессионально.
Контекст: {history}
Клиент: {message}
Ассистент:"""
try:
response = requests.post(
API_URL,
headers=headers,
json={
"inputs": prompt,
"parameters": {
"max_new_tokens": 300,
"temperature": 0.3 # Для меньшей креативности
}
}
)
return response.json()[0]["generated_text"].split("Ассистент:")[-1].strip()
except Exception as e:
return f"⚠️ Ошибка: {str(e)}"
# --- Интерфейс Gradio ---
theme = gr.themes.Default(
primary_hue="blue",
font=[gr.themes.GoogleFont("Noto Sans"), "sans-serif"]
)
with gr.Blocks(theme=theme) as demo:
gr.Markdown("""<center><h1>📞 Поддержка клиентов</h1></center>""")
with gr.Row():
with gr.Column(scale=2):
chatbot = gr.Chatbot(height=400, bubble_full_width=False)
msg = gr.Textbox(label="Опишите проблему", placeholder="У меня проблема с...")
btn = gr.Button("Отправить", variant="primary")
with gr.Column(scale=1):
gr.Examples(
examples=examples,
inputs=msg,
label="Примеры обращений"
)
gr.Markdown("""
**Советы для клиентов:**
1. Указывайте номер заказа
2. Описывайте проблему подробно
3. Сохраняйте вежливый тон
""")
btn.click(generate_response, [msg, chatbot], [msg, chatbot])
msg.submit(generate_response, [msg, chatbot], [msg, chatbot])
# --- Запуск ---
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0")