File size: 2,892 Bytes
5dee7eb
 
57645e8
fdefd2f
bd826f0
fdefd2f
 
 
5dee7eb
 
 
fdefd2f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5dee7eb
fdefd2f
 
 
 
 
 
 
 
 
5dee7eb
fdefd2f
 
5dee7eb
fdefd2f
5dee7eb
fdefd2f
 
 
 
 
5dee7eb
fdefd2f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5dee7eb
fdefd2f
 
5dee7eb
fdefd2f
 
 
0cc54f4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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")