Gemini API CLI

Gemini API CLI (gemini-api) 是一款无状态、零依赖的命令行客户端,专为具有 shell 访问权限的 AI 智能体而构建(也可通过脚本和 CI 使用)。然后,您的编码代理可以生成文本和媒体、分析文件,并将任务委托给 Gemini 代管式代理。它可与 Antigravity、Claude Code、Codex、Cursor、OpenClaw、Hermes 或任何 shell 环境搭配使用。

每个功能都作为标准 shell 命令在 Interactions API 上运行。从代理子进程、终端或 CI 流水线运行相同的命令:

# 1. Install on macOS or Linux
curl -fsSL https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.sh | bash

# 2. Set your API key
export GEMINI_API_KEY="YOUR_API_KEY"

# 3. Generate media, analyze a file, or launch a background managed agent
gemini-api image "Minimalist isometric icon of a cloud database" --out ./assets/db-icon.jpg
gemini-api analyze -i ./docs/quarterly-report.pdf "Summarize the key findings in three bullets."
gemini-api agent run "Compare WebRTC SFU architectures and cite sources" \
  --agent deep-research-preview-04-2026 \
  --background \
  --stream=false

选择合适的 Gemini 工具

当代理或脚本需要直接从 shell 调用 Gemini,而无需向项目添加 SDK 代码时,请使用 gemini-api。在将 Gemini 构建到应用中时,请使用 SDK 和编码智能体设置:

工具 作用 适用情形
Gemini API CLI (gemini-api) 从任何 shell 调用 Gemini 模型和代管式代理。 您的编码智能体、Shell 脚本或 CI 作业需要生成式媒体、分析文件或运行后台研究智能体,且不依赖于任何项目。
Google GenAI SDK 将 Gemini 客户端库导入 Python、TypeScript、JavaScript、Go、Java 或 C# 代码。 您正在将 Gemini 功能构建到应用、后端服务或实时 Live API 会话中。
Gemini Docs MCP 和技能 为编码智能体提供实时文档搜索和最新 SDK 规则。 您的编码智能体正在编写导入 Google GenAI SDK 的应用代码。

运作方式

原始 REST 调用和交互式 CLI 通常会导致编码智能体出现问题。Base64 媒体会填满上下文窗口,交互式提示会阻塞子进程,而过时的训练数据会导致幻觉标志。

以下四项设计选择可确保 gemini-api 能够可靠地为智能体提供支持:

  • 离线架构查找:传递 --usage 以输出命令树(采用 KDL 格式),或传递 --schema 以输出 --body 请求的 JSON 架构。
  • 磁盘上的文件,stdout 上的路径:媒体和转写命令会将文件写入磁盘,并仅输出路径,从而使二进制数据不出现在上下文中。
  • 试运行和结构化输出: --dry-run 会验证输入、隐去凭据,并离线预览 HTTP 请求。传递 -o json、-o toon 或 --jq 以获得机器可读的输出。添加 --agent-mode 以在 stderr 上返回结构化 JSON 错误,并检查退出代码以处理失败。除非您传递 --interactive,否则命令绝不会提示。
  • 默认无状态:命令不会保留隐藏的本地状态。使用 --previous-interaction-id、上传的 files/<id> URI 或后台互动 ID 明确串联多步工作。

使用 -o json 时,媒体命令仍会将文件写入磁盘,并将元数据输出到 stdout:

{
  "kind": "image",
  "mime_type": "image/jpeg",
  "path": "/path/to/project/assets/db-icon.jpg",
  "response_id": "v1_...",
  "size_bytes": 2914159,
  "status": "completed"
}

开始使用

安装 CLI,将 gemini-api 放入 PATH,设置 GEMINI_API_KEY,并向编程智能体添加使用规则。

1. 安装二进制文件

macOS 和 Linux

curl -fsSL https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.sh | bash

如需安装特定版本,请将 GEMINI_VERSION 设置为版本标记:

curl -fsSL https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.sh | GEMINI_VERSION=<release-tag> bash

Windows (PowerShell)

iwr -useb https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.ps1 | iex

Go

go install github.com/google-gemini/gemini-api-cli/cmd/gemini-api@latest

预构建二进制文件

从 GitHub 版本下载适用于 macOS、Linux 和 Windows 的版本化归档,并将 gemini-api 放在 PATH 上。使用预构建的归档文件在 Docker 映像和 CI 中固定确切版本。

2. 配置身份验证并进行验证

在 Google AI Studio 中创建 API 密钥(请参阅 API 密钥)。在 shell 和代理的子进程环境中设置 GEMINI_API_KEY:

export GEMINI_API_KEY="YOUR_API_KEY"

