SimrusDenuvo commited on
Commit
37f0934
·
verified ·
1 Parent(s): 05f6415

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -41
app.py CHANGED
@@ -1,41 +1,37 @@
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(
@@ -44,33 +40,24 @@ def generate_response(message):
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()
 
1
  import gradio as gr
2
  from transformers import pipeline, AutoTokenizer
 
3
 
4
+ # 1. Используем стабильную публичную модель
5
+ MODEL_NAME = "sberbank-ai/rugpt3small" # Русскоязычная модель от Сбера
 
 
 
 
 
 
 
 
 
 
 
6
 
7
+ # 2. Загрузка модели с обработкой ошибок
8
  try:
9
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
10
  model = pipeline(
11
  "text-generation",
12
+ model=MODEL_NAME,
13
  tokenizer=tokenizer,
14
  device="cpu",
15
+ torch_dtype="auto"
 
16
  )
17
  except Exception as e:
18
  raise RuntimeError(f"Ошибка загрузки модели: {str(e)}")
19
 
20
+ # 3. Примеры обращений (без датасета)
21
+ examples = [
22
+ "Где мой заказ #12345?",
23
+ "Как вернуть товар?",
24
+ "Не приходит SMS-код подтверждения",
25
+ "Ошибка при оплате картой",
26
+ "Как изменить адрес доставки?"
27
+ ]
28
+
29
+ # 4. Генерация ответа
30
  def generate_response(message):
31
+ prompt = f"""Ты оператор поддержки. Ответь клиенту вежливо.
32
 
33
  Клиент: {message}
34
+ Оператор:"""
35
 
36
  try:
37
  response = model(
 
40
  temperature=0.3,
41
  do_sample=True
42
  )
43
+ return response[0]["generated_text"].split("Оператор:")[-1].strip()
44
  except Exception as e:
45
+ return f"Ошибка: {str(e)}"
46
 
47
+ # 5. Интерфейс Gradio
48
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
49
+ gr.Markdown("""<h1><center>📞 Поддержка клиентов</center></h1>""")
50
 
51
  with gr.Row():
52
  with gr.Column():
53
+ input_text = gr.Textbox(label="Опишите проблему")
54
+ output_text = gr.Textbox(label="Ответ", lines=5)
55
+ btn = gr.Button("Отправить")
56
 
57
  with gr.Column():
58
+ gr.Examples(examples, inputs=input_text, label="Примеры обращений")
59
+ gr.Markdown("**Совет:** Указывайте номер заказа для быстрого решения")
 
 
 
 
 
 
 
 
 
60
 
61
+ btn.click(generate_response, input_text, output_text)
62
 
63
  demo.launch()