Autogen setup
class CustomProxyAgent(UserProxyAgent):
def generate_init_message(self, **context) -> str | Dict:
return json.dumps(
{
"role": "user",
"content": context["message"],
"user_id": context["user_id"],
}
)
math_assistant = AssistantAgent(
...
)
general_assistant = AssistantAgent(
...
)
user_proxy = CustomProxyAgent(
"user_proxy",
human_input_mode="NEVER",
code_execution_config=False,
default_auto_reply=None,
)
group_chat = GroupChat(
agents=[math_assistant, user_proxy, general_assistant],
messages=[],
)
referee = GroupChatManager(name="referee", groupchat=group_chat, llm_config=llm_config)
def handle_messages(recipient, messages, sender, config):
connection_manager = get_connection_manager()
json_message = json.loads(messages[-1].get("content"))
if "callback" in config and config["callback"] is not None:
callback = config["callback"]
callback(recipient, messages[-1], sender)
connection_manager.user_messages[json_message.get("user_id")].append(
messages[-1].get("content")
)
return False, None
referee.register_reply(
[Agent, None],
reply_func=handle_messages,
config={"callback": None},
)
user_proxy.register_reply(
[Agent, None],
reply_func=handle_messages,
config={"callback": None},
)
math_assistant.register_reply(
[Agent, None],
reply_func=handle_messages,
config={"callback": None},
)
# IM THE ENTRYPOINT
async def test_response_from_autogen(user_id: str, message: str):
logger.info(f"Starting chat for user {user_id}")
await user_proxy.a_initiate_chat(referee, message=message, user_id=user_id)