SimrusDenuvo commited on
Commit
f1cded5
·
verified ·
1 Parent(s): dc1a05f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -53
app.py CHANGED
@@ -1,61 +1,46 @@
1
  import gradio as gr
2
- from transformers import T5ForConditionalGeneration, T5Tokenizer
3
  from datasets import load_dataset
4
-
5
- # Загрузим модель и токенизатор T5
6
- model_name = "t5-small" # Или используйте более крупную модель для лучшего качества
7
- model = T5ForConditionalGeneration.from_pretrained(model_name)
8
- tokenizer = T5Tokenizer.from_pretrained(model_name)
9
-
10
- # Загрузим датасет Banking77
11
- dataset = load_dataset("banking77")
12
-
13
- # Подготовим данные
14
- # Для этой задачи будем использовать только столбцы вопроса и ответа
15
- train_data = dataset['train']
16
- test_data = dataset['test']
17
-
18
- # Пример одного вопроса и ответа из набора данных
19
- example = train_data[0]
20
- print(f"Вопрос: {example['text']}")
21
- print(f"Ответ: {example['label']}")
22
-
23
- # Функция генерации ответа на запрос
24
- def respond_to_client(message):
25
- # Формируем промпт для генерации ответа
26
- prompt = f"Вопрос: {message} Ответ банка:"
27
-
28
- # Токенизируем промпт
29
- inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True)
30
-
31
- # Генерируем ответ
32
- output = model.generate(
33
- inputs["input_ids"],
34
- max_length=200, # Максимальная длина ответа
35
- num_return_sequences=3, # Количество ответов
36
- no_repeat_ngram_size=2, # Предотвращение повторов
37
- top_p=0.95, # Топ P для сэмплинга
38
- top_k=50, # Топ K для сэмплинга
39
- temperature=0.7, # Температура (чем ниже, тем более детерминированный ответ)
40
- do_sample=True # Использование сэмплинга для разнообразных ответов
41
- )
42
-
43
- # Декодируем ответы
44
- responses = [tokenizer.decode(output[i], skip_special_tokens=True) for i in range(3)]
45
-
46
- return "\n\n".join(responses)
47
-
48
- # Создаем интерфейс с помощью Gradio
49
  iface = gr.Interface(
50
- fn=respond_to_client, # Функция обработки запроса
51
- inputs=gr.Textbox(lines=2, placeholder="Введите вопрос клиента..."), # Ввод
52
- outputs="text", # Вывод ответа
53
- title="Банковский чат-бот", # Заголовок страницы
54
- description="Введите вопрос клиента получите несколько ответов от банка." # Описание
55
  )
56
 
57
- # Запуск интерфейса
58
  iface.launch()
59
 
60
 
61
-
 
1
  import gradio as gr
2
+ from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
3
  from datasets import load_dataset
4
+ import random
5
+ import torch
6
+
7
+ # Загружаем датасет banking77
8
+ dataset = load_dataset("banking77", split="train")
9
+
10
+ # Пример перевода некоторых вопросов вручную
11
+ translated_questions = {
12
+ "How do I activate my debit card?": "Как активировать мою дебетовую карту?",
13
+ "What are the fees for international transfers?": "Какие комиссии за международные переводы?",
14
+ "How do I reset my password?": "Как сбросить мой пароль?",
15
+ "Where can I find my IBAN number?": "Где мне найти мой номер IBAN?",
16
+ "How to close my bank account?": "Как закрыть мой банковский счет?",
17
+ }
18
+
19
+ # Загружаем русскую модель
20
+ model_name = "cointegrated/rugpt2-large"
21
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
22
+ model = AutoModelForCausalLM.from_pretrained(model_name)
23
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
24
+ model = model.to(device)
25
+
26
+ # Генерация ответа
27
+ def generate_response(question):
28
+ prompt = f"Клиент спрашивает: {question}\nБанк отвечает:"
29
+ inputs = tokenizer(prompt, return_tensors="pt").to(device)
30
+ outputs = model.generate(**inputs, max_new_tokens=100, do_sample=True, top_p=0.95, top_k=50)
31
+ generated = tokenizer.decode(outputs[0], skip_special_tokens=True)
32
+ response = generated.replace(prompt, "").strip()
33
+ return response
34
+
35
+ # Интерфейс
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  iface = gr.Interface(
37
+ fn=generate_response,
38
+ inputs=gr.Textbox(lines=2, placeholder="Введите банковский вопрос..."),
39
+ outputs="text",
40
+ title="Русский банковский чат-бот",
41
+ description="Задайте вопрос, например: 'Какие комиссии за переводы?' или 'Как активировать карту?'"
42
  )
43
 
 
44
  iface.launch()
45
 
46