用途:workflow 是 AG2 Network 中由声明式 TransitionGraph 驱动的编排式多方适配器,用于需要条件路由的多智能体协作,例如两到 N 个智能体的条件交接、流水线(researcher→writer→editor)、分诊路由到专家、草稿/评审反馈循环、协调者加专家的层级编排,以及从 GroupChat、ConversableAgent.handoffs、ReplyResult(target=...) 迁移。若只需两方严格一问一答、无轮次顺序的自由聊天或无条件固定轮询,应改用 consulting、conversation 或 discussion。
主要能力:参与者 2 个以上,轮次顺序完全由 TransitionGraph 决定,图发出 TerminateTarget 或达到 max_turns 时自动关闭。图包含 initial_speaker、按 priority 升序检查的 transitions、default_target 与可选 max_turns。内置目标有 AgentTarget、RoundRobinTarget、StayTarget、RevertToInitiatorTarget、TerminateTarget;内置条件有 Always、FromSpeaker、ToolCalled、ContextEquals。工厂方法 TransitionGraph.sequence([...]) 与 TransitionGraph.round_robin(participants=[...], max_turns=...)。通道级可变状态存于 WorkflowState.context_vars,通过 set_context(channel, key, value) 写入。
使用方式:先阅读 ag2-network-quickstart,掌握 Hub.open、HubClient.register、通道生命周期与 agent_client.open(...)/channel.send(...)。注册时默认附加 NetworkPlugin;workflow 适配器的 tools_for 返回空列表,因此路由完全依赖你写的 @tool 交接函数(返回 Handoff、修改上下文变量或调用 channel.close())。纯流水线 worker 可传 attach_plugin=False。开启通道示例:await researcher.open(type="workflow", target=[...], knobs={"graph": graph.to_dict()})。注意 kickoff 的 channel.send() 会被计为 initial_speaker 的一轮,若希望首个真正思考的智能体响应提示,应使用 HumanClient(register_human)或占位 intake 智能体作为 initial_speaker。
限制:默认期望为 turn_within(120s, warn) 与 turn_within(600s, auto_close),卡住的发言者会在 10 分钟后自动关闭,可通过 ag2-network-governance 调整。priority 数值越小越先检查,常见错误是给终止规则设大 priority 导致其被推到最后而无法终止。round_robin 因 Always() 匹配每轮,default 不可达,必须设置 max_turns,否则无限循环。Handoff.target 使用 Passport 名称而非 agent_id。其余细节暂未提供。