DrishtiSharma commited on
Commit
528b1be
Β·
verified Β·
1 Parent(s): 797cd5c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -11
app.py CHANGED
@@ -77,19 +77,20 @@ async def stream_or_async_response(messages: Union[Iterable[ResponseChunk], Asyn
77
  cols = st.columns(len(outputs))
78
  for i, output in enumerate(outputs):
79
  with cols[i]:
80
- st.expander(label=f"Agent {i+1}", expanded=False).write(output)
81
 
82
  layer_outputs.clear()
83
  yield message['delta']
84
 
85
- if isinstance(messages, AsyncIterable):
86
- # Process asynchronous messages
87
  async for message in messages:
88
- await process_message(message)
89
- else:
90
- # Process synchronous messages
91
  for message in messages:
92
- await process_message(message)
 
 
93
 
94
  # Set up the MOAgent
95
  def set_moa_agent(
@@ -242,23 +243,33 @@ for message in st.session_state.messages:
242
 
243
  if query := st.chat_input("Ask a question"):
244
  async def handle_query():
 
245
  st.session_state.messages.append({"role": "user", "content": query})
246
  with st.chat_message("user"):
247
  st.write(query)
248
 
 
249
  moa_agent: MOAgent = st.session_state.moa_agent
250
 
251
  with st.chat_message("assistant"):
252
  message_placeholder = st.empty()
 
 
253
  messages = moa_agent.chat(query, output_format='json')
254
- async for response in stream_or_async_response(messages):
255
- message_placeholder.markdown(response)
 
 
 
256
 
257
- st.session_state.messages.append({"role": "assistant", "content": response})
 
 
 
258
 
 
259
  asyncio.run(handle_query())
260
 
261
-
262
  # Add acknowledgment at the bottom
263
  st.markdown("---")
264
  st.markdown("""
 
77
  cols = st.columns(len(outputs))
78
  for i, output in enumerate(outputs):
79
  with cols[i]:
80
+ st.expander(label=f"Agent {i + 1}", expanded=False).write(output)
81
 
82
  layer_outputs.clear()
83
  yield message['delta']
84
 
85
+ # Distinguish between async and sync iterables
86
+ if hasattr(messages, "__aiter__"): # Asynchronous iterable
87
  async for message in messages:
88
+ yield await process_message(message)
89
+ elif hasattr(messages, "__iter__"): # Synchronous iterable
 
90
  for message in messages:
91
+ yield await process_message(message)
92
+ else:
93
+ raise TypeError("'messages' must be an Iterable or AsyncIterable.")
94
 
95
  # Set up the MOAgent
96
  def set_moa_agent(
 
243
 
244
  if query := st.chat_input("Ask a question"):
245
  async def handle_query():
246
+ # Append the user's message to the session state
247
  st.session_state.messages.append({"role": "user", "content": query})
248
  with st.chat_message("user"):
249
  st.write(query)
250
 
251
+ # Access the MOAgent instance
252
  moa_agent: MOAgent = st.session_state.moa_agent
253
 
254
  with st.chat_message("assistant"):
255
  message_placeholder = st.empty()
256
+
257
+ # Get messages from MOAgent (supports async streaming)
258
  messages = moa_agent.chat(query, output_format='json')
259
+
260
+ try:
261
+ # Process each response chunk
262
+ async for response in stream_or_async_response(messages):
263
+ message_placeholder.markdown(response)
264
 
265
+ # Save the final response to session state
266
+ st.session_state.messages.append({"role": "assistant", "content": response})
267
+ except Exception as e:
268
+ st.error(f"Error processing response: {e}")
269
 
270
+ # Run the asynchronous handle_query function
271
  asyncio.run(handle_query())
272
 
 
273
  # Add acknowledgment at the bottom
274
  st.markdown("---")
275
  st.markdown("""