?
SkillintermédiaireVérifié le 2025-05

AutoGen : conversations multi-agents Microsoft

Implémenter des dialogues entre agents avec AutoGen pour de la résolution de problèmes.

AutoGen : le framework multi-agents de Microsoft

AutoGen (maintenant AG2) est un framework open source de Microsoft Research pour construire des systèmes multi-agents conversationnels. Les agents communiquent entre eux par messages pour résoudre des tâches collaborativement.

Architecture conversationnelle

Contrairement aux approches séquentielles, AutoGen modélise les interactions comme des conversations entre agents. Chaque agent peut initier, répondre, ou terminer un échange.

Mise en place

from autogen import AssistantAgent, UserProxyAgent

# Configuration du LLM
llm_config = {
    "model": "gpt-4o",
    "temperature": 0,
    "api_key": "..."
}

# Agent assistant (LLM)
assistant = AssistantAgent(
    name="assistant",
    llm_config=llm_config,
    system_message="Tu es un développeur Python expert."
)

# Agent proxy (exécute le code)
user_proxy = UserProxyAgent(
    name="user_proxy",
    human_input_mode="NEVER",
    code_execution_config={"work_dir": "coding"},
    max_consecutive_auto_reply=10
)

Lancer une conversation

user_proxy.initiate_chat(
    assistant,
    message="Écris un script Python qui analyse un CSV et génère un graphique."
)

L'assistant génère le code, le user_proxy l'exécute, et la conversation continue jusqu'à résolution.

Group Chat (multi-agents)

from autogen import GroupChat, GroupChatManager

planner = AssistantAgent(name="planner", llm_config=llm_config,
    system_message="Tu planifies les étapes de résolution.")
coder = AssistantAgent(name="coder", llm_config=llm_config,
    system_message="Tu écris le code Python.")
reviewer = AssistantAgent(name="reviewer", llm_config=llm_config,
    system_message="Tu fais la code review et suggères des améliorations.")

group_chat = GroupChat(
    agents=[user_proxy, planner, coder, reviewer],
    messages=[],
    max_round=12
)

manager = GroupChatManager(groupchat=group_chat, llm_config=llm_config)
user_proxy.initiate_chat(manager, message="Crée une API REST avec FastAPI.")

Patterns avancés

Terminaison conditionnelle

def is_termination_msg(msg):
    return "TERMINATE" in msg.get("content", "")

assistant = AssistantAgent(
    name="assistant",
    is_termination_msg=is_termination_msg,
    llm_config=llm_config
)

Outils (Function Calling)

@user_proxy.register_for_execution()
@assistant.register_for_llm(description="Recherche sur le web")
def search_web(query: str) -> str:
    return perform_search(query)

Comparaison avec CrewAI

  • AutoGen : Plus flexible, conversation libre entre agents, exécution de code native
  • CrewAI : Plus structuré, rôles prédéfinis, plus simple à configurer
  • LangGraph : Plus bas niveau, contrôle total du flux, meilleur pour la production

Sources

agentsAutoGenMicrosoft