🤖 AI 跟我学 新手入门

OpenAI Agents SDK 是什么?开发者上手指南

OpenAI Agents SDK 是什么?这篇讲清楚 Agents SDK 教程的核心:Agent/Tool/Handoff/Session 4 大概念,附最小可跑示例

发布 2026/05/20 📎 参考官方文档

30 秒了解:OpenAI Agents SDK 是什么

OpenAI Agents SDK 是 OpenAI 官方维护的、用来快速搭多智能体应用的开发框架,提供 Python 和 TypeScript/Node.js 两套版本。它在 Responses API 之上包了一层抽象,把「写 Agent 时要重复造的轮子」——比如多轮对话循环、工具调用、Agent 之间互相交接、会话记忆、错误重试——都封装好。

简单对比:

方式你要写的代码量适合谁
直接调 Responses API多(自己拼 message 数组、自己处理 tool_calls 循环)想细控每一步的资深开发者
OpenAI Agents SDK少(声明 Agent + Tool 就能跑)大多数开发者、原型阶段
用 LangChain 等三方框架中(要学框架自己的抽象)已经用 LangChain 生态的团队

北极星词:如果你想在中文社区找完整的 AI Agent 教程,OpenAI 官方这套 SDK 是值得优先学的——文档齐、维护稳、未来一定会和 OpenAI 自家新功能(如 AgentKit)保持最佳兼容。

准备工作

项目要求
Node.jsv18 及以上(推荐 v20 LTS)
或 Python3.9 及以上
OpenAI API Key在 platform.openai.com 注册后创建
余额至少充几美元(最小示例只花几分钱)
网络调 OpenAI API 需要海外网络环境

国内用户没条件直连?可以用 OpenAI 兼容接口的中转服务(如 DeepSeek、智谱、阿里通义都提供 OpenAI 兼容端点),Agents SDK 大多数功能也能用,但部分新特性可能受限。

详细操作步骤

第 1 步:安装 SDK

Node.js / TypeScript

npm install @openai/agents
# 或 pnpm
pnpm add @openai/agents

Python

pip install openai-agents

两个版本概念几乎一致,下面以 Node 为主讲,Python 用法在每一节末尾附核心代码对照。

第 2 步:写一个 Hello Agent(5 行代码)

新建 hello.ts

import { Agent, run } from '@openai/agents';

const helloAgent = new Agent({
  name: 'Hello Agent',
  instructions: '你是一个简洁的中文助手,回答不超过 30 字。',
  model: 'gpt-5',
});

const result = await run(helloAgent, '你好,介绍一下你自己');
console.log(result.finalOutput);

设置 OPENAI_API_KEY 环境变量后跑 tsx hello.ts,几秒后就能拿到回答。

Python 对应代码:

from agents import Agent, Runner

hello_agent = Agent(
    name="Hello Agent",
    instructions="你是一个简洁的中文助手,回答不超过 30 字。",
    model="gpt-5",
)

result = Runner.run_sync(hello_agent, "你好,介绍一下你自己")
print(result.final_output)

跑通这 5 行就证明你的开发环境是好的,下面才能往复杂走。

第 3 步:给 Agent 加 Tool(自定义函数)

Agent 之所以是 Agent,核心就是「能调工具」。Agents SDK 用一个 tool() 装饰器或函数把任意 JS/Python 函数变成 Agent 可调用的工具:

import { Agent, run, tool } from '@openai/agents';
import { z } from 'zod';

const getWeather = tool({
  name: 'get_weather',
  description: '查询某城市当前天气',
  parameters: z.object({
    city: z.string().describe('城市名,如 北京'),
  }),
  execute: async ({ city }) => {
    // 真实场景这里调天气 API
    return { city, temp: '22°C', condition: '多云' };
  },
});

const weatherAgent = new Agent({
  name: 'Weather Agent',
  instructions: '你是天气助手,用户问天气就调 get_weather 工具',
  tools: [getWeather],
});

const result = await run(weatherAgent, '北京今天天气怎样?');
console.log(result.finalOutput);

跑起来 Agent 会自动识别用户问天气 → 调 get_weather → 拿到结果 → 用人话回。整个 tool_calls 循环你不用写一行。

