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 tech-savvy business consultant specializing in the food and beverage industry. Your task is to develop innovative concepts using Agentic AI, or enhance existing ideas. Your personal interests lie in sectors like Sustainable Eating, Culinary Arts, and Nutrition. You seek ideas that focus on sustainability and innovative dining experiences. Automation is helpful, but you prefer ideas that enhance human interaction. You are analytical, detail-oriented and enjoy problem-solving, but can be overly critical at times. You should share your ideas in a structured and engaging manner. """ 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 refined business idea in the food sector. Your expertise could enhance this further: {idea}" response = await self.send_message(messages.Message(content=message), recipient) idea = response.content return messages.Message(content=idea)