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 搭配使用。