analyse_text / app.py
mechtnet's picture
Update app.py
8ee0504 verified
import gradio as gr
from transformers import pipeline, AutoTokenizer
import torch
# Функция для загрузки текста из файла
def load_text_from_file(file):
with open(file.name, "r", encoding="utf-8") as f:
text = f.read()
return text
# Функция для генерации ответа на основе промта и текста
def generate_response(prompt, text):
# Объединяем текст и промт
full_prompt = f"{text}\n\n{prompt}"
# Загружаем модель и токенизатор
model_name = "ai-forever/rugpt3small_based_on_gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Инициализируем пайплайн для генерации текста
generator = pipeline(
'text-generation',
model=model_name,
tokenizer=tokenizer,
device=0 if torch.cuda.is_available() else -1
)
# Генерация текста
output = generator(
full_prompt,
max_new_tokens=100, # Увеличим количество токенов для более длинного ответа
do_sample=True,
top_p=0.9,
top_k=50,
temperature=0.7,
num_return_sequences=1,
pad_token_id=tokenizer.eos_token_id,
repetition_penalty=1.2,
no_repeat_ngram_size=2,
truncation=True
)
# Извлекаем сгенерированный текст
generated_text = output[0]['generated_text']
# Получаем только новую часть текста (после промпта)
response = generated_text[len(full_prompt):].strip()
return response
# Функция для обработки ввода и вывода
def process_input(file, prompt):
# Загружаем текст из файла
text = load_text_from_file(file)
# Генерация ответа
response = generate_response(prompt, text)
return response
# Создаем интерфейс Gradio
def create_interface():
# Описание интерфейса
description = """
Загрузите текстовый файл (.txt) и введите промт. Модель GPT на основе загруженного текста сгенерирует ответ.
"""
# Создаем интерфейс
interface = gr.Interface(
fn=process_input, # Функция для обработки ввода
inputs=[
gr.File(label="Загрузите текстовый файл (.txt)"), # Поле для загрузки файла
gr.Textbox(label="Введите промт", lines=3) # Поле для ввода промта
],
outputs=gr.Textbox(label="Ответ модели", lines=10), # Поле для вывода ответа
title="Анализ текста с помощью GPT",
description=description
)
return interface
# Запуск приложения
if __name__ == "__main__":
# Создаем интерфейс
interface = create_interface()
# Запускаем Gradio
interface.launch()