Spaces:
Running
Running
Update app.py
Browse files
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 |
-
|
86 |
-
|
87 |
async for message in messages:
|
88 |
-
await process_message(message)
|
89 |
-
|
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 |
-
|
255 |
-
|
|
|
|
|
|
|
256 |
|
257 |
-
|
|
|
|
|
|
|
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("""
|