OpenAI Agents SDK 教程:安装、第一个智能体、工具与多智能体交接(Python)

OpenAI Agents SDK 是什么、怎么上手?按官方 README 和 Quickstart 讲清安装命令、设置 API Key、十行代码跑起第一个智能体、给它加函数工具、用 handoffs 做多智能体分工、在 Trace viewer 里看调用过程,以及它的核心概念各是什么。

NNathaniel bigo··原创首发·AI 辅助撰写
8 分钟读完
资料核对于 2026-10-11 · 依据官方文档与公开资料整理 其他 账号
本文根据 OpenAI Agents SDK 官方仓库 README 和官方文档 Quickstart 整理,资料核对于 2026-10-11。文中代码取自官方页面,没有在本机运行验证。还没有 API Key 的话先看《OpenAI API Key 怎么获取》。

适用于谁

  • 搜「openai agents sdk 教程」「openai agents sdk 使用」「openai agents sdk 是什么」的人;
  • 已经会调 OpenAI API,想从「一问一答」升级到「能自己调用工具、多步完成任务」的人;
  • 在几个智能体框架之间做选择,想先知道官方这一套长什么样的人。

结论先说

  1. 它是 OpenAI 官方的智能体开发框架,README 的定位是:一个轻量但功能完整的、用来构建多智能体工作流的框架。
  2. 安装一行:pip install openai-agents,需要 Python 3.10 及以上,并设置环境变量 OPENAI_API_KEY。
  3. 最小程序只有三步:定义 Agent(名称加指令)→ 用 Runner 运行 → 读 result.final_output。
  4. 两种多智能体模式:交接(handoffs,把对话转给另一个智能体)和把智能体当工具用(主智能体保持控制权)。
  5. 自带追踪。每次运行的过程可以在 OpenAI 控制台的 Trace viewer 里看到。

一、核心概念

README 列出的概念和各自的定义:

概念含义
Agents(智能体)配置了指令、工具、护栏和交接的大模型
Tools(工具)让智能体执行操作的函数、MCP 服务器和托管工具
Handoffs / Agents as tools把特定任务委派给其他智能体
Guardrails(护栏)可配置的输入、输出安全校验
Sessions(会话)跨多次运行自动管理对话历史
Tracing(追踪)内置的运行记录,用来查看、调试和优化工作流
Human in the loop在智能体运行过程中让人参与的内置机制
Sandbox agents预先配置好、能在容器里长时间工作的智能体
Realtime / Voice agents低延迟的语音与多模态智能体;语音转文字、智能体、文字转语音组成的流水线

入门只需要前三个。

二、安装与设置

bash
mkdir my_project
cd my_project
python -m venv .venv

激活虚拟环境:macOS / Linux 用 source .venv/bin/activate,Windows 用 .venv\Scripts\activate。然后安装:

bash
pip install openai-agents

用 uv 的话是 uv init 之后 uv add openai-agents。

设置 API Key(把 sk-... 换成你自己的):

bash
export OPENAI_API_KEY=sk-...

Windows PowerShell 的写法是 $env:OPENAI_API_KEY = "sk-..."。

可选的附加项:语音功能 pip install 'openai-agents[voice]',用 Redis 存会话 pip install 'openai-agents[redis]'。

三、第一个智能体

README 的 Hello world:

python
from agents import Agent, Runner

agent = Agent(name="Assistant", instructions="You are a helpful assistant")

result = Runner.run_sync(agent, "Write a haiku about recursion in programming.")
print(result.final_output)
  • Agent(name=..., instructions=...):instructions 相当于这个智能体的系统提示词;
  • Runner.run_sync(...):同步运行。它内部是一个循环:调用模型,模型要用工具就执行工具,把结果交回模型,直到产出最终回答;
  • result.final_output:最终的回答。

异步写法(Quickstart 的例子):

python
import asyncio
from agents import Agent, Runner

agent = Agent(
    name="History Tutor",
    instructions="You answer history questions clearly and concisely.",
)

async def main():
    result = await Runner.run(agent, "When did the Roman Empire fall?")
    print(result.final_output)

if __name__ == "__main__":
    asyncio.run(main())

四、加一个函数工具

把一个普通的 Python 函数变成智能体可以调用的工具。Quickstart 当前页面的写法:

python
from agents import Agent
from agents.decorators import tool

@tool
def history_fun_fact() -> str:
    """Return a short history fact."""
    return "Sharks are older than trees."

