Autogen_v0.4/multi_agent/agent_final_response_gatherer.py (24 lines of code) (raw):

import asyncio from multi_agent_message_types import * llm_results_dict = {} condition = asyncio.Condition() async def notify_result(message, llm_response): global llm_results_dict global condition async with condition: llm_results_dict[message.conversation_id] = FinalResult(body=AssistantMessage(content=llm_response, source="final_response"), conversation_id=message.conversation_id) condition.notify_all() async def get_final_response(conversation_id): group_chat_result = "" try: # Wait for a message in the queue, or you can use a timeout if needed #group_chat_result = (await queue.get()).body.content # clear queue async with condition: while conversation_id not in llm_results_dict: await condition.wait() group_chat_result = llm_results_dict[conversation_id].body.content del llm_results_dict[conversation_id] print(f"conversation_id: {conversation_id}") print("\033[35m" + "-" * 20 + "\033[0m") except Exception as e: # Handle any exception that may occur during the wait for the response print(f"Error retrieving message from queue: {e}") group_chat_result = "An error occurred while waiting for the response." return group_chat_result