SimrusDenuvo commited on
Commit
e0ba145
·
verified ·
1 Parent(s): 4f42334

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -32
app.py CHANGED
@@ -1,60 +1,76 @@
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_merged",
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()
 
 
1
  import gradio as gr
2
+ from transformers import pipeline, AutoTokenizer
3
  from datasets import load_dataset
4
 
5
+ # 1. Загрузка датасета с обработкой ошибок
6
  try:
7
+ dataset = load_dataset("sberbank-ai/ru_helpdesk", split="train[:50]") # Первые 50 примеров
8
+ examples = [d["question"] for d in dataset if "question" in d]
9
+ except Exception as e:
10
+ print(f"Ошибка загрузки датасета: {e}")
11
  examples = [
12
+ "Где мой заказ #12345?",
13
+ "Как вернуть товар?",
14
+ "Не приходит код подтверждения",
15
+ "Ошибка при оплате картой",
16
+ "Как изменить адрес доставки?"
17
  ]
18
 
19
+ # 2. Оптимизированная загрузка модели
20
+ try:
21
+ tokenizer = AutoTokenizer.from_pretrained("IlyaGusev/saiga_mistral_7b-lora")
22
+ model = pipeline(
23
+ "text-generation",
24
+ model="IlyaGusev/saiga_mistral_7b-lora",
25
+ tokenizer=tokenizer,
26
+ device="cpu",
27
+ torch_dtype="auto",
28
+ model_kwargs={"load_in_4bit": True} # Критически важно для экономии памяти
29
+ )
30
+ except Exception as e:
31
+ raise RuntimeError(f"Ошибка загрузки модели: {str(e)}")
32
 
33
+ # 3. Генерация ответа с шаблоном
34
+ def generate_response(message):
35
+ prompt = f"""Ты - ИИ-ассистент поддержки. Ответь клиенту вежливо и по делу.
36
 
 
 
37
  Клиент: {message}
38
+ Ассистент:"""
39
 
40
  try:
41
  response = model(
42
  prompt,
43
+ max_new_tokens=150,
44
  temperature=0.3,
45
  do_sample=True
46
  )
47
+ return response[0]["generated_text"].split("Ассистент:")[-1].strip()
48
  except Exception as e:
49
+ return f"⚠️ Ошибка генерации: {str(e)}"
50
 
51
+ # 4. Интерфейс с примерами
52
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
53
+ gr.Markdown("""<h1><center>🎯 Поддержка клиентов</center></h1>""")
54
 
55
  with gr.Row():
56
  with gr.Column():
57
+ input_text = gr.Textbox(label="Опишите проблему", placeholder="Мой заказ не прибыл...")
58
+ output_text = gr.Textbox(label="Ответ поддержки", lines=5)
59
+ btn = gr.Button("Отправить", variant="primary")
60
 
61
  with gr.Column():
62
+ gr.Examples(
63
+ examples=examples,
64
+ inputs=input_text,
65
+ label="Примеры обращений"
66
+ )
67
+ gr.Markdown("""
68
+ **Советы для быстрого решения:**
69
+ 1. Указывайте номер заказа
70
+ 2. Прикладывайте скриншоты ошибок
71
+ 3. Проверяйте спам-папку
72
+ """)
73
 
74
+ btn.click(fn=generate_response, inputs=input_text, outputs=output_text)
75
 
76
  demo.launch()