openai-cli

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

OpenAI CLI

OpenAI CLI

Skill by ara.so — Devtools Skills collection.
The official CLI for the OpenAI REST API. Provides a command-line interface to interact with OpenAI's API endpoints including chat completions, embeddings, fine-tuning, and admin operations.
ara.so提供的技能——Devtools技能合集。
OpenAI REST API的官方CLI。提供命令行界面,用于与OpenAI的API端点交互,包括聊天补全、嵌入、微调以及管理操作。

Installation

安装

Homebrew (macOS/Linux)

Homebrew(macOS/Linux)

bash
brew install openai/tools/openai
bash
brew install openai/tools/openai

Go Install

Go 安装

bash
go install 'github.com/openai/openai-cli/cmd/openai@latest'
Ensure Go bin is in your PATH:
bash
export PATH="$PATH:$(go env GOPATH)/bin"
bash
go install 'github.com/openai/openai-cli/cmd/openai@latest'
确保Go的bin目录在你的PATH中:
bash
export PATH="$PATH:$(go env GOPATH)/bin"

Local Development

本地开发

Clone the repository and run locally:
bash
git clone https://github.com/openai/openai-cli.git
cd openai-cli
./scripts/run args...
克隆仓库并本地运行:
bash
git clone https://github.com/openai/openai-cli.git
cd openai-cli
./scripts/run args...

Configuration

配置

Set up your API credentials using environment variables:
bash
export OPENAI_API_KEY="sk-..."
export OPENAI_ADMIN_KEY="sk-admin-..."  # For admin endpoints
export OPENAI_ORG_ID="org-..."          # Optional
export OPENAI_PROJECT_ID="proj_..."     # Optional
Or use flags on each command:
bash
openai --api-key sk-... responses create --input "Hello"
使用环境变量设置你的API凭据:
bash
export OPENAI_API_KEY="sk-..."
export OPENAI_ADMIN_KEY="sk-admin-..."  # 用于管理端点
export OPENAI_ORG_ID="org-..."          # 可选
export OPENAI_PROJECT_ID="proj_..."     # 可选
或者在每个命令中使用参数:
bash
openai --api-key sk-... responses create --input "Hello"

Environment Variables

环境变量

VariablePurposeRequired
OPENAI_API_KEY
Standard API authenticationFor standard endpoints
OPENAI_ADMIN_KEY
Admin API authenticationFor admin endpoints
OPENAI_ORG_ID
Organization identifierNo
OPENAI_PROJECT_ID
Project identifierNo
OPENAI_WEBHOOK_SECRET
Webhook verificationNo
变量用途是否必填
OPENAI_API_KEY
标准API认证用于标准端点
OPENAI_ADMIN_KEY
管理API认证用于管理端点
OPENAI_ORG_ID
组织标识符
OPENAI_PROJECT_ID
项目标识符
OPENAI_WEBHOOK_SECRET
Webhook验证

Command Structure

命令结构

bash
openai [resource] <command> [flags...]
bash
openai [resource] <command> [flags...]

Key Commands

核心命令

Chat Completions

聊天补全

Create a chat completion:
bash
openai responses create \
  --input "Explain quantum computing in simple terms" \
  --model gpt-4
Stream responses:
bash
openai responses create \
  --input "Write a poem about coding" \
  --model gpt-4 \
  --stream
With system message and temperature:
bash
openai responses create \
  --input "What is recursion?" \
  --model gpt-4 \
  --system "You are a computer science teacher" \
  --temperature 0.7
创建聊天补全:
bash
openai responses create \
  --input "用简单的语言解释量子计算" \
  --model gpt-4
流式响应:
bash
openai responses create \
  --input "写一首关于编程的诗" \
  --model gpt-4 \
  --stream
携带系统消息和温度参数:
bash
openai responses create \
  --input "什么是递归?" \
  --model gpt-4 \
  --system "你是一名计算机科学老师" \
  --temperature 0.7

File Operations

文件操作

Upload a file:
bash
openai files create \
  --file @training_data.jsonl \
  --purpose fine-tune
