Spaces:
Running
Running
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() | |