OpenAI CLI – OpenAI 官方推出的接口批量调用工具

AI工具2天前更新 老高
9 0

OpenAI CLI 是一款由 OpenAI 于 2026 年 5 月推出的官方命令行工具,主要用于把 Responses、Files、Batches 等接口能力转成终端里可组合的命令行操作,支持按资源分层的子命令与管道友好的结构化输出,适用于接口联调、批量任务处理与脚本集成等场景。

基础信息内容
产品定位OpenAI REST 接口的官方命令行客户端
出品方OpenAI
发布时间2026 年 5 月 1 日
开源协议Apache-2.0
实现语言Go;仅源码构建需 Go 1.26 或以上
命令结构openai <resource> <command> [flags],兼容旧写法
输出格式默认可读文本,可切 json、jsonl、yaml 与 raw
分发方式预编译二进制、Homebrew、go install 三种
OpenAI CLI 官方页面截图

OpenAI CLI 的核心能力

OpenAI CLI 的设计思路是把 REST 接口原样搬到终端:接口有什么资源,命令就有什么层级。它不替用户封装业务逻辑,只负责把请求发出去、把结果按需要的形式吐出来。

命令层级与接口资源对齐

命令写作 openai <resource> [subresource…] <command> [flags…],资源层级和 REST 的路径一一对应,看文档即可推命令。老式冒号写法如 openai admin:organization:usage completions 仍然可用,旧脚本不必改写。 CLI 不做编排:需要常驻终端的编码智能体,是站内 Command Code 覆盖的那类需求。

给人看的默认值,给机器看的开关

成功的 JSON 响应默认渲染成可读文本,即便输出接进管道也不改这个默认——这点和很多 CLI 不同,避免了「终端里看着舒服、脚本里解析报错」的两难。需要解析时显式加 --format json 或 jsonl。

文件参数的两套写法

二进制上传直接给路径,不做任何猜测;JSON 输入类参数可以用 @path 从本地文件读值。两种写法分开,是为了让「上传一个文件」和「把文件内容当参数」在语义上不混淆。 它本身不带技能或插件体系,想做这类扩展要走站内 Skill Zoo 那一路。

调试信息按需分级

--debug 打印每次重试尝试的 HTTP 耗时,--debug-body 追加脱敏后的 JSON 预览,--debug-sse 与 --debug-event-timing 针对流式响应给出有边界的诊断。分级的意义是排障时不必一次暴露全部请求内容。

自带更新与关闭开关

自动更新行为取决于安装方式:通过官方安装程序配置的受管理版本,可在符合条件的交互式运行里自动更新;go install 与部分系统包仍采用更新提示,Homebrew 与 Linux 系统包则可通过官方辅助程序启用独立的自动更新副本。固定版本的生产环境可用两个开关分别控制:OPENAI_CLI_NO_AUTO_UPDATE 只停自动安装并保留提示,OPENAI_CLI_NO_UPDATE_CHECK 连检查一起停。

OpenAI CLI 与同类终端工具的对比

下表按定位、主要任务、命令结构、计费方式等维度,把 OpenAI CLI 与另外两个同样跑在终端里的工具放在一起对照。

对比维度OpenAI CLICodex CLIGemini CLI
定位官方 REST 接口的命令行客户端终端内运行的轻量编码智能体把 Gemini 接进终端的开源智能体
出品方OpenAIOpenAIGoogle
主要任务调某个具体接口,或把接口操作写进脚本读写代码、跑命令、实现或调试一处改动在终端里完成由 Gemini 驱动的任务
命令结构按 REST 资源分层,资源即命令以智能体任务为核心,支持交互与非交互支持交互会话,也提供非交互执行
输出格式可读文本,或 json、jsonl、yaml、raw以对话与改动结果为主以对话与工具调用为主
安装方式预编译二进制、Homebrew、go install以其官方文档为准以其官方文档为准
计费方式随 API 用量结算随所用模型与账号套餐随所用账号与配额
  • 表格内数据来源:OpenAI CLI 取官方仓库 README 与 LICENSE;Codex CLI 取 openai/codex 仓库自述与 Apache-2.0 标注;Gemini CLI 取 google-gemini/gemini-cli 仓库自述与 Apache-2.0 标注。安装方式与配额细节未逐项实测,标为以其官方文档为准。三者均以 Apache-2.0 发布,协议一致故不单列成行。
  • 产品对比简述:OpenAI CLI 在定位上是接口客户端,Codex CLI 在定位上是终端智能体、在命令结构上以任务为核心兼有非交互执行;Gemini CLI 在命令结构上同样支持交互与非交互模式。

同样在终端里跑,站内的 cmux 解决的是另一个问题:多个会话并行时怎么不打架。

OpenAI CLI 的应用场景与适用人群

凡是「要把一次接口调用变成一行命令」的场合,它都比写临时脚本省事:

  • 日志排查:把错误日志整理成模型输入,经 Responses API 归类后再把结构化结果重定向到文件,适合临时排查与批量处理。
  • 批处理任务:提交 JSONL 请求文件后等批次结束,再把结果目录拉回本地。
  • 素材生产:批量出图或转写语音,产物按目录落盘,路径直接打印出来。
  • 接口联调:换模型、换参数只改命令行开关,不必重新打包一个测试程序。
  • 定时任务:单二进制放进容器或 crontab,不依赖 Python 或 Node 运行时。