List files:
bash
openai files list
Retrieve file content:
bash
openai files retrieve file-abc123
Delete a file:
bash
openai files delete file-abc123
上传文件:
bash
openai files create \
  --file @training_data.jsonl \
  --purpose fine-tune
列出文件:
bash
openai files list
获取文件内容:
bash
openai files retrieve file-abc123
删除文件:
bash
openai files delete file-abc123

Embeddings

嵌入

Generate embeddings:
bash
openai embeddings create \
  --input "The quick brown fox" \
  --model text-embedding-3-small
Multiple inputs:
bash
openai embeddings create \
  --input "First text" \
  --input "Second text" \
  --model text-embedding-3-large
生成嵌入:
bash
openai embeddings create \
  --input "The quick brown fox" \
  --model text-embedding-3-small
多输入:
bash
openai embeddings create \
  --input "First text" \
  --input "Second text" \
  --model text-embedding-3-large

Fine-tuning

微调

Create a fine-tuning job:
bash
openai fine-tuning jobs create \
  --training-file file-abc123 \
  --model gpt-3.5-turbo
List fine-tuning jobs:
bash
openai fine-tuning jobs list
Check job status:
bash
openai fine-tuning jobs retrieve ftjob-abc123
Cancel a job:
bash
openai fine-tuning jobs cancel ftjob-abc123
创建微调任务:
bash
openai fine-tuning jobs create \
  --training-file file-abc123 \
  --model gpt-3.5-turbo
列出微调任务:
bash
openai fine-tuning jobs list
查看任务状态:
bash
openai fine-tuning jobs retrieve ftjob-abc123
取消任务:
bash
openai fine-tuning jobs cancel ftjob-abc123

Admin Operations

管理操作

Usage statistics:
bash
openai admin:organization:usage completions \
  --start-time 1735689600 \
  --end-time 1735776000 \
  --bucket-width 1d
使用统计:
bash
openai admin:organization:usage completions \
  --start-time 1735689600 \
  --end-time 1735776000 \
  --bucket-width 1d

File Handling

文件处理

Passing Files as Arguments

传递文件作为参数

Use
@
prefix for file paths:
bash
openai responses create --arg @input.txt
Within JSON/YAML:
bash
openai <command> --arg '{image: "@image.jpg"}'
bash
openai <command> <<YAML
arg:
  image: "@abe.jpg"
YAML
使用
@
前缀表示文件路径:
bash
openai responses create --arg @input.txt
在JSON/YAML中:
bash
openai <command> --arg '{image: "@image.jpg"}'
bash
openai <command> <<YAML
arg:
  image: "@abe.jpg"
YAML

Explicit Encoding

显式编码

Force string encoding:
bash
openai <command> --arg @file://myfile.txt
Force base64 encoding:
bash
openai <command> --arg @data://image.png
Absolute paths:
bash
openai <command> --arg @file:///tmp/file.txt
强制字符串编码:
bash
openai <command> --arg @file://myfile.txt
强制base64编码:
bash
openai <command> --arg @data://image.png
绝对路径:
bash
openai <command> --arg @file:///tmp/file.txt

Escaping @ Signs

转义@符号

To pass a literal
@
character:
bash
openai <command> --username '\@username'
要传递字面量
@
字符:
bash
openai <command> --username '\@username'

Output Formatting

输出格式化

Format Options

格式选项

Control output format with
--format
:
bash
undefined
使用
--format
控制输出格式:
bash
undefined

Pretty-printed (default for TTY)

美观打印(TTY默认)

openai responses create --input "Hello" --format pretty
openai responses create --input "Hello" --format pretty

Raw JSON

原始JSON

openai responses create --input "Hello" --format json
openai responses create --input "Hello" --format json

JSONL (one JSON object per line)

JSONL(每行一个JSON对象)

openai responses create --input "Hello" --format jsonl
openai responses create --input "Hello" --format jsonl

YAML

YAML

openai responses create --input "Hello" --format yaml
openai responses create --input "Hello" --format yaml

