Spaces:
Running
Running
File size: 2,785 Bytes
18fa02f f6ce1e5 a46e090 f6ce1e5 a46e090 f6ce1e5 a46e090 f6ce1e5 a46e090 7720707 a46e090 f6ce1e5 18fa02f 7720707 a46e090 18fa02f 7720707 1795640 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
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()
|