autogen

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

易错点与排错

读完自测

合上页面,先回答,再展开对照。

  1. AutoGen 0.2 和 0.4+ 的核心区别是什么?
  2. 为什么群聊必须设置终止条件?
  3. 接入本地模型为什么要 model_info?
答案
  1. 0.2 以 ConversableAgent 和 config_list 为中心;0.4+ 拆分为 autogen-agentchat 等包,使用 AssistantAgent、model_client 和异步团队 API,两者不兼容。
  2. RoundRobinGroupChat 默认会持续轮流发言,没有终止条件就可能无限循环并持续计费。用文本终止词、最大消息数或 max_turns 限制。
  3. AutoGen 需要知道模型是否支持视觉、工具调用和 JSON 输出,才能选择正确的消息格式和工具策略。非 OpenAI 模型无法自动推断时必须显式声明。

相关条目