Microsoft AutoGen 多 Agent 对话与协作框架。
AutoGen 让多个 Agent 通过消息协作,支持工具调用、群聊、终止条件和流式输出。新版(0.4 起)拆成 autogen-agentchat、autogen-core、autogen-ext,与 0.2 的 ConversableAgent API 不兼容。
选型时注意:需要强类型消息、分布式运行时和自定义 Agent 时用 AutoGen;只需要简单角色顺序协作,CrewAI 上手更快。
pip install -U autogen-agentchat "autogen-ext[openai]"
export OPENAI_API_KEY="sk-..."
旧教程里的 pip install pyautogen 和 ConversableAgent 属于 0.2 体系,不要与新包混装。
两个 Agent 轮流讨论,命中终止词后结束:
python - <<'PY'
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
async def main():
client = OpenAIChatCompletionClient(model="gpt-4o-mini")
planner = AssistantAgent(
"planner", model_client=client,
system_message="拆解任务并给出方案,完成后输出 TERMINATE。")
critic = AssistantAgent(
"critic", model_client=client,
system_message="审查方案,指出风险和遗漏。")
team = RoundRobinGroupChat(
[planner, critic],
termination_condition=TextMentionTermination("TERMINATE"),
max_turns=6,
)
result = await team.run(task="给出一份 K8s GPU 节点扩容方案")
print(result.messages[-1].content)
asyncio.run(main())
PY
流式打印协作过程:
python - <<'PY'
from autogen_agentchat.ui import Console
# 复用上面的 team
await Console(team.run_stream(task="继续补充回滚步骤"))
PY
接入本地 vLLM 模型,必须显式提供 model_info:
python - <<'PY'
from autogen_ext.models.openai import OpenAIChatCompletionClient
client = OpenAIChatCompletionClient(
model="Qwen/Qwen2.5-7B-Instruct", base_url="http://localhost:8000/v1", api_key="EMPTY",
model_info={"vision": False, "function_calling": True, "json_output": True,
"family": "unknown", "structured_output": False},
)
print(await client.create([{"role": "user", "content": "你好"}]))
PY
ConversableAgent 或 config_list 说明在用 0.2 教程;新版要装 autogen-agentchat 并用 AssistantAgent + model_client。model_info 会触发校验错误或能力判断失败;至少声明 function_calling 和 json_output。TextMentionTermination、MaxMessageTermination 或 max_turns。asyncio.run 会与已有事件循环冲突;改用 await team.run(...)。合上页面,先回答,再展开对照。
ConversableAgent 和 config_list 为中心;0.4+ 拆分为 autogen-agentchat 等包,使用 AssistantAgent、model_client 和异步团队 API,两者不兼容。RoundRobinGroupChat 默认会持续轮流发言,没有终止条件就可能无限循环并持续计费。用文本终止词、最大消息数或 max_turns 限制。