Raw response body

原始响应体

openai responses create --input "Hello" --format raw
undefined
openai responses create --input "Hello" --format raw
undefined

Data Transformation

数据转换

Use GJSON syntax to extract specific fields:
bash
undefined
使用GJSON语法提取特定字段:
bash
undefined

Get just the message content

仅获取消息内容

openai responses create
--input "Hello"
--transform "choices.0.message.content"
openai responses create
--input "Hello"
--transform "choices.0.message.content"

Get multiple fields

获取多个字段

openai responses create
--input "Hello"
--transform "{id: id, content: choices.0.message.content}"

Transform errors:

```bash
openai responses create \
  --input "Hello" \
  --format-error json \
  --transform-error "error.message"
openai responses create
--input "Hello"
--transform "{id: id, content: choices.0.message.content}"

转换错误信息:

```bash
openai responses create \
  --input "Hello" \
  --format-error json \
  --transform-error "error.message"

Global Flags

全局参数

bash
--api-key           # API key (or use OPENAI_API_KEY)
--admin-api-key     # Admin key (or use OPENAI_ADMIN_KEY)
--organization      # Org ID (or use OPENAI_ORG_ID)
--project           # Project ID (or use OPENAI_PROJECT_ID)
--base-url          # Custom API endpoint
--debug             # Enable debug logging with HTTP details
--version, -v       # Show CLI version
--help              # Show help for command
--format            # Output format (auto, explore, json, jsonl, pretty, raw, yaml)
--format-error      # Error output format
--transform         # GJSON transform for data output
--transform-error   # GJSON transform for error output
bash
--api-key           # API密钥(或使用OPENAI_API_KEY)
--admin-api-key     # 管理密钥(或使用OPENAI_ADMIN_KEY)
--organization      # 组织ID(或使用OPENAI_ORG_ID)
--project           # 项目ID(或使用OPENAI_PROJECT_ID)
--base-url          # 自定义API端点
--debug             # 启用包含HTTP详情的调试日志
--version, -v       # 显示CLI版本
--help              # 显示命令帮助
--format            # 输出格式(auto, explore, json, jsonl, pretty, raw, yaml)
--format-error      # 错误输出格式
--transform         # 数据输出的GJSON转换
--transform-error   # 错误输出的GJSON转换

Common Patterns

常见使用模式

Interactive Chat Session

交互式聊天会话

bash
while true; do
  read -p "You: " input
  openai responses create \
    --input "$input" \
    --model gpt-4 \
    --format pretty
done
bash
while true; do
  read -p "你: " input
  openai responses create \
    --input "$input" \
    --model gpt-4 \
    --format pretty
done

Batch Processing

批量处理

Process multiple inputs from a file:
bash
while IFS= read -r line; do
  openai responses create \
    --input "$line" \
    --model gpt-3.5-turbo \
    --format json >> results.jsonl
done < inputs.txt
处理文件中的多个输入:
bash
while IFS= read -r line; do
  openai responses create \
    --input "$line" \
    --model gpt-3.5-turbo \
    --format json >> results.jsonl
done < inputs.txt

JSON Input

JSON输入

Pass structured data:
bash
openai responses create \
  --input "Translate to French" \
  --model gpt-4 \
  --max-tokens 100 \
  --temperature 0.3
传递结构化数据:
bash
openai responses create \
  --input "翻译成法语" \
  --model gpt-4 \
  --max-tokens 100 \
  --temperature 0.3

Piping Data

管道传递数据

bash
echo "Summarize this text" | openai responses create \
  --input "$(cat)" \
  --model gpt-4
Or:
bash
cat document.txt | openai responses create \
  --input "Summarize: $(cat -)" \
  --model gpt-4
bash
echo "总结这段文字" | openai responses create \
  --input "$(cat)" \
  --model gpt-4
或者:
bash
cat document.txt | openai responses create \
  --input "总结:$(cat -)" \
  --model gpt-4

Image Analysis

图像分析

bash
openai responses create \
  --input '{text: "What is in this image?", image: "@photo.jpg"}' \
  --model gpt-4-vision-preview
