chat / app.py
SimrusDenuvo's picture
Update app.py
f6ce1e5 verified
raw
history blame
2.79 kB
import gradio as gr
from transformers import T5ForConditionalGeneration, T5Tokenizer
from datasets import load_dataset
# Загрузим модель и токенизатор T5
model_name = "t5-small" # Или используйте более крупную модель для лучшего качества
model = T5ForConditionalGeneration.from_pretrained(model_name)
tokenizer = T5Tokenizer.from_pretrained(model_name)
# Загрузим датасет Banking77
dataset = load_dataset("banking77")
# Подготовим данные
# Для этой задачи будем использовать только столбцы вопроса и ответа
train_data = dataset['train']
test_data = dataset['test']
# Пример одного вопроса и ответа из набора данных
example = train_data[0]
print(f"Вопрос: {example['text']}")
print(f"Ответ: {example['label']}")
# Функция генерации ответа на запрос
def respond_to_client(message):
# Формируем промпт для генерации ответа
prompt = f"Вопрос: {message} Ответ банка:"
# Токенизируем промпт
inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True)
# Генерируем ответ
output = model.generate(
inputs["input_ids"],
max_length=200, # Максимальная длина ответа
num_return_sequences=3, # Количество ответов
no_repeat_ngram_size=2, # Предотвращение повторов
top_p=0.95, # Топ P для сэмплинга
top_k=50, # Топ K для сэмплинга
temperature=0.7, # Температура (чем ниже, тем более детерминированный ответ)
do_sample=True # Использование сэмплинга для разнообразных ответов
)
# Декодируем ответы
responses = [tokenizer.decode(output[i], skip_special_tokens=True) for i in range(3)]
return "\n\n".join(responses)
# Создаем интерфейс с помощью Gradio
iface = gr.Interface(
fn=respond_to_client, # Функция обработки запроса
inputs=gr.Textbox(lines=2, placeholder="Введите вопрос клиента..."), # Ввод
outputs="text", # Вывод ответа
title="Банковский чат-бот", # Заголовок страницы
description="Введите вопрос клиента — получите несколько ответов от банка." # Описание
)
# Запуск интерфейса
iface.launch()