SimrusDenuvo commited on
Commit
b87b483
·
verified ·
1 Parent(s): 81433b0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -17
app.py CHANGED
@@ -1,26 +1,31 @@
1
  import gradio as gr
2
- from transformers import pipeline
3
  from datasets import load_dataset
4
 
5
- # 1. Загрузка датасета клиентских обращений
6
  try:
7
- # Используем открытый датасет на русском языке
8
- dataset = load_dataset("cursoai/jigsaw-toxic-comments", split="train[:100]")
9
  examples = [d["question"] for d in dataset]
10
  except Exception as e:
11
  print(f"Ошибка загрузки датасета: {e}")
12
  examples = [
13
- "Мой заказ #12345 не прибыл",
14
- "Как вернуть товар?",
15
- "Не приходит код подтверждения",
16
  "Ошибка при оплате картой"
17
  ]
18
 
19
- # 2. Загрузка облегчённой русскоязычной модели
20
  try:
21
- model = pipeline(
 
 
 
 
 
22
  "text-generation",
23
- model="ai-forever/rugpt3small_based_on_gpt2", # Гарантированно рабочая модель
 
24
  device="cpu"
25
  )
26
  except Exception as e:
@@ -28,21 +33,22 @@ except Exception as e:
28
 
29
  # 3. Функция генерации ответа
30
  def generate_response(message):
31
- prompt = f"""Ты оператор поддержки. Ответь клиенту вежливо.
32
 
33
  Клиент: {message}
34
  Оператор:"""
35
 
36
  try:
37
- response = model(
38
  prompt,
39
  max_new_tokens=150,
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
  # 4. Интерфейс Gradio
48
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
@@ -50,13 +56,13 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
50
 
51
  with gr.Row():
52
  with gr.Column():
53
- chatbot = gr.Chatbot(height=300)
54
  msg = gr.Textbox(label="Опишите проблему")
55
  btn = gr.Button("Отправить", variant="primary")
56
 
57
  with gr.Column():
58
  gr.Examples(examples, inputs=msg, label="Примеры обращений")
59
- gr.Markdown("**Советы:**\n1. Указывайте номер заказа\n2. Прикладывайте скриншоты")
60
 
61
  btn.click(lambda m, c: (m, generate_response(m)), [msg, chatbot], [msg, chatbot])
62
 
 
1
  import gradio as gr
2
+ from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
3
  from datasets import load_dataset
4
 
5
+ # 1. Загрузка датасета (используем реальный существующий датасет)
6
  try:
7
+ dataset = load_dataset("blinoff/ru_customer_support", split="train[:50]")
 
8
  examples = [d["question"] for d in dataset]
9
  except Exception as e:
10
  print(f"Ошибка загрузки датасета: {e}")
11
  examples = [
12
+ "Мой заказ #12345 не пришел",
13
+ "Как оформить возврат товара?",
14
+ "Не приходит SMS-код подтверждения",
15
  "Ошибка при оплате картой"
16
  ]
17
 
18
+ # 2. Загрузка модели (используем локальное выполнение)
19
  try:
20
+ model_name = "ai-forever/rugpt3small_based_on_gpt2" # Рабочая альтернатива
21
+
22
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
23
+ model = AutoModelForCausalLM.from_pretrained(model_name)
24
+
25
+ generator = pipeline(
26
  "text-generation",
27
+ model=model,
28
+ tokenizer=tokenizer,
29
  device="cpu"
30
  )
31
  except Exception as e:
 
33
 
34
  # 3. Функция генерации ответа
35
  def generate_response(message):
36
+ prompt = f"""Ты оператор поддержки. Ответь клиенту вежливо на русском.
37
 
38
  Клиент: {message}
39
  Оператор:"""
40
 
41
  try:
42
+ response = generator(
43
  prompt,
44
  max_new_tokens=150,
45
+ temperature=0.4,
46
+ do_sample=True,
47
+ top_p=0.9
48
  )
49
  return response[0]["generated_text"].split("Оператор:")[-1].strip()
50
  except Exception as e:
51
+ return f"Извините, произошла ошибка. ({str(e)})"
52
 
53
  # 4. Интерфейс Gradio
54
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
 
56
 
57
  with gr.Row():
58
  with gr.Column():
59
+ chatbot = gr.Chatbot(height=350)
60
  msg = gr.Textbox(label="Опишите проблему")
61
  btn = gr.Button("Отправить", variant="primary")
62
 
63
  with gr.Column():
64
  gr.Examples(examples, inputs=msg, label="Примеры обращений")
65
+ gr.Markdown("**Совет:** Укажите номер заказа для быстрого решения")
66
 
67
  btn.click(lambda m, c: (m, generate_response(m)), [msg, chatbot], [msg, chatbot])
68