FrostIce commited on
Commit
a2e1896
·
verified ·
1 Parent(s): d80a46f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +149 -0
app.py ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import random
3
+ import g4f
4
+
5
+ # Список доступных моделей (для примера)
6
+ AVAILABLE_MODELS = [
7
+ "gpt-3.5-turbo",
8
+ "gpt-4",
9
+ "claude-3-opus",
10
+ "llama-2-70b",
11
+ "mixtral-8x7b"
12
+ ]
13
+
14
+
15
+ def generate_with_model(model_name, prompt):
16
+ try:
17
+ response = g4f.ChatCompletion.create(
18
+ model=model_name,
19
+ messages=[{"role": "user", "content": prompt}],
20
+ )
21
+ return response
22
+ except Exception as e:
23
+ return f"Ошибка генерации: {str(e)}"
24
+ def generate_response(prompt, selected_model):
25
+ """Генерация ответа выбранной моделью"""
26
+ if not prompt:
27
+ return "Введите запрос для генерации"
28
+
29
+ # Здесь будет реальная интеграция с g4f
30
+ # response = g4f.ChatCompletion.create(
31
+ # model=selected_model,
32
+ # messages=[{"role": "user", "content": prompt}]
33
+ # )
34
+
35
+ # Заглушка для демонстрации
36
+ response = generate_with_model(selected_model, prompt)
37
+ return response
38
+
39
+ def clear_all():
40
+ """Очистка всех полей"""
41
+ return "", "", "", ""
42
+
43
+ def random_generate(prompt):
44
+ """Генерация случайной моделью"""
45
+ random_model = random.choice(AVAILABLE_MODELS)
46
+ response = generate_with_model(random_model, prompt)
47
+ return random_model, response, response, ""
48
+
49
+ def vote_for_best(response1, response2, vote):
50
+ """Оценка лучшего ответа"""
51
+ if not vote:
52
+ return "Пожалуйста, выберите какой ответ лучше"
53
+ return f"Спасибо за оценку! Вы выбрали: {vote}"
54
+
55
+ with gr.Blocks(theme=gr.themes.Soft()) as demo:
56
+ gr.Markdown("# 🧠 Сравнение языковых моделей")
57
+ gr.Markdown("Тестируйте разные модели и оценивайте качество ответов!")
58
+
59
+ with gr.Row():
60
+ with gr.Column(scale=1):
61
+ model_selector = gr.Dropdown(
62
+ choices=AVAILABLE_MODELS,
63
+ label="Выберите модель для генерации",
64
+ value=AVAILABLE_MODELS[0]
65
+ )
66
+ prompt_input = gr.Textbox(
67
+ label="Введите ваш запрос",
68
+ placeholder="Напишите здесь ваш вопрос или промпт...",
69
+ lines=3
70
+ )
71
+
72
+ with gr.Row():
73
+ clear_btn = gr.Button("🧹 Очистить", variant="secondary")
74
+ skip_btn = gr.Button("⏭️ Пропустить", variant="secondary")
75
+ random_btn = gr.Button("🎲 Случайная модель", variant="primary")
76
+ generate_btn = gr.Button("🚀 Сгенерировать", variant="primary")
77
+
78
+ with gr.Column(scale=2):
79
+ response_output = gr.Textbox(
80
+ label="Сгенерированный ответ",
81
+ interactive=False,
82
+ lines=6
83
+ )
84
+
85
+ with gr.Row():
86
+ response1_eval = gr.Textbox(
87
+ label="Ответ для оценки 1",
88
+ interactive=False,
89
+ lines=3
90
+ )
91
+ response2_eval = gr.Textbox(
92
+ label="Ответ для оценки 2",
93
+ interactive=False,
94
+ lines=3
95
+ )
96
+
97
+ vote_radio = gr.Radio(
98
+ choices=["Ответ 1 лучше", "Ответ 2 лучше", "Оба хороши", "Оба плохи"],
99
+ label="Какой ответ лучше?",
100
+ interactive=True
101
+ )
102
+
103
+ vote_btn = gr.Button("📊 Оценить ответы", variant="primary")
104
+ vote_result = gr.Textbox(
105
+ label="Результат оценки",
106
+ interactive=False
107
+ )
108
+
109
+ # Обработчики событий
110
+ generate_btn.click(
111
+ fn=generate_response,
112
+ inputs=[prompt_input, model_selector],
113
+ outputs=response_output
114
+ )
115
+
116
+ clear_btn.click(
117
+ fn=clear_all,
118
+ outputs=[prompt_input, response_output, response1_eval, response2_eval]
119
+ )
120
+
121
+ random_btn.click(
122
+ fn=random_generate,
123
+ inputs=[prompt_input],
124
+ outputs=[model_selector, response_output, response1_eval, response2_eval]
125
+ )
126
+
127
+ skip_btn.click(
128
+ lambda: [gr.skip(), gr.skip()],
129
+ outputs=[response1_eval, response2_eval]
130
+ )
131
+
132
+ vote_btn.click(
133
+ fn=vote_for_best,
134
+ inputs=[response1_eval, response2_eval, vote_radio],
135
+ outputs=vote_result
136
+ )
137
+
138
+ # Инструкция
139
+ gr.Markdown("""
140
+ ## Как использовать:
141
+ 1. Выберите модель и�� списка или используйте случайную
142
+ 2. Введите ваш запрос
143
+ 3. Нажмите "Сгенерировать" для получения ответа
144
+ 4. Сравните два ответа и оцените какой лучше
145
+ 5. Ваши оценки помогут улучшить систему!
146
+ """)
147
+
148
+ # Для запуска на Hugging Face Spaces
149
+ demo.launch(share=True)