agent = Agent(
    name="History Tutor",
    instructions="Answer history questions clearly. Use history_fun_fact when it helps.",
    tools=[history_fun_fact],
)

函数的名称、参数类型和文档字符串会成为给模型看的工具定义。所以文档字符串要写清这个工具做什么、什么时候该用;在 instructions 里点一下「什么情况下用哪个工具」也有帮助。

工具的基本原理见《Claude 工具调用入门》,各家的机制是相通的。

五、多智能体:交接

一个分诊智能体把问题转给合适的专家智能体。每个专家设置 handoff_description,告诉分诊者什么时候该转给它:

python
history_tutor_agent = Agent(
    name="History Tutor",
    handoff_description="Specialist agent for historical questions",
    instructions="You answer history questions clearly and concisely.",
)

分诊者用 handoffs=[...] 声明可以转给谁:

python
triage_agent = Agent(
    name="Triage Agent",
    instructions="Route each homework question to the right specialist.",
    handoffs=[history_tutor_agent, math_tutor_agent],
)

(math_tutor_agent 的定义方式和历史老师相同。)运行时对 triage_agent 调用 Runner.run 即可。

交接和「智能体当工具」的区别:交接之后,接手的智能体直接负责后面的对话;把智能体当工具用时,主智能体始终保持控制,只是把专家的输出当作一次工具结果。官方文档把后者称为 Agents as tools 模式,适合需要汇总多个专家结果的场景。

六、看运行过程

SDK 默认开启追踪。官方给的查看位置是 OpenAI 控制台的 Trace viewer:https://platform.openai.com/traces。在那里可以看到每次运行里模型调用了什么、工具返回了什么、在哪一步交接。

智能体行为不符合预期时,先看追踪,再改指令或工具说明,比盲目改提示词有效。

七、能用别家的模型吗

README 的说法:SDK 支持 OpenAI 的 Responses API 和 Chat Completions API,并且是「provider-agnostic」的,还能通过可选依赖接入 100 多种其他大模型,README 点名的集成途径是 any-llm 和 LiteLLM。具体配置以官方文档为准。

Responses API 是什么见《OpenAI Responses API》。

八、Sandbox agents

README 把它放在了显眼的位置:预先配置好、在容器里长时间工作的智能体。README 的示例使用 UnixLocalSandboxClient,支持 macOS 和 Linux;Windows 上官方建议用 DockerSandboxClient 或托管的沙箱客户端。细节见官方的 Sandbox agents 文档。

常见问题

Q:和直接调 Responses API 有什么区别?

直接调 API 时,「模型要调用工具 → 你执行 → 把结果传回去 → 再调用」这个循环要自己写。SDK 把循环、交接、会话历史和追踪都做好了。

Q:和 Claude Agent SDK 是一类东西吗?

都是官方的智能体开发工具包,设计取向不同。Claude 那一套见《Claude Agent SDK 快速上手》。

Q:报 429 或提示额度不足?

这是 API 层面的限制,见《OpenAI API 429 错误》。智能体一次任务会调用模型多次,用量比单次问答大,测试时留意消耗。

Q:智能体会自己执行危险操作吗?

它只能调用你给它的工具。有副作用的工具(删除、付款、发消息)要么不给,要么配合护栏和人工确认机制使用。

参考资料

  • openai/openai-agents-python(官方仓库):https://github.com/openai/openai-agents-python
  • Quickstart(官方文档):https://openai.github.io/openai-agents-python/quickstart/
需要开通或续费?ChatGPT Plus 充值 →

Nathaniel 的更多内容

  1. 01

    promptfoo 使用教程:对比提示词和模型、写断言自动评测(安装与配置)

    promptfoo 是什么、怎么使用?按官方 README 和入门文档讲清它的用途、三种安装方式、用示例项目起步、promptfooconfig.yaml 里提示词、模型和测试用例三部分怎么写、常用断言类型的含义、eval 与 view 两条命令,以及把它放进日常改提示词流程的方法。

    ChatGPT其他 AI 工具0
  2. 02

    Kimi API怎么用:API Key获取、Python调用、K3价格与429报错处理

    Kimi API Key 在哪里获取、怎么用 Python 调用 K3、价格怎么算、429 和 401 报错怎么办?本文按 Kimi API 开放平台官方文档讲清注册认证、创建 Key、base_url 与模型名、计费规则和常见错误排查。

    Kimi0
  3. 03

    Cursor Agent 模式怎么用:Agent、Plan、Ask 三种模式,检查点回滚与消息排队

    Cursor Agent 模式是什么、和 Plan / Ask 模式怎么选?按官方文档讲清 Agent 能调用哪些工具、Shift+Tab 切换模式、Plan 模式先出方案再动手、用检查点撤销改动、任务进行中排队或插话,以及 /goal 长目标。

    Cursor0
  4. 04

    Gemini 聊天记录怎么导出:导出到文档 / 表格、生成 PDF 与用 Takeout 批量导出完整对话

    Gemini 没有「一键导出全部对话」的按钮,但有三条官方路径:单条回答导出到 Google 文档、Gmail、表格;让 Gemini 直接生成 PDF、Word、Markdown 文件;用 Google Takeout 批量下载全部活动记录。本文给出每种方法的步骤和限制。

    Gemini0
  5. 05

    ChatGPT 生成图片中文乱码、文字错误怎么办:7 个按顺序试的办法

    让 ChatGPT 做海报、封面、信息图,中文总是缺笔画、错字、乱码?本文按 OpenAI 官方图像提示指南,给出从写法、字数、局部修改、质量档位到后期排版的 7 个办法,以及什么时候干脆别让 AI 写字。

    ChatGPT0
  6. 06

    OpenCode Skills 使用指南:技能目录、命名规则、权限配置与不加载排查

    OpenCode 的 Skills 放在哪个目录、怎么控制哪些技能能用?按 OpenCode 官方文档讲清六个扫描位置、name 的正则规则、skill 工具的工作方式、在 opencode.json 里用 allow / deny / ask 配置权限、按智能体覆盖,以及技能不出现时的五项检查。

    其他 AI 工具0

同模型

  1. 01

    提示词怎么写:ChatGPT / Claude 官方提示词技巧与万能公式

    提示词怎么写才有效?本文把 OpenAI 和 Anthropic 官方提示词指南的要点整理成一个「目标 / 背景 / 输出 / 边界」通用公式,附改写前后对比、迭代追问方法和两家模型各自的注意点。

    ChatGPTClaude0

同产品的其他教程

  1. 01

    如何让大模型稳定输出 JSON:结构化输出、JSON 模式与提示词写法(OpenAI / Claude)

    怎么让大模型稳定输出 JSON?本文按 OpenAI 和 Anthropic 官方文档讲清只靠提示词、JSON 模式、结构化输出三种做法的可靠程度,两家的写法与 Schema 限制,以及拒答和截断两种例外。

    ChatGPTClaude0
  2. 02

    MinerU 是什么、怎么用:把 PDF 等文档解析成 Markdown(4.0 的安装、四档解析与命令)

    MinerU 是什么、怎么安装使用?按官方中文 README 讲清 4.0 版本的定位、支持的输入与输出格式、flash / basic / standard / advanced 四档解析各适合什么、pip 安装命令、mineru-kit 与 mineru 两个命令的分工和常用写法,以及从旧版升级要注意什么。

    其他 AI 工具0
  3. 03

    npx skills add 怎么用:从 GitHub 安装 Skill、skills.sh 是什么与常用命令

    网上的 Skill 安装命令大多是 npx skills add 开头,它是什么、装到哪去了?按官方 README 讲清 skills 命令行工具支持的来源写法、项目与全局两种范围、-a 指定工具、list / find / update / remove 等命令、软链接与复制的区别,以及怎么关掉遥测。

    Claude其他 AI 工具0
  4. 04

    即梦首尾帧怎么用:两张图生成过渡视频(在哪里、提示词、不能用怎么办)

    即梦首尾帧在哪里、怎么用?本文讲清首尾帧入口、哪些模型支持、两张图的比例要求、过渡提示词怎么写,以及「首尾帧不见了 / 不能用了」「画面跳变」的原因和解决办法。

    其他 AI 工具0
  5. 05

    提示词里的角色设定有用吗:「你是一位专家」该怎么写才有效(官方文档怎么说)

    提示词开头写「你是一位资深专家」到底有没有用?本文按 Anthropic、OpenAI、Google 官方文档讲清角色设定管什么、不管什么,一句话角色和详细人设各自适合什么场景,角色应该放在哪里,以及比「你是专家」更有效的四个写法。

    ChatGPTClaude0
  6. 06

    DeepSeek怎么用:网页版与手机App入门(深度思考、智能搜索、上传文件)

    DeepSeek怎么用?本文从官方入口和登录方式讲起,说清输入框里的「深度思考」「智能搜索」和上传附件各管什么,历史对话怎么改名、置顶、分享和导出,以及手机上使用的注意点。

    其他 AI 工具0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~