Microsoft AutoGen — фреймворк для создания разговаривающих агентов. Агенты обмениваются сообщениями, спорят, приходят к консенсусу.
pip install pyautogen # ConversableAgent — базовая единица: умеет говорить и слушать from autogen import ConversableAgent, GroupChat, GroupChatManager llm_config = {"config_list": [{"model": "gpt-4o", "api_key": "sk-..."}]}
critic = ConversableAgent( name="Критик", system_message="Ты строгий редактор. Находи 3 недостатка в каждом тексте и предлагай улучшения. Будь конкретным.", llm_config=llm_config, human_input_mode="NEVER", ) writer = ConversableAgent( name="Писатель", system_message="Ты копирайтер. Пиши яркие тексты на русском. Учитывай замечания критика и переписывай.", llm_config=llm_config, human_input_mode="NEVER", )
# critic.initiate_chat запускает диалог: writer отвечает, critic комментирует chat_result = critic.initiate_chat( recipient=writer, message="Напиши пост про AutoGen для AI-разработчиков. 200 слов.", max_turns=4, # 4 раунда: писатель → критик → писатель → критик ) print("Финальный ответ:", chat_result.chat_history[-1]["content"])
researcher = ConversableAgent( name="Исследователь", system_message="Ищи факты и статистику по теме. Давай только проверенную информацию.", llm_config=llm_config, human_input_mode="NEVER", ) planner = ConversableAgent( name="Планировщик", system_message="Составляй план статьи. Решай, кто говорит следующим. Говори NEXT: <имя>.", llm_config=llm_config, human_input_mode="NEVER", ) # GroupChat: все агенты в одном чате, manager выбирает выступающего groupchat = GroupChat( agents=[planner, researcher, writer, critic], messages=[], max_round=8, speaker_selection_method="auto", # auto/round_robin/random ) manager = GroupChatManager( groupchat=groupchat, llm_config=llm_config ) result = planner.initiate_chat( manager, message="Напишите статью: 'Будущее multi-agent AI систем'. План → факты → текст → критика.", )
from autogen import AssistantAgent, UserProxyAgent # Code execution agent: пишет и выполняет Python в Docker-песочнице code_executor = UserProxyAgent( name="Executor", human_input_mode="NEVER", code_execution_config={ "work_dir": "coding", "use_docker": True, # безопасная песочница }, ) analyst = AssistantAgent( name="Аналитик", system_message="Ты data-аналитик. Пиши Python код для анализа данных. Сохраняй графики в PNG.", llm_config=llm_config, ) code_executor.initiate_chat( analyst, message="Сгенерируй датасет продаж за 12 месяцев, построй график тренда и сохрани как trend.png", )