Rulga commited on
Commit
44051d3
·
1 Parent(s): 90dc8fa

Refactor chat settings and response handling for improved user experience

Browse files
Files changed (1) hide show
  1. app.py +37 -16
app.py CHANGED
@@ -115,46 +115,67 @@ with gr.Blocks() as demo:
115
  build_kb_btn = gr.Button("Создать/обновить базу знаний", variant="primary")
116
  kb_status = gr.Textbox(label="Статус базы знаний", interactive=False)
117
 
118
- gr.Markdown("### Настройки чата")
119
- system_message = gr.Textbox(
120
- label="Системное сообщение",
121
- value=DEFAULT_SYSTEM_MESSAGE,
122
- lines=5
123
- )
124
  max_tokens = gr.Slider(
125
  minimum=1,
126
  maximum=2048,
127
  value=512,
128
  step=1,
129
- label="Максимальное количество токенов"
 
130
  )
131
  temperature = gr.Slider(
132
  minimum=0.1,
133
  maximum=2.0,
134
  value=0.7,
135
  step=0.1,
136
- label="Температура"
 
137
  )
138
  top_p = gr.Slider(
139
  minimum=0.1,
140
  maximum=1.0,
141
  value=0.95,
142
  step=0.05,
143
- label="Top-p (nucleus sampling)"
 
144
  )
145
 
146
  clear_btn = gr.Button("Очистить историю чата")
147
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  # Обработчики событий
149
  msg.submit(
150
- respond,
151
- [msg, chatbot, conversation_id, system_message, max_tokens, temperature, top_p],
152
- [chatbot, conversation_id]
153
  )
154
  submit_btn.click(
155
- respond,
156
- [msg, chatbot, conversation_id, system_message, max_tokens, temperature, top_p],
157
- [chatbot, conversation_id]
158
  )
159
  build_kb_btn.click(build_kb, None, kb_status)
160
  clear_btn.click(lambda: ([], None), None, [chatbot, conversation_id])
 
115
  build_kb_btn = gr.Button("Создать/обновить базу знаний", variant="primary")
116
  kb_status = gr.Textbox(label="Статус базы знаний", interactive=False)
117
 
118
+ gr.Markdown("### Настройки генерации")
 
 
 
 
 
119
  max_tokens = gr.Slider(
120
  minimum=1,
121
  maximum=2048,
122
  value=512,
123
  step=1,
124
+ label="Максимальная длина ответа",
125
+ info="Ограничивает количество токенов в ответе. Больше токенов = длиннее ответ"
126
  )
127
  temperature = gr.Slider(
128
  minimum=0.1,
129
  maximum=2.0,
130
  value=0.7,
131
  step=0.1,
132
+ label="Температура",
133
+ info="Контролирует креативность. Ниже значение = более предсказуемые ответы"
134
  )
135
  top_p = gr.Slider(
136
  minimum=0.1,
137
  maximum=1.0,
138
  value=0.95,
139
  step=0.05,
140
+ label="Top-p",
141
+ info="Контролирует разнообразие. Ниже значение = более сфокусированные ответы"
142
  )
143
 
144
  clear_btn = gr.Button("Очистить историю чата")
145
+
146
+ def respond_and_clear(
147
+ message,
148
+ history,
149
+ conversation_id,
150
+ max_tokens,
151
+ temperature,
152
+ top_p,
153
+ ):
154
+ # Используем существующую функцию respond
155
+ response_generator = respond(
156
+ message,
157
+ history,
158
+ conversation_id,
159
+ DEFAULT_SYSTEM_MESSAGE,
160
+ max_tokens,
161
+ temperature,
162
+ top_p,
163
+ )
164
+
165
+ # Возвращаем результат и пустую строку для очистки поля ввода
166
+ for response in response_generator:
167
+ yield response[0], response[1], "" # chatbot, conversation_id, пустая строка для msg
168
+
169
  # Обработчики событий
170
  msg.submit(
171
+ respond_and_clear,
172
+ [msg, chatbot, conversation_id, max_tokens, temperature, top_p],
173
+ [chatbot, conversation_id, msg] # Добавляем msg в выходные параметры
174
  )
175
  submit_btn.click(
176
+ respond_and_clear,
177
+ [msg, chatbot, conversation_id, max_tokens, temperature, top_p],
178
+ [chatbot, conversation_id, msg] # Добавляем msg в выходные параметры
179
  )
180
  build_kb_btn.click(build_kb, None, kb_status)
181
  clear_btn.click(lambda: ([], None), None, [chatbot, conversation_id])