Python 版核心差别在用 @function_tool 装饰器声明工具,其余概念相同。

第 4 步:理解 4 大核心抽象

Agents SDK 全部能力都基于 4 个概念:

概念作用类比
Agent一个有指令、有工具、有模型的智能体一个员工
ToolAgent 能调的函数、MCP Server、代码解释器、文件搜索员工手里的工具
Handoff一个 Agent 把任务交给另一个 Agent把客户从客服转到工程师
Session跨多轮对话保持上下文一份连续的工单记录

理解这 4 个,所有官方示例你都能看懂。

第 5 步:用 Handoff 做多智能体协作

真实业务里常常需要多个专门的 Agent 互相协作。Agents SDK 的 Handoff 就是为此设计:

import { Agent, run } from '@openai/agents';

const billingAgent = new Agent({
  name: 'Billing Agent',
  instructions: '只回答账单、发票、退款问题',
});

const techAgent = new Agent({
  name: 'Tech Agent',
  instructions: '只回答技术、Bug、集成问题',
});

const router = new Agent({
  name: 'Router',
  instructions: '判断用户问题类型,转交给 Billing 或 Tech',
  handoffs: [billingAgent, techAgent],
});

const result = await run(router, '我的发票一直没收到,怎么办?');
console.log(result.finalOutput); // 会自动转给 Billing Agent

这是 OpenAI 官方主推的多智能体范式,比自己写路由器靠谱得多。想理解概念可以看 多智能体协作是什么

第 6 步:用 Session 保住对话记忆

默认 run() 每次调用都是一次性的,没有记忆。要做对话型 Agent 加上 Session:

import { Agent, run, MemorySession } from '@openai/agents';

const chatAgent = new Agent({
  name: 'Chat',
  instructions: '你是中文聊天助手',
});

const session = new MemorySession();

await run(chatAgent, '我叫小李', { session });
const r2 = await run(chatAgent, '我刚才说我叫什么?', { session });
console.log(r2.finalOutput); // 输出会包含「小李」

生产环境一般用 OpenAI 自家的 Conversations API 持久化对话,不要把 MemorySession 用到生产——进程一重启就没了。

详细看 AI Agent 的记忆怎么实现 那篇关于 session 设计的讲解。

第 7 步:加 Tracing 排查 Bug

Agent 跑出来奇怪的结果,最痛的就是不知道它中间想了什么。Agents SDK 内置 Tracing:

import { Agent, run, withTrace } from '@openai/agents';

await withTrace('weekly-report-flow', async () => {
  const result = await run(myAgent, '生成周报');
  console.log(result.finalOutput);
});

跑完去 platform.openai.com 的 Traces 页面,能看到这次跑的完整调用链——每一步 LLM 输入输出、每个 tool 调用参数、耗时、Token。调试 Agent 必装功能

5 个让 Agents SDK 更好用的进阶技巧

技巧怎么做
用 Guardrails 做输入校验自动拦截敏感、超长、不合规输入,防止 prompt 注入
用 MCP Server 扩展工具不用每个工具自己写,直接接现成 MCP 生态
用 Streaming 做实时输出长任务边跑边给用户看进度,体验远好于干等
写单元测试 mock Agent用 jest/vitest mock 掉 LLM 调用,测自己的工具逻辑
加结构化输出(Zod / Pydantic)强制 Agent 输出符合 schema 的 JSON,下游解析无忧

常见坑 + 解决办法

现象原因解决
报错「OPENAI_API_Key not found」没设环境变量用 dotenv 或 export 在跑前设好
Agent 一直循环不收尾工具描述不清楚、模型反复纠结收紧 instructions,加 max_turns 参数限制循环次数
Tool 参数解析失败Zod / Pydantic schema 和实际不符schema 字段用 .describe() 写明用途,让 LLM 更好理解
Handoff 死锁多个 Agent 互相 handoff 不停用 max_handoffs 限制;或者用「单向 handoff」拓扑
国内访问被墙OpenAI 直连不通用 OpenAI 兼容接口(如 DeepSeek、智谱)或加反向代理
Token 烧钱每次都把全部 session 历史塞 prompt用 OpenAI Conversation API 自动压缩历史;或人工实现「最近 5 轮 + 摘要」

