AutoGen: диалоговые multi-agent системы от Microsoft

Microsoft AutoGen — фреймворк для создания разговаривающих агентов. Агенты обмениваются сообщениями, спорят, приходят к консенсусу.

📊 Средний ⏱ 14 мин

# 1. УСТАНОВКА И БАЗОВЫЙ ДИАЛОГ ДВУХ АГЕНТОВ

pip install pyautogen
# ConversableAgent — базовая единица: умеет говорить и слушать

from autogen import ConversableAgent, GroupChat, GroupChatManager

llm_config = {"config_list": [{"model": "gpt-4o", "api_key": "sk-..."}]}

# 2. СОЗДАНИЕ ДВУХ АГЕНТОВ: КРИТИК И ПИСАТЕЛЬ

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",
)

# 3. ДИАЛОГ ДВУХ АГЕНТОВ (two-agent chat)

# 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"])

# 4. ГРУППОВОЙ ЧАТ С ТРЕМЯ АГЕНТАМИ + ФАСИЛИТАТОР

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 систем'. План → факты → текст → критика.",
)

# 5. RAG-АГЕНТ И CODE EXECUTION (продвинутый пример)

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",
)

🔗 Полезные ссылки

📖 AutoGen Docs⭐ GitHub📦 PyPI