English
主导航

旧版 API

编排与交接

选择是由专家接管对话,还是将其留在管理者背后。

当不同专家应负责工作的不同部分时,多智能体工作流非常有用。首要的设计决策是,在工作流的每个分支处,由谁负责最终面向用户的回答。

选择编排模式

模式适用场景具体行为
交接专家应接管该工作分支的对话控制权移交给专家智能体
智能体作为工具管理者应保持控制,并将专家作为有边界的功能来调用管理者保留回复的归属权

通过交接实现归属权委托

当专家应当拥有下一次回复的归属权,而不仅仅是作为幕后协助者时,交接是最合适的选择。

通过交接进行委托
1
2
3
4
5
6
7
8
9
import { Agent, handoff } from "@openai/agents";

const billingAgent = new Agent({ name: "Billing agent" });
const refundAgent = new Agent({ name: "Refund agent" });

const triageAgent = Agent.create({
  name: "Triage agent",
  handoffs: [billingAgent, handoff(refundAgent)],
});

保持路由层面的清晰易读:

  • 为每个专家分配单一明确的任务。
  • 保持 handoffDescription 简短且具体。
  • 仅在下个分支确实需要不同的指令、工具或策略时才进行拆分。

在更高级的场景中,交接还可以承载结构化元数据或经过过滤的历史记录。这些具体的 API 保留在 SDK 文档中,因为具体的连接方式因编程语言而异。

在管理者模式的工作流中使用智能体作为工具

使用 agent.asTool() 当主智能体需要对最终答案负责,并将专家作为辅助工具调用时。

将专家作为工具调用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { Agent } from "@openai/agents";

const summarizer = new Agent({
  name: "Summarizer",
  instructions: "Generate a concise summary of the supplied text.",
});

const mainAgent = new Agent({
  name: "Research assistant",
  tools: [
    summarizer.asTool({
      toolName: "summarize_text",
      toolDescription: "Generate a concise summary of the supplied text.",
    }),
  ],
});

这通常在以下情况更合适:

  • 管理者需要综合得出最终答案
  • 专家正在执行有边界的任务,例如摘要或分类
  • 你希望拥有一个稳定的外部工作流,在其中嵌套调用专家,而不是转移归属权

仅在约定发生变更时才添加专家

尽可能从单个智能体开始。仅当专家能实质性改善功能隔离、策略隔离、提示词清晰度或轨迹可读性时,才添加专家。

过早拆分会产生更多的提示词、更多的轨迹以及更多的审批环节,但不一定能改善工作流。

后续步骤

明确了归属权模式后,请继续阅读涵盖相邻运行时或状态问题的指南。