在本地工作站上,您可以将密钥保存在操作系统密钥链(macOS 密钥链、Linux Secret Service 或 Windows Credential Manager)中。传递 --no-keyring 以将密钥存储在 ~/.config/gemini-api/config.yaml 中:

# Save to your OS keychain (or run gemini-api configure --interactive)
gemini-api configure --api-key "YOUR_API_KEY"

# Check the active credential source, then preview a request offline
gemini-api whoami
gemini-api generate "Confirm CLI setup in one sentence." --dry-run

3. 向智能体发出指令

将此代码段添加到项目的 AGENTS.md、CLAUDE.md、.cursorrules 或系统提示中,以便编码智能体了解如何使用 gemini-api:

## Gemini API CLI (`gemini-api`)

You have access to `gemini-api` through the shell. Use it to generate text or media (images, speech, music, video), analyze documents and recordings, or run and manage Gemini managed agents.

1. Run `gemini-api --help` or `gemini-api --usage` to choose a command, and `gemini-api <command> --schema` before building a `--body` JSON payload.
2. Preview unfamiliar or complex calls offline with `--dry-run -o json`.
3. For a single JSON result or `--jq` filtering on `generate` or `agent run`, pass `--stream=false -o json`.
4. To chain multi-step workflows, capture the output paths that media and transcription commands print to stdout, and the `id` values returned by `generate` or `agent run`.

然后,照常向编码智能体发出提示:

Build a landing page for our developer tool. Use Gemini to generate a hero
illustration and a 15-second welcome voiceover, and start a background Deep
Research agent to compare competing CLI onboarding flows. Wire the assets and
findings into the page.

命令

运行 gemini-api --help 可列出所有命令,运行 gemini-api explore 可交互式浏览这些命令。

群组 命令 作用
创建 image 生成或编辑图片 (-i),写入 JPEG 文件,并输出其路径。
创建 tts 合成 24 kHz 单声道 WAV 语音(一个或两个说话者),并输出路径。
创建 music 生成音乐曲目或循环,写入音频文件,并输出其路径。
创建 video 生成或修改 MP4 剪辑,并等待操作完成(--async 会立即返回一个 ID)。
创建 generate 生成文本并将其流式传输到 stdout(--stream=false 会返回一个完整的结果)。
了解 analyze 回答有关 PDF、图片、音频、视频、CSV 和文本文件或公开 YouTube 网址的问题。
了解 transcribe 写入带有说话者标签和时间戳的转写文稿(md、text、json 或 srt),并输出路径。
管理代理 agent 运行托管式代理(run、status、cancel、delete-interaction)并管理自定义代理定义(create、list、get、delete)。
管理代理 environments、credentials、webhooks、triggers 为托管代理配置沙盒环境、存储的凭据、Webhook 传送和预定运行。
设置和文件 configure、auth、whoami 配置凭据和默认值,并显示有效的身份验证状态。
设置和文件 files 在 Files API 中上传、列出、检查和删除文件。
设置和文件 models 列出可用模型。

Workflows

每个命令默认使用适合其任务的模型。传递 --model (-m) 以选择其他模型。运行 gemini-api models 可列出可用选项。

图片生成和修改

构建 Web 或移动界面的智能体可以使用 Nano Banana 生成占位符、图标和主打图片。使用 -i 传回生成的路径,以修改图片:

# Generate a 16:9 image at 2K resolution (512, 1K, 2K, or 4K) and capture its path
HERO_PATH=$(gemini-api image "Friendly robot mascot in a sunlit workshop, space on left for headline" \
  --aspect-ratio 16:9 \
  --image-size 2K \
  --out ./public/images/hero.jpg)

# Edit the generated image
gemini-api image "Add a winter scarf and soft snowfall outside the window" \
  -i "$HERO_PATH" \
  --out ./public/images/hero-winter.jpg

多次传递 -i 以组合参考图片,例如角色和样式指南。

语音合成

gemini-api tts 可合成 24 kHz WAV 音频,用于界面提示、无障碍预览和语音导览。默认语音为 Kore;请使用 --voice 选择其他语音。对于双人对话,请在提示中为每个轮次添加标签,并将说话者映射到声音:

gemini-api tts "Build succeeded. All integration tests passed." \
  --voice Aoede \
  --out ./public/audio/build-ok.wav

gemini-api tts "Alice: Welcome to the release walkthrough! Bob: Let's look at what shipped today." \
  --multi-speaker "Alice=Kore,Bob=Puck" \
  --out ./public/audio/release-intro.wav

音乐和视频

使用 Lyria 创作原创曲目,并使用 Gemini Omni 生成 MP4 片段:

gemini-api music "Warm ambient synth and acoustic guitar background loop, 95 BPM" \
  --out ./public/audio/bg-loop.mp3

