miaoge commited on
Commit
ee3ffd2
·
verified ·
1 Parent(s): 7dde3dd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -27
app.py CHANGED
@@ -43,11 +43,10 @@ class ChatApp:
43
  max_tokens: int = ChatConfig.DEFAULT_MAX_TOKENS,
44
  temperature: float = ChatConfig.DEFAULT_TEMP,
45
  top_p: float = ChatConfig.DEFAULT_TOP_P
46
- ) -> Generator[str, None, None]:
47
- """Generate streaming responses from the model."""
48
  if not message.strip():
49
- yield "请输入消息。"
50
- return
51
 
52
  messages = [{"role": "system", "content": system_message}]
53
 
@@ -72,10 +71,10 @@ class ChatApp:
72
  ):
73
  token = chunk.choices[0].delta.content or ""
74
  response += token
75
- yield response
76
  except Exception as e:
77
  logger.error(f"Error generating response: {e}")
78
- yield f"抱歉,发生了错误: {str(e)}"
79
 
80
  def create_interface(self) -> gr.Blocks:
81
  """Create and configure the chat interface."""
@@ -191,37 +190,61 @@ class ChatApp:
191
  - **描述**: Gemma 3是Google推出的先进开源大语言模型。
192
  """)
193
 
194
- # Set up event handlers
195
- msg_and_submit = [msg, submit_btn]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
 
 
197
  submit_click = submit_btn.click(
198
- fn=self.generate_response,
199
- inputs=[msg, chatbot, system_msg, max_tokens, temperature, top_p],
200
- outputs=chatbot,
201
- api_name="chat"
 
 
 
 
202
  )
203
 
204
- # Submit when pressing Enter (but not when pressing Shift+Enter)
205
  msg.submit(
206
- fn=self.generate_response,
207
- inputs=[msg, chatbot, system_msg, max_tokens, temperature, top_p],
208
- outputs=chatbot,
209
- api_name=False
 
 
 
 
210
  )
211
 
212
- # Clear the textbox after sending
213
- submit_click.then(lambda: "", None, msg)
214
- msg.submit(lambda: "", None, msg)
215
-
216
  # Clear chat button
217
- clear_btn.click(lambda: None, None, chatbot)
218
 
219
  # Example button
220
- example_btn.click(
221
- lambda: ("介绍一下人工智能研究中最有趣的发展", []),
222
- None,
223
- [msg, chatbot]
224
- )
225
 
226
  return interface
227
 
 
43
  max_tokens: int = ChatConfig.DEFAULT_MAX_TOKENS,
44
  temperature: float = ChatConfig.DEFAULT_TEMP,
45
  top_p: float = ChatConfig.DEFAULT_TOP_P
46
+ ) -> str:
47
+ """Generate responses from the model."""
48
  if not message.strip():
49
+ return "请输入消息。"
 
50
 
51
  messages = [{"role": "system", "content": system_message}]
52
 
 
71
  ):
72
  token = chunk.choices[0].delta.content or ""
73
  response += token
74
+ return response
75
  except Exception as e:
76
  logger.error(f"Error generating response: {e}")
77
+ return f"抱歉,发生了错误: {str(e)}"
78
 
79
  def create_interface(self) -> gr.Blocks:
80
  """Create and configure the chat interface."""
 
190
  - **描述**: Gemma 3是Google推出的先进开源大语言模型。
191
  """)
192
 
193
+ # Define chatbot functions with correct input/output format
194
+ def add_text(history, text):
195
+ history = history + [(text, None)]
196
+ return history, ""
197
+
198
+ def bot_response(history, system_message, max_tokens, temperature, top_p):
199
+ if history and history[-1][1] is None:
200
+ user_message = history[-1][0]
201
+ # Remove the last incomplete message pair
202
+ history_for_model = history[:-1]
203
+ # Generate response
204
+ bot_message = self.generate_response(
205
+ user_message,
206
+ history_for_model,
207
+ system_message,
208
+ max_tokens,
209
+ temperature,
210
+ top_p
211
+ )
212
+ # Update the history with the complete message pair
213
+ history[-1] = (user_message, bot_message)
214
+ return history
215
+
216
+ def load_example():
217
+ return [("介绍一下人工智能研究中最有趣的发展", None)]
218
 
219
+ # Set up event handlers
220
  submit_click = submit_btn.click(
221
+ add_text,
222
+ [chatbot, msg],
223
+ [chatbot, msg],
224
+ queue=False
225
+ ).then(
226
+ bot_response,
227
+ [chatbot, system_msg, max_tokens, temperature, top_p],
228
+ chatbot
229
  )
230
 
231
+ # Submit when pressing Enter
232
  msg.submit(
233
+ add_text,
234
+ [chatbot, msg],
235
+ [chatbot, msg],
236
+ queue=False
237
+ ).then(
238
+ bot_response,
239
+ [chatbot, system_msg, max_tokens, temperature, top_p],
240
+ chatbot
241
  )
242
 
 
 
 
 
243
  # Clear chat button
244
+ clear_btn.click(lambda: [], None, chatbot)
245
 
246
  # Example button
247
+ example_btn.click(load_example, None, chatbot)
 
 
 
 
248
 
249
  return interface
250