OpenAI Agents SDK 编排与交接
2026-11-06 16:09 更新
不同专项智能体应分别负责不同工作时,多智能体工作流会很有用。设计的第一个问题,是每个分支中谁负责最终呈现给用户的答案。
选择编排模式
| 模式 | 适用情况 | 行为 |
|---|---|---|
| 交接(handoff) | 某个专项智能体应接管该分支的对话 | 控制权转给专项智能体 |
| 把智能体作为工具 | 管理者应保持控制,把专项智能体作为职责有限的能力调用 | 管理者仍负责回复 |
用交接转移职责
专项智能体应负责下一条回复,而非只在幕后协助时,适合使用交接:
来源示例 1(javascript):
// [中文] 示例1:用交接转移职责。
// [中文] 创建账单、退款和分流智能体,将两个专项智能体登记为交接目标;此处只配置路由,没有执行一次运行。
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)],
});
来源示例 2(python):
## [中文] 示例2:用交接转移职责。
## [中文] 创建账单、退款和分流智能体,将两个专项智能体登记为交接目标;此处只配置路由,没有执行一次运行。
from agents import Agent, handoff
billing_agent = Agent(name="Billing agent")
refund_agent = Agent(name="Refund agent")
triage_agent = Agent(
name="Triage agent",
handoffs=[billing_agent, handoff(refund_agent)],
)
保持路由清晰:每个专项智能体只承担明确而有限的工作;TypeScript的handoffDescription、Python的handoff_description应简短具体;下一分支确实需要不同指令、工具或策略时再拆分。
高级交接还可以携带结构化元数据或经过过滤的历史。具体API因语言而异,详见对应SDK文档。
在管理者式工作流中把智能体作为工具
主智能体应负责最终答案,并把专项智能体作为助手调用时,使用TypeScript的agent.asTool()或Python的agent.as_tool():
来源示例 3(javascript):
// [中文] 示例3:在管理者式工作流中把智能体作为工具。
// [中文] 摘要智能体指令及工具描述均要求“为所给文本生成简洁摘要”;把它包装成summarize_text工具交给研究助手。
// [中文] 管理者保留最终回复职责,这不同于handoff转移控制权;本段只定义配置。
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.",
}),
],
});
来源示例 4(python):
## [中文] 示例4:在管理者式工作流中把智能体作为工具。
## [中文] 摘要智能体指令及工具描述均要求“为所给文本生成简洁摘要”;把它包装成summarize_text工具交给研究助手。
## [中文] 管理者保留最终回复职责,这不同于handoff转移控制权;本段只定义配置。
from agents import Agent
summarizer = Agent(
name="Summarizer",
instructions="Generate a concise summary of the supplied text.",
)
main_agent = Agent(
name="Research assistant",
tools=[
summarizer.as_tool(
tool_name="summarize_text",
tool_description="Generate a concise summary of the supplied text.",
)
],
)
以下情况通常更适合这种模式:管理者应综合最终答案;专项智能体完成摘要、分类等有限任务;希望维持稳定的外层工作流并嵌套调用,而非转移职责。
约定发生变化时才添加专项智能体
尽可能先从一个智能体开始。新增专项智能体应能明显改善能力隔离、策略隔离、提示词清晰度或追踪可读性。
过早拆分会增加提示词、追踪和批准入口,却未必改善工作流。
后续步骤
确定职责归属后,可阅读:
以上内容是否对您有帮助:

TRAE-AI编程


更多建议: