先给结论

OpenAI Agents API 适合把 Agent harness、会话与可选运行环境交给 OpenAI 托管。当前接入从 beta.agents.sessions 创建 Session 开始:先给应用 API Key 配置 api.agents.read、api.agents.write 与 api.responses.write,再选择 none、openai_hosted 或 self_hosted 环境,订阅事件并依据 Turn 终态验收。不要只看到 Session idle 就认定成功。

OpenAI Agents API 怎么用?

官方资料(2026-11-02 核对):Agents API Quickstart · Architecture · Sessions · OpenAI-hosted Sandbox · Sandbox Security · Files 与 Artifacts · Errors 与 Recovery · Observability 与 Usage

先判断是否真的需要 Agents API

方式谁运行编排适合场景你仍要负责
Agents APIOpenAI 托管 harness 与 Session长任务、托管会话、可选 Sandbox 与事件流输入、工具授权、业务状态、验收与数据治理
Agents SDK你的 JavaScript / Python 应用代码内编排、handoff、guardrail 与自有部署应用运行、工具循环、状态与监控
Responses APIOpenAI 模型 + 你的循环一次响应或直接控制 Items 与工具协议完整续接、工具执行与状态机

Agents API 不是 ChatGPT 订阅权益,也不是 Agents SDK 的“付费升级”。模型、托管容器和第三方工具可能分别计费,上线前要按官方实时价格与实际任务链路估算。

准备 API Key、Scope 与 Beta 头

  1. 在 OpenAI Platform 项目创建应用 API Key。
  2. 授予 api.agents.read、api.agents.write 和 api.responses.write。
  3. JavaScript 安装 npm install openai;Python 安装或升级 pip install --upgrade openai。
  4. SDK 使用 beta.agents 命名空间并自动发送 Beta 头;cURL 需显式发送 OpenAI-Beta: agents=v1。
  5. 应用 API Key 只留在服务端,不放进 Sandbox、浏览器、仓库、日志或提示词。

最小 JavaScript Session

import OpenAI from "openai";

const client = new OpenAI();
const events = await client.beta.agents.sessions.create({
  agent: {
    model: process.env.OPENAI_MODEL,
    instructions: "完成任务,报告实际执行结果。"
  },
  environment: {
    type: "openai_hosted",
    network: { access: "disabled" }
  },
  input: "创建一个文本报告并保存到 /workspace/outputs/report.txt",
  stream: true
});

events.withResultCollection();
try {
  for await (const event of events) {
    console.log(event.type);
  }
  const result = await events.finalResult();
  console.log(result.session_id, result.output_text);
} finally {
  events.controller.abort();
}

示例用环境变量管理模型,避免把某个型号当成永久默认值。真实项目还要保存 session_id,对失败、取消和 required actions 分支做处理,并下载需要保留的 Artifact。

三种环境怎么选

environment.type能力适合场景主要边界
none无命令执行与文件系统问答、远程 MCP、应用函数工具不能用内置 Bash、Apply Patch 或工作区文件
openai_hostedOpenAI 创建 Linux 工作区运行脚本、处理文件、生成 Artifact配置包、文件、网络、生命周期与费用
self_hosted连接你的计算环境私网、自定义镜像、合规或专用资源你负责启动、连接、重连、关停与文件保留

托管 Sandbox 的工作目录是 /workspace;可配置 packages、files、setup_commands、env、container_size 与 network。默认网络策略可能受模板影响,生产上应显式选择 disabled 或只允许必要域名的 restricted。

Session 的正确生命周期

  1. Create:创建 Session,同时提供 Agent、初始输入与环境。
  2. Stream:持续接收事件,保存 Session 与 Turn 标识。
  3. Outcome:检查 agent.session.turn.completed、failed 或 cancelled;idle 本身不是成功。
  4. Required actions:如 Session 等待函数结果或环境连接,读取并完成 required_actions。
  5. Inspect:读取 Session Items 和工具输出;Turn completed 也不保证所有工具成功。
  6. Continue:先打开事件流,再用保存的 session_id 发送后续消息。
  7. Delete:保存结果和文件后删除 Session,请求清理 Sandbox。

每次逻辑消息提交都生成一个幂等键并与消息一起保存。网络超时后重试同一提交时,复用原 session_id、消息和幂等键。

文件、Artifact 与 Sandbox 生命周期

  • 输入文件可在创建 Session 时用 Files API ID 或 inline base64 提供到 /workspace。
  • 把要保留的输出写进 /workspace/outputs;Turn 完成后会发布为不可变 Artifact。
  • 自托管环境的文件通过你的提供方 API 或挂载文件系统读取,不会进入 OpenAI Artifacts API。
  • Session 工作区可跨 Turn 使用,但不是永久存储;活动和 keep-alive 停止后,托管 Sandbox 可能被删除。
  • 删除 Session 前下载或转存业务必须保留的文件;关闭事件流不会自动取消任务。

上传失败时读取 error.param 与 error.message。路径必须是 /workspace 下的绝对 POSIX 路径,并防止符号链接穿越、覆盖与超长路径。

