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