ZOOLIK commited on
Commit
a023d1a
·
verified ·
1 Parent(s): 4c9691d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +75 -0
app.py ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 1. Импорт необходимых библиотек
2
+ import gradio as gr
3
+ from transformers import pipeline
4
+
5
+ # 2. Загрузка двух нейросетей
6
+ # ИСПОЛЬЗУЕМ БОЛЕЕ МАЛЕНЬКИЕ МОДЕЛИ
7
+ generator = pipeline("text2text-generation", model="google/flan-t5-small")
8
+ translator = pipeline("translation", model="Helsinki-NLP/opus-mt-ru-en")
9
+
10
+ # 3. Создание функции для генерации ответа
11
+ def generate_response(prompt, language, temperature, max_length, history):
12
+ """
13
+ Эта функция принимает твой текст, переводит его, получает ответ и возвращает обновлённую историю.
14
+ """
15
+ # Так как модель "opus-mt-ru-en" работает только с русским и английским,
16
+ # мы будем использовать только эти языки.
17
+ source_lang_code = "ru" if language == "ru" else "en"
18
+ target_lang_code = "ru" if language == "ru" else "en"
19
+
20
+ # Перевод на английский
21
+ english_prompt = translator(prompt, src_lang=source_lang_code, tgt_lang="en")[0]['translation_text']
22
+
23
+ # Получаем ответ от Flan-T5 на английском
24
+ response_en = generator(
25
+ english_prompt,
26
+ max_length=max_length,
27
+ num_return_sequences=1,
28
+ do_sample=True,
29
+ temperature=temperature,
30
+ no_repeat_ngram_size=2
31
+ )[0]['generated_text']
32
+
33
+ # Перевод ответа обратно на твой язык
34
+ final_response = translator(response_en, src_lang="en", tgt_lang=target_lang_code)[0]['translation_text']
35
+
36
+ # Добавляем в историю твой вопрос и ответ бота
37
+ history.append([prompt, final_response])
38
+
39
+ return history
40
+
41
+ # 4. Создание веб-интерфейса
42
+ with gr.Blocks(theme="soft", title="COLIN") as iface:
43
+ gr.Markdown("<h1>COLIN</h1>")
44
+ gr.Markdown("<h3>Ask questions in English or Russian.</h3>")
45
+
46
+ with gr.Row():
47
+ language_dropdown = gr.Dropdown(
48
+ ["en", "ru"], # Убрали другие языки
49
+ value="en",
50
+ label="Select Language"
51
+ )
52
+
53
+ chatbot = gr.Chatbot(label="Chat")
54
+ textbox = gr.Textbox(placeholder="Enter your message here...")
55
+
56
+ with gr.Row():
57
+ gr.Markdown("<h3>Настройки ответа</h3>")
58
+ temperature_slider = gr.Slider(minimum=0.1, maximum=1.0, step=0.1, value=0.7, label="Temperature (Креативность)")
59
+ max_length_slider = gr.Slider(minimum=10, maximum=100, step=10, value=50, label="Max Length (Длина ответа)")
60
+
61
+ with gr.Row():
62
+ clear_btn = gr.Button("New Chat")
63
+ submit_btn = gr.Button("Submit")
64
+
65
+ # Привязка кнопок к функциям
66
+ submit_btn.click(
67
+ fn=generate_response,
68
+ inputs=[textbox, language_dropdown, temperature_slider, max_length_slider, chatbot],
69
+ outputs=[chatbot]
70
+ )
71
+ clear_btn.click(
72
+ fn=lambda: [],
73
+ inputs=[],
74
+ outputs=[chatbot]
75
+ )