SimrusDenuvo commited on
Commit
f6ce1e5
·
verified ·
1 Parent(s): 1795640

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -14
app.py CHANGED
@@ -1,24 +1,57 @@
1
  import gradio as gr
2
- from transformers import pipeline
 
3
 
4
- # Загрузим модель (например, Falcon-7B)
5
- chatbot = pipeline("text-generation", model="tiiuae/falcon-7b-instruct", device=0)
 
 
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  def respond_to_client(message):
8
- # Формируем промпт с контекстом
9
- prompt = f"Клиент спрашивает: {message} Ответ:"
10
- # Генерация ответа
11
- response = chatbot(prompt, max_new_tokens=100, do_sample=True, temperature=0.7, top_p=0.9)
12
- # Возвращаем сгенерированный ответ
13
- return response[0]['generated_text'].replace(prompt, "").strip()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
  # Создаем интерфейс с помощью Gradio
16
  iface = gr.Interface(
17
- fn=respond_to_client,
18
- inputs=gr.Textbox(lines=2, placeholder="Введите вопрос клиента..."),
19
- outputs="text",
20
- title="Банковский чат-бот",
21
- description="Введите вопрос клиента — получите ответ банка от модели."
22
  )
23
 
24
  # Запуск интерфейса
 
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
  # Запуск интерфейса