mechtnet commited on
Commit
8ee0504
·
verified ·
1 Parent(s): 441bfbe

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -44
app.py CHANGED
@@ -1,25 +1,31 @@
1
- import streamlit as st
2
  from transformers import pipeline, AutoTokenizer
3
  import torch
4
 
5
  # Функция для загрузки текста из файла
6
- def load_text_from_file(uploaded_file):
7
- text = uploaded_file.read().decode("utf-8")
 
8
  return text
9
 
10
  # Функция для генерации ответа на основе промта и текста
11
- def generate_response(prompt, text, model, tokenizer):
12
  # Объединяем текст и промт
13
  full_prompt = f"{text}\n\n{prompt}"
14
 
15
- # Генерация текста
 
 
 
 
16
  generator = pipeline(
17
  'text-generation',
18
- model=model,
19
  tokenizer=tokenizer,
20
  device=0 if torch.cuda.is_available() else -1
21
  )
22
 
 
23
  output = generator(
24
  full_prompt,
25
  max_new_tokens=100, # Увеличим количество токенов для более длинного ответа
@@ -42,45 +48,41 @@ def generate_response(prompt, text, model, tokenizer):
42
 
43
  return response
44
 
45
- # Основная функция
46
- def main():
47
- st.title("Анализ текста с помощью GPT")
 
48
 
49
- # Загрузка текстового файла
50
- st.sidebar.header("Загрузите текстовый файл")
51
- uploaded_file = st.sidebar.file_uploader("Выберите .txt файл", type="txt")
52
 
53
- if uploaded_file is not None:
54
- # Загружаем текст из файла
55
- text = load_text_from_file(uploaded_file)
56
- st.sidebar.success("Файл успешно загружен!")
57
-
58
- # Показываем загруженный текст
59
- st.subheader("Загруженный текст:")
60
- st.text_area("Текст", text, height=300)
61
-
62
- # Ввод промта
63
- st.subheader("Введите промт:")
64
- prompt = st.text_area("Промт", height=100)
65
-
66
- # Кнопка для генерации ответа
67
- if st.button("Сгенерировать ответ"):
68
- if prompt.strip() == "":
69
- st.warning("Пожалуйста, введите промт.")
70
- else:
71
- # Загружаем модель и токенизатор
72
- model_name = "ai-forever/rugpt3small_based_on_gpt2"
73
- tokenizer = AutoTokenizer.from_pretrained(model_name)
74
-
75
- # Генерация ответа
76
- with st.spinner("Генерация ответа..."):
77
- response = generate_response(prompt, text, model_name, tokenizer)
78
-
79
- # Показываем ответ
80
- st.subheader("Ответ модели:")
81
- st.text_area("Ответ", response, height=300)
82
- else:
83
- st.sidebar.warning("Пожалуйста, загрузите текстовый файл.")
84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  if __name__ == "__main__":
86
- main()
 
 
 
 
 
1
+ import gradio as gr
2
  from transformers import pipeline, AutoTokenizer
3
  import torch
4
 
5
  # Функция для загрузки текста из файла
6
+ def load_text_from_file(file):
7
+ with open(file.name, "r", encoding="utf-8") as f:
8
+ text = f.read()
9
  return text
10
 
11
  # Функция для генерации ответа на основе промта и текста
12
+ def generate_response(prompt, text):
13
  # Объединяем текст и промт
14
  full_prompt = f"{text}\n\n{prompt}"
15
 
16
+ # Загружаем модель и токенизатор
17
+ model_name = "ai-forever/rugpt3small_based_on_gpt2"
18
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
19
+
20
+ # Инициализируем пайплайн для генерации текста
21
  generator = pipeline(
22
  'text-generation',
23
+ model=model_name,
24
  tokenizer=tokenizer,
25
  device=0 if torch.cuda.is_available() else -1
26
  )
27
 
28
+ # Генерация текста
29
  output = generator(
30
  full_prompt,
31
  max_new_tokens=100, # Увеличим количество токенов для более длинного ответа
 
48
 
49
  return response
50
 
51
+ # Функция для обработки ввода и вывода
52
+ def process_input(file, prompt):
53
+ # Загружаем текст из файла
54
+ text = load_text_from_file(file)
55
 
56
+ # Генерация ответа
57
+ response = generate_response(prompt, text)
 
58
 
59
+ return response
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
+ # Создаем интерфейс Gradio
62
+ def create_interface():
63
+ # Описание интерфейса
64
+ description = """
65
+ Загрузите текстовый файл (.txt) и введите промт. Модель GPT на основе загруженного текста сгенерирует ответ.
66
+ """
67
+
68
+ # Создаем интерфейс
69
+ interface = gr.Interface(
70
+ fn=process_input, # Функция для обработки ввода
71
+ inputs=[
72
+ gr.File(label="Загрузите текстовый файл (.txt)"), # Поле для загрузки файла
73
+ gr.Textbox(label="Введите промт", lines=3) # Поле для ввода промта
74
+ ],
75
+ outputs=gr.Textbox(label="Ответ модели", lines=10), # Поле для вывода ответа
76
+ title="Анализ текста с помощью GPT",
77
+ description=description
78
+ )
79
+
80
+ return interface
81
+
82
+ # Запуск приложения
83
  if __name__ == "__main__":
84
+ # Создаем интерфейс
85
+ interface = create_interface()
86
+
87
+ # Запускаем Gradio
88
+ interface.launch()