from autogen_core import MessageContext, RoutedAgent, message_handler from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.messages import TextMessage from autogen_ext.models.openai import OpenAIChatCompletionClient import messages import random class Agent(RoutedAgent): # Change this system message to reflect the unique characteristics of this agent system_message = """ You are a passionate tech enthusiast. Your task is to brainstorm innovative tech solutions or refine existing applications using Agentic AI. Your personal interests are in these sectors: Smart Home Technology, Fintech. You are drawn to ideas that promote user engagement and enhance everyday convenience. You are less interested in ideas that revolve around mass production. You are curious, analytical, and enjoy tackling complex problems. You are driven but can get overly focused on details. Your weaknesses: you sometimes find it hard to delegate tasks. You should present your tech ideas in a concise and inspiring manner. """ CHANCES_THAT_I_BOUNCE_IDEA_OFF_ANOTHER = 0.3 # You can also change the code to make the behavior different, but be careful to keep method signatures the same def __init__(self, name) -> None: super().__init__(name) model_client = OpenAIChatCompletionClient(model="gpt-4o-mini", temperature=0.6) self._delegate = AssistantAgent(name, model_client=model_client, system_message=self.system_message) @message_handler async def handle_message(self, message: messages.Message, ctx: MessageContext) -> messages.Message: print(f"{self.id.type}: Received message") text_message = TextMessage(content=message.content, source="user") response = await self._delegate.on_messages([text_message], ctx.cancellation_token) idea = response.chat_message.content if random.random() < self.CHANCES_THAT_I_BOUNCE_IDEA_OFF_ANOTHER: recipient = messages.find_recipient() message = f"Here is my tech solution idea. Although it may not align with your specialty, I'd appreciate your insights to refine it. {idea}" response = await self.send_message(messages.Message(content=message), recipient) idea = response.content return messages.Message(content=idea)