SimrusDenuvo commited on
Commit
884ac0c
·
verified ·
1 Parent(s): fdefd2f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -57
app.py CHANGED
@@ -1,80 +1,60 @@
1
  import os
2
- import requests
3
  import gradio as gr
 
4
  from datasets import load_dataset
5
 
6
- # --- Конфигурация ---
7
- HF_TOKEN = os.environ.get("HF_TOKEN") # Из Secrets Spaces
8
- MODEL_NAME = "IlyaGusev/saiga_mistral_7b-lora"
9
- API_URL = f"https://api-inference.huggingface.co/models/{MODEL_NAME}"
10
- headers = {"Authorization": f"Bearer {HF_TOKEN}"}
11
-
12
- # --- Загрузка датасета ---
13
  try:
14
- dataset = load_dataset("sberbank-ai/ru_helpdesk", split="train[:50]") # Первые 50 примеров
15
  examples = [d["question"] for d in dataset]
16
  except:
17
  examples = [
18
- "Мой заказ #12345 не прибыл вовремя",
19
- "Как вернуть товар?",
20
- "Проблема с оплатой на сайте"
21
  ]
22
 
23
- # --- Функция генерации ответа ---
 
 
 
 
 
 
 
24
  def generate_response(message, history):
25
- prompt = f"""Ты - ИИ-ассистент поддержки. Ответь клиенту профессионально.
26
- Контекст: {history}
 
 
27
  Клиент: {message}
28
- Ассистент:"""
29
 
30
  try:
31
- response = requests.post(
32
- API_URL,
33
- headers=headers,
34
- json={
35
- "inputs": prompt,
36
- "parameters": {
37
- "max_new_tokens": 300,
38
- "temperature": 0.3 # Для меньшей креативности
39
- }
40
- }
41
  )
42
- return response.json()[0]["generated_text"].split("Ассистент:")[-1].strip()
43
  except Exception as e:
44
- return f"⚠️ Ошибка: {str(e)}"
45
 
46
- # --- Интерфейс Gradio ---
47
- theme = gr.themes.Default(
48
- primary_hue="blue",
49
- font=[gr.themes.GoogleFont("Noto Sans"), "sans-serif"]
50
- )
51
-
52
- with gr.Blocks(theme=theme) as demo:
53
- gr.Markdown("""<center><h1>📞 Поддержка клиентов</h1></center>""")
54
 
55
  with gr.Row():
56
- with gr.Column(scale=2):
57
- chatbot = gr.Chatbot(height=400, bubble_full_width=False)
58
- msg = gr.Textbox(label="Опишите проблему", placeholder="У меня проблема с...")
59
- btn = gr.Button("Отправить", variant="primary")
60
 
61
- with gr.Column(scale=1):
62
- gr.Examples(
63
- examples=examples,
64
- inputs=msg,
65
- label="Примеры обращений"
66
- )
67
- gr.Markdown("""
68
- **Советы для клиентов:**
69
- 1. Указывайте номер заказа
70
- 2. Описывайте проблему подробно
71
- 3. Сохраняйте вежливый тон
72
- """)
73
 
74
- btn.click(generate_response, [msg, chatbot], [msg, chatbot])
75
  msg.submit(generate_response, [msg, chatbot], [msg, chatbot])
76
 
77
- # --- Запуск ---
78
- if __name__ == "__main__":
79
- demo.launch(server_name="0.0.0.0")
80
-
 
1
  import os
 
2
  import gradio as gr
3
+ from transformers import pipeline
4
  from datasets import load_dataset
5
 
6
+ # --- 1. Загрузка датасета клиентских обращений ---
 
 
 
 
 
 
7
  try:
8
+ dataset = load_dataset("sberbank-ai/ru_helpdesk", split="train[:100]") # 100 реальных обращений
9
  examples = [d["question"] for d in dataset]
10
  except:
11
  examples = [
12
+ "Мой заказ #12345 не пришел",
13
+ "Как оформить возврат?",
14
+ "Проблема с доступом в личный кабинет"
15
  ]
16
 
17
+ # --- 2. Загрузка локальной модели (не требует API) ---
18
+ model = pipeline(
19
+ "text-generation",
20
+ model="IlyaGusev/saiga_mistral_7b-lora",
21
+ device="cpu" # Для GPU укажите device=0
22
+ )
23
+
24
+ # --- 3. Функция генерации ответа ---
25
  def generate_response(message, history):
26
+ prompt = f"""Ты оператор поддержки. Ответь клиенту вежливо и по делу.
27
+
28
+ Диалог:
29
+ {history}
30
  Клиент: {message}
31
+ Оператор:"""
32
 
33
  try:
34
+ response = model(
35
+ prompt,
36
+ max_new_tokens=200,
37
+ temperature=0.3,
38
+ do_sample=True
 
 
 
 
 
39
  )
40
+ return response[0]["generated_text"].split("Оператор:")[-1].strip()
41
  except Exception as e:
42
+ return f"Ошибка: {str(e)}"
43
 
44
+ # --- 4. Интерфейс Gradio ---
45
+ with gr.Blocks(theme=gr.themes.Soft()) as demo:
46
+ gr.Markdown("""<h1><center>📞 Поддержка клиентов (Русский)</center></h1>""")
 
 
 
 
 
47
 
48
  with gr.Row():
49
+ with gr.Column():
50
+ chatbot = gr.Chatbot(height=350)
51
+ msg = gr.Textbox(label="Ваш запрос", placeholder="Опишите проблему...")
52
+ gr.Examples(examples, inputs=msg, label="Примеры вопросов")
53
 
54
+ with gr.Column():
55
+ gr.Markdown("**Инструкция:**\n\n1. Укажите номер заказа\n2. Опишите проблему детально\n3. Сохраняйте спокойствие")
56
+ gr.Image("https://via.placeholder.com/300x200?text=Support+Logo")
 
 
 
 
 
 
 
 
 
57
 
 
58
  msg.submit(generate_response, [msg, chatbot], [msg, chatbot])
59
 
60
+ demo.launch()