Spaces:
Sleeping
Sleeping
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") | |