bash
openai responses create \
  --input '{text: "这张图片里有什么?", image: "@photo.jpg"}' \
  --model gpt-4-vision-preview

Custom Base URL

自定义基础URL

For Azure or custom endpoints:
bash
openai --base-url https://custom.openai.azure.com/v1 \
  responses create \
  --input "Hello" \
  --model gpt-4
针对Azure或自定义端点:
bash
openai --base-url https://custom.openai.azure.com/v1 \
  responses create \
  --input "Hello" \
  --model gpt-4

Debugging

调试

Enable debug mode to see full HTTP requests/responses:
bash
openai --debug responses create --input "Test"
Warning: Debug logs include request/response bodies which may contain sensitive data.
启用调试模式查看完整的HTTP请求/响应:
bash
openai --debug responses create --input "Test"
警告:调试日志包含请求/响应体,可能包含敏感数据。

Troubleshooting

故障排除

Command Not Found

命令未找到

Ensure Go bin is in your PATH:
bash
echo $PATH | grep "$(go env GOPATH)/bin"
确保Go的bin目录在你的PATH中:
bash
echo $PATH | grep "$(go env GOPATH)/bin"

If not found:

如果未找到:

export PATH="$PATH:$(go env GOPATH)/bin"
undefined
export PATH="$PATH:$(go env GOPATH)/bin"
undefined

Authentication Errors

认证错误

Verify API key is set:
bash
echo $OPENAI_API_KEY
验证API密钥已设置:
bash
echo $OPENAI_API_KEY

Should output: sk-...

应输出:sk-...


Check key validity:

```bash
openai responses create --input "test" --model gpt-3.5-turbo

检查密钥有效性:

```bash
openai responses create --input "test" --model gpt-3.5-turbo

File Not Found Errors

文件未找到错误

Use absolute paths or verify relative paths:
bash
undefined
使用绝对路径或验证相对路径:
bash
undefined

Absolute path

绝对路径

openai files create --file @/full/path/to/file.jsonl --purpose fine-tune
openai files create --file @/full/path/to/file.jsonl --purpose fine-tune

Verify file exists

验证文件存在

ls -la @file.jsonl
undefined
ls -la @file.jsonl
undefined

Rate Limiting

速率限制

Add delays between requests:
bash
for i in {1..10}; do
  openai responses create --input "Request $i"
  sleep 1
done
在请求之间添加延迟:
bash
for i in {1..10}; do
  openai responses create --input "Request $i"
  sleep 1
done

Model Not Available

模型不可用

List available models (if endpoint exists):
bash
openai models list
Check model name spelling and access permissions.
列出可用模型(如果端点存在):
bash
openai models list
检查模型名称拼写和访问权限。

Output Not Formatted

输出未格式化

Force format explicitly:
bash
openai responses create --input "Hello" --format json
Check if output is being piped (auto-detection may choose raw format):
bash
openai responses create --input "Hello" --format pretty | less
显式强制格式:
bash
openai responses create --input "Hello" --format json
检查输出是否被管道传输(自动检测可能选择原始格式):
bash
openai responses create --input "Hello" --format pretty | less

Linking Custom SDK Versions

链接自定义SDK版本

For development, link against different Go SDK versions:
bash
undefined
开发时,链接不同的Go SDK版本:
bash
undefined

Link to specific version

链接到特定版本

./scripts/link github.com/openai/openai-go@v1.2.3
./scripts/link github.com/openai/openai-go@v1.2.3

Link to local SDK copy

链接到本地SDK副本

./scripts/link ../openai-go
./scripts/link ../openai-go

Default (../openai-go)

默认(../openai-go)

./scripts/link
undefined
./scripts/link
undefined

Version Information

版本信息

Check CLI version:
bash
openai --version
检查CLI版本:
bash
openai --version

or

openai -v

Get help:

```bash
openai --help
openai responses --help
openai responses create --help
openai -v

获取帮助:

```bash
openai --help
openai responses --help
openai responses create --help