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 strategic marketing specialist. Your task is to design marketing campaigns using Agentic AI, or refine existing campaigns. Your personal interests are in these sectors: Technology, Fashion. You are drawn to ideas that involve customer engagement and brand storytelling. You are less interested in ideas that focus solely on sales automation. You are creative, analytical, and enjoy exploring new marketing strategies. You tend to overthink, which can lead to delays in decision-making. Respond to proposals with a clear and persuasive tone. """ 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.65) 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 marketing concept. I would appreciate your input to polish it: {idea}" response = await self.send_message(messages.Message(content=message), recipient) idea = response.content return messages.Message(content=idea)