gemini-api video "A drone shot of a mountain landscape at sunrise." \
  --aspect-ratio 16:9 \
  --resolution 1080p \
  --out ./public/video/mountain-sunrise.mp4

默认情况下,video 命令会等待生成完成,并将 MP4 文件写入磁盘。传递 --async 以立即返回互动 ID,然后稍后运行 gemini-api video --resume <id> --out <path>。传递 -i 可为现有图片添加动画效果。

文本生成

gemini-api generate 将文本流式传输到 stdout:

gemini-api generate "Write a one-paragraph welcome message for new users of a note-taking app."

添加 --stdin,将文本通过管道传输到提示中。传递 --previous-interaction-id 以继续之前的互动。

文档分析和转写

analyze 可回答有关 PDF、电子表格、屏幕截图、音频和视频文件以及公开 YouTube 网址的问题。transcribe 会将格式化转写内容(md、text、json 或 srt)写入磁盘:

gemini-api analyze -i ./docs/product-brief.pdf "List the open questions and who owns each one." > open-questions.md

gemini-api transcribe -i ./fixtures/customer-call.mp4 --format srt --out ./fixtures/customer-call.srt

多次将 -i 传递给 analyze 以比较文件,例如前后屏幕截图。

gemini-api 以内嵌方式发送本地文件,文件大小上限为 14 MB(base64 编码后为 20 MB)。 对于较大的文件,请使用 files upload --wait 上传一次,然后重复使用返回的 files/<id> URI:

FILE_URI=$(gemini-api files upload ./recordings/all-hands.mp4 --wait)

gemini-api analyze -i "$FILE_URI" "List action items with owners and timestamps."
gemini-api transcribe -i "$FILE_URI" --format json --out ./recordings/all-hands.json

运行和管理智能体

您的编码智能体可以将多步研究或沙盒化任务委托给 Gemini 托管式智能体,例如 Deep Research 智能体。传递 --background --stream=false 可立即获取互动 ID,而无需保持数据流处于打开状态:

# Launch a Deep Research job in the background and capture its interaction ID
RESEARCH_ID=$(gemini-api agent run "Compare open-source vector index benchmarks and cite primary papers." \
  --agent deep-research-preview-04-2026 \
  --background \
  --stream=false \
  --jq '.id')

# Check status or fetch the finished result while continuing other work
gemini-api agent status "$RESEARCH_ID" -o json

运行 gemini-api agent cancel <id> 可停止正在运行的作业。您还可以使用 agent run 在远程沙盒中启动 Antigravity 智能体,或使用 agent create、list、get 和 delete 管理自定义智能体。请参阅环境,了解如何配置智能体沙盒。

自定义请求正文

对于没有专用标志的选项,请使用 --body(内嵌或作为 @file.json)传递原始 Interactions API JSON 载荷。传递 --body 以设置 response_format 架构、函数调用工具、generation_config 或 "store": false。请先运行 gemini-api <command> --schema,查看有效字段:

# Inspect the JSON Schema for the request body
gemini-api generate --schema > generate-schema.json

# Return schema-constrained JSON and skip storing the interaction
cat logs.txt | gemini-api generate "Extract every error message from these logs." \
  --stdin \
  --body '{
    "response_format": {
      "type": "text",
      "mime_type": "application/json",
      "schema": {
        "type": "object",
        "properties": {"errors": {"type": "array", "items": {"type": "string"}}},
        "required": ["errors"]
      }
    },
    "store": false
  }'

--body 与命令标志合并。如果两者设置了相同的键,该命令会失败并返回退出代码 2,以便冲突的输入快速失败。

退出代码

每个命令都会返回一个类型化退出代码,以便脚本和代理可以处理故障,而无需解析错误文本。例如,3 表示身份验证问题,2 表示命令语法无效:

代码 含义
0 命令执行成功。
1 运行时或 API 错误,例如网络故障、速率限制或后台作业失败。
2 使用或验证错误,例如未知标志、缺少输入或 --body 键重复。
3 身份验证或授权失败,例如 API 密钥或令牌缺失或无效。

运行 gemini-api --help-global,列出每个命令共享的全局标志(身份验证、输出、网络和诊断)。

限制

  • 流式传输命令(generate 和 agent run)与 -o json 或 --jq 结合使用时,需要 --stream=false 才能返回单个 JSON 响应对象。
  • 内嵌 -i 文件输入上限为 14 MB 的原始文件数据(20 MB 请求载荷,包括 base64 编码)。使用 gemini-api files upload 上传大型文件。 Files API 会在 48 小时后删除上传的文件。
  • gemini-api 支持标准 HTTP 请求、SSE 流式传输和异步轮询,不支持双向 WebSocket。对于实时语音和视频流式传输,请将 Live API 与 Google GenAI SDK 搭配使用。

后续步骤