安全:把密钥与业务授权留在 Sandbox 外

  • 不同用户或敏感工作负载使用隔离环境,避免共享文件与状态。
  • 应用 API Key 只在应用服务器;自托管 Executor 使用受限的 CODEX_API_KEY 连接环境。
  • 第三方凭据放在 Vault、可信代理或函数工具处理器,不直接注入生成代码可读取的环境。
  • 远程 MCP、函数工具和网络访问分别做域名允许列表、参数校验、身份授权、幂等与审计。
  • 付款、删除、发布、外发数据和高影响命令必须有人审或等价政策控制;提示词不能替代执行边界授权。

错误恢复:先查状态,再重试

现象先检查处理方式
HTTP 400 / invalid_beta请求字段、error.param、Beta 头修正输入后重新提交,不做盲重试
401 / 403Project、Key 权限与模型访问修复凭据或 Scope
409 conflict当前 Session / Environment 状态先读取真实状态再决定重试
429 / 5xx / 过载Session、Turn、Items 与外部副作用遵守 Retry-After,指数退避并限制次数
事件流断开Session 与 Turn 最终状态重连和检查已保存工作,不能直接重复输入
Turn failed错误 code、已完成工具和文件变化Session 仍可用时只继续未完成工作

失败 Turn 可能已经写文件或调用外部服务。自动恢复必须先确认副作用;错误类型变化、超过重试上限或 Session 已 failed 时停止自动重试。

观测、成本与真实验收

在 Platform Agents 日志按 Session ID 查看 Turn、工具调用和子 Agent;同时保留业务侧的用户请求、审批、幂等键、外部结果与最终 UI 状态。Session / Turn usage 是 best-effort,可能暂时为 null,不能把 null 当作零费用或最终账单。

  • 按“完成一个真实任务”统计模型多次调用、重试、子 Agent、工具、Sandbox 计算和第三方费用。
  • 监控完成率、失败/取消率、required actions 等待、工具错误、平均 Turn 数、Artifact 下载与清理成功率。
  • 对输入、工具、外发网络、凭据和日志做脱敏与租户隔离。
  • 用固定评测集验证成功标准,不能只看 turn.completed。

生产上线检查清单

  • 从一个 Session 和最小只读任务开始,模型与 SDK 版本通过配置和锁文件管理。
  • API Key Scope 最小化;应用 Key 与第三方凭据不进入 Sandbox。
  • 环境类型、包、文件、setup、网络和容器大小都显式配置并经过测试。
  • 事件终态、required actions、幂等键、断流重连和人工接管都有分支。
  • 文件路径、Artifact 保存、Session 删除和过期恢复已测试。
  • 重试前检查副作用,设置截止时间、次数上限和人工接管。
  • 日志、Trace、业务指标、费用告警与数据保留规则已启用。
  • 正式验收同时检查输出、工具结果、业务状态、费用和用户界面。

常见问题

OpenAI Agents API 和 Agents SDK 有什么区别?

Agents API 由 OpenAI 托管 harness 与 Session,可选托管运行环境;Agents SDK 在你的应用内运行,应用负责部署、工具执行、状态与审批。应按运行位置、基础设施控制和托管需求选择。

OpenAI Agents API 需要哪些 API Key 权限?

应用 Key 至少需要 api.agents.read 与 api.agents.write 进行 Session 操作,以及 api.responses.write 进行模型推理。应用 Key 要留在服务端,不能放进 Agent 的 Sandbox。

environment.type 应该选 none、openai_hosted 还是 self_hosted?

只做问答、远程 MCP 或应用函数工具时可选 none;需要托管命令、代码与文件时选 openai_hosted;需要自有镜像、私网或计算资源时选 self_hosted,并自行负责连接与生命周期。

Session idle 是否代表任务成功?

不代表。要检查 agent.session.turn.completed、agent.session.turn.failed 或 agent.session.turn.cancelled,并检查输出与工具结果。即使 turn completed,也不保证每个工具都成功。

如何继续同一个 Agents API Session?

保存 session_id,先订阅该 Session 的事件流,再发送后续消息;每次逻辑提交生成并保存一个幂等键,超时重试时复用同一 session_id、消息和幂等键。

OpenAI 托管 Sandbox 的文件如何下载?

把需要保留的输出写入 /workspace/outputs。Turn 完成后,OpenAI 会把这些文件发布为不可变 Artifact,可通过 Session Artifacts API 下载;删除 Session 前仍应保存需要长期保留的文件。

Agents API 出错后可以直接重试吗?

先查询 Session、Turn、Items 与外部副作用,再决定重试。无效输入、权限或计费问题应先修复;限流、过载和临时错误应遵守 Retry-After、设置重试上限,并只继续未完成工作。

本文核对日期为 2026-11-02。Agents API 当前是 Beta,Header、SDK 命名空间、Session、环境、事件、限制与计费都可能变化;发布前请重新读取 Quickstart、Sessions、Sandbox、Security、Errors 与 Observability 官方文档。

先跑通一个 Session、一个只读任务

保存 Session、Turn、事件、工具结果和费用证据,再增加写操作、开放网络、自托管环境或自动重试。