适用人群:适合已经把运维或数据处理放在终端里的工程与数据岗,也适合需要给内部平台补一层脚本化入口的后端团队;全部操作都走图形界面的人用不上它。图像生成这类具体能力可对照站内 Qwen-Image-2.1 看模型侧的做法。

OpenAI CLI 的使用方法

只有终端这一扇门,所以下面是一条连续流程,从装到用再到排错。

  1. 安装:从 GitHub Releases 取对应系统的压缩包解压后放进 PATH,或先跑 brew update 再执行 brew install --cask openai/tools/openai,并按官方说明启用自动更新;或 go install 自行编译。
  2. 认证:跑 openai help setup 按向导录入密钥;写给脚本用的版本则通过环境变量 OPENAI_API_KEY 传入,管理端接口另用 OPENAI_ADMIN_KEY。
  3. 试通一次:执行 openai responses create --model gpt-5.5 --input “Say this is a test”,确认返回正常再往下走。
  4. 接进脚本:需要解析就加 --format jsonl,需要抽字段就加 --transform 配 --raw-output,例如 openai models list --format jsonl | jq ‘.id’。
  5. 处理文件与批次:用 openai files upload 上传,用 openai batches create 提交并用 openai batches wait 等待结果落盘。
  6. 排错:先看退出码,再看 stderr 摘要;要明细就加 --format-error json,要看耗时加 --debug。

三点提醒:默认输出是给人读的,脚本里务必显式指定 --format,否则格式一变解析就断;从不可信来源接收 JSON 或 YAML 时先设 OPENAI_UNTRUSTED_STDIN=1,避免输入触发本地文件读取;固定版本的生产环境建议关掉更新检查,别让自动更新在无人值守时改掉行为。

OpenAI CLI 的项目地址

  • GitHub 仓库:https://github.com/openai/openai-cli
  • 官方 API 文档:https://platform.openai.com/docs

OpenAI CLI 的价格方案

工具本体以 Apache-2.0 发布,安装与运行都不产生费用,成本全部落在被调用的接口上:按所选模型的输入输出 token 结算,具体单价随官方定价页调整,本文不列单价以免过期。

不同任务采用不同计费口径:文本模型通常按输入与输出 Token 计费;图像模型按具体模型、输入输出内容与生成规格计算;语音任务则依模型与接口采用 Token 或音频时长等方式。批处理 API 另有独立价格优惠,通常低于同步调用,但并非所有模型都支持。做预算时要按任务类型分别估,实际成本以对应模型的官方定价说明为准。

省钱的着力点在调用结构上,不在命令本身。批量任务走批次通道、能用小模型的环节不要上大模型、失败重试加退避避免重复计费,这三件事对账单的影响远大于任何命令行技巧。站内对 API 定价结构 的拆解可以作为对照口径。

先用小样本做一轮,量出单次任务的 token 消耗,再乘业务量做预算——这比凭经验拍一个数更可靠,也便于在模型换代时快速重算。

用量大的团队可以顺手用 openai admin organization usage 拉出组织级用量,按天看趋势,比自己记流水账准。

OpenAI CLI 的常见问题

它和 Codex CLI 有什么区别

分工按官方说明:openai 用来调用某个具体 API,或者把接口操作放进脚本;codex 用来让编码智能体在项目里干活,读写代码、跑命令、实现或调试改动。要脚本化选前者,要改代码选后者。两者装在同一台机器上不冲突,命令名不同,认证各走各的。

必须装 Go 才能用吗

不必须。官方为 macOS、Linux、Windows 提供预编译二进制,解压放进 PATH 即可;Homebrew 也能直接装。只有选择 go install 从源码构建时才需要 Go 1.26 或以上,这是当前仓库源码构建要求,不是运行预编译二进制的最低环境。更新行为也按安装方式区分:官方受管理版本可自动更新,go install 与便携式包保留更新提示。

默认输出为什么在管道里还是文本

这是官方有意为之:默认给人读,管道里也不偷偷换成机器格式,避免同一行命令在终端和脚本里得到两种结果。需要解析就显式加 --format json 或 jsonl。忘记加参数时最典型的表现是 jq 报解析错误,而不是命令本身失败——命令成功但输出格式不对,退出码仍然可能是 0。

密钥怎么放才安全

脚本里用环境变量或密钥管理服务注入 OPENAI_API_KEY,不要写死在命令里,命令会进 shell 历史。管理端接口用的是另一个键 OPENAI_ADMIN_KEY,权限更高,不要和普通调用混用。在共享机器上,--debug-body 与错误明细都可能带出敏感内容,外发前先脱敏。

能替代 SDK 吗

定位不同。SDK 给的是编程语言里的类型与方法,适合嵌进应用逻辑;CLI 给的是命令与退出码,适合脚本、流水线与人手排障。应用里做集成仍然应该用 SDK;反过来说,一次性查数据、跑批、验证参数这类事,起一个 CLI 比写一段 SDK 代码快得多。

© 版权声明

相关文章