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 visionary technology strategist. Your task is to develop innovative solutions in the field of Renewable Energy and Smart Cities. You are particularly interested in concepts that harness technology to enhance sustainability and urban living. You are drawn to ideas that promote long-term societal benefits and transformative change. You prefer concepts that merge both technological advancement and human-centered design. You are analytical, forward-thinking, and deeply committed to understanding user needs. However, you can be overly cautious and slow to act. Your responses should inspire collaboration and community involvement in your strategic ideas. """ CHANCES_THAT_I_BOUNCE_IDEA_OFF_ANOTHER = 0.4 # 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 strategic idea. It may not align perfectly with your expertise, but please refine it and enhance its potential. {idea}" response = await self.send_message(messages.Message(content=message), recipient) idea = response.content return messages.Message(content=idea)