一个完整实战案例:用 Agents SDK 搭客户支持机器人

下面是一个能直接跑的最小可用版本(Node + TypeScript),处理「订单查询 + 投诉转人工」两类需求:

import { Agent, run, tool, MemorySession } from '@openai/agents';
import { z } from 'zod';

const queryOrder = tool({
  name: 'query_order',
  description: '按订单号查订单状态',
  parameters: z.object({ order_id: z.string() }),
  execute: async ({ order_id }) => {
    // 真实场景这里查公司 OMS
    return { order_id, status: '已发货', tracking: 'SF1234567' };
  },
});

const supportAgent = new Agent({
  name: '客服 Agent',
  instructions: `你是公司客服。
- 用户问订单:调 query_order,把状态友善地告诉用户
- 用户要投诉或退款:礼貌引导留下联系方式,告知会有人工 1 小时内回
- 不要承诺折扣、不要编造物流信息
- 回答简洁,3 句话以内`,
  tools: [queryOrder],
  model: 'gpt-5',
});

const session = new MemorySession();

async function chat(input: string) {
  const r = await run(supportAgent, input, { session });
  console.log('Bot:', r.finalOutput);
}

await chat('你好,我想查订单 ABC123 的状态');
await chat('它什么时候能到?');

下面是上面 Agent 的 instructions 模板,方便你套用到自己的客服场景:

📋 Prompt 模板

你是「[公司名]」的 AI 客服。

能调用的工具

  • query_order:按订单号查询订单状态
  • escalate_to_human:把工单转给人工客服

行为规则

  1. 用户问订单:必须调 query_order,不要凭印象回答
  2. 用户投诉、退款、要求经理:立即调 escalate_to_human 并礼貌告知会有人工跟进
  3. 不能擅自承诺折扣、库存、活动
  4. 不知道的事情说「我帮你转一下人工」,不要编

风格

  • 简洁,每次不超过 3 句话
  • 每次最多 1-2 个表情
  • 称呼用「您」,正式不油腻

在这套架构上加更多 tool(CRM 查客户、Knowledge Base 查 FAQ)、加 Handoff(专门有个 Agent 处理退款)、加 Tracing 看真实对话,3 天就能从原型推到内测

进阶 / 下一步

常见问题

Q:OpenAI Agents SDK 和 LangChain / LlamaIndex 是啥关系? A:定位重叠但定位不同。Agents SDK 是 OpenAI 官方、绑 OpenAI 生态——和自家新功能(如 Conversations API、AgentKit)一定第一时间兼容。LangChain 是社区驱动、跨厂商、抽象更厚。追求和 OpenAI 深度结合用 Agents SDK,追求多厂商兼容用 LangChain

Q:Agents SDK 支持哪些模型? A:默认 OpenAI 全家桶(GPT-5、4o、4o-mini 等)。也支持任何 OpenAI 兼容接口(DeepSeek、智谱、Anthropic 通过 LiteLLM 转、Azure OpenAI)。配置时改 baseURL 即可。

Q:Agents SDK 适合做生产环境吗? A:适合。OpenAI 已经用它跑自家 ChatGPT 的部分 Agent 模式逻辑。关键是配 Tracing + Guardrails + 限流,安全和稳定性自己兜一层

Q:Node 和 Python 哪个版本更成熟? A:Python 版功能更全、文档更多(社区更早起步)。Node 版后跟,但核心抽象一致。前端/全栈团队用 Node,后端/数据团队用 Python

Q:MCP Server 怎么接进 Agents SDK? A:Agents SDK 已经原生支持 MCP。通过 MCPServerStdioMCPServerHTTP 类把 Server 实例化后传给 Agent 的 tools 即可。具体看官方 cookbook 的 mcp 章节。

Q:Agents SDK 收费吗? A:SDK 本身完全免费、开源(Apache 2.0)。真实开销是模型调用费用——按 OpenAI 标准计费,每千 Token 几分到几毛美金不等。