Providers
Google(Gemini)
Google Plugin は、Google AI Studio を通じた Gemini モデルへのアクセスに加えて、画像生成、メディア理解(画像/音声/動画)、テキスト読み上げ、Gemini Grounding によるウェブ検索を提供します。
- プロバイダー:
google - 認証:
GEMINI_API_KEYまたはGOOGLE_API_KEY - API: Google Gemini API
- ランタイムオプション:
agentRuntime.id: "google-gemini-cli"は Gemini CLI OAuth を再利用しながら、モデル参照を正規のgoogle/*として維持します。
はじめに
使用する認証方法を選択し、セットアップ手順に従います。
API キー
最適な用途: Google AI Studio を通じた標準的な Gemini API アクセス。
API キーを取得する
Google AI Studio で無料のキーを作成します。
オンボーディングを実行する
openclaw onboard --auth-choice gemini-api-keyまたは、キーを直接渡します。
openclaw onboard --non-interactive \ --mode local \ --auth-choice gemini-api-key \ --gemini-api-key "$GEMINI_API_KEY"デフォルトモデルを設定する
{ agents: { defaults: { model: { primary: "google/gemini-3.1-pro-preview" }, }, },}モデルが利用可能か確認する
openclaw models list --provider googleAPI キーが設定されている場合、OpenClaw は Gemini models.list API から Google AI Studio のテキストモデルカタログを更新します。そのため、新しくリリースされた Gemini 3 Pro、Flash、Flash-Lite の各バリアントは、OpenClaw のリリースを待たずに openclaw models list --provider google に表示されます。検出を利用できない場合、OpenClaw は同梱のフォールバックカタログを維持します。
Gemini CLI (OAuth)
最適な用途: 別個の API キーを使用せず、Gemini CLI OAuth を通じて Google アカウントでサインインする場合。
Gemini CLI をインストールする
ローカルの gemini コマンドが PATH 上で使用可能である必要があります。
# Homebrewbrew install gemini-cli # または npmnpm install -g @google/gemini-cliOpenClaw は、一般的な Windows/npm レイアウトを含め、Homebrew インストールとグローバル npm インストールの両方をサポートします。
OAuth でログインする
openclaw models auth login --provider google-gemini-cli --set-defaultモデルが利用可能か確認する
openclaw models list --provider google- デフォルトモデル:
google/gemini-3.1-pro-preview - ランタイム:
google-gemini-cli - エイリアス:
gemini-cli
Gemini 3.1 Pro の Gemini API モデル ID は gemini-3.1-pro-preview です。OpenClaw は利便性のため、短い google/gemini-3.1-pro をエイリアスとして受け入れ、プロバイダー呼び出しの前に正規化します。
環境変数:
OPENCLAW_GEMINI_OAUTH_CLIENT_ID/GEMINI_CLI_OAUTH_CLIENT_IDOPENCLAW_GEMINI_OAUTH_CLIENT_SECRET/GEMINI_CLI_OAUTH_CLIENT_SECRET
オンボーディングの自動検出では、既存の Gemini CLI ログインが一覧表示されますが、Gemini CLI にはツールを使用しないプローブがないため、自動テストは実行されません。続行するには、Gemini CLI OAuth または Gemini API キーを選択します。
google-gemini-cli/* モデル参照は、レガシー互換性のためのエイリアスです。ローカルで Gemini CLI を実行する場合、新しい設定では google/* モデル参照と google-gemini-cli ランタイムを使用してください。
機能
| 機能 | サポート状況 |
|---|---|
| チャット補完 | はい |
| 画像生成 | はい |
| 音楽生成 | はい |
| テキスト読み上げ | はい |
| リアルタイム音声 | はい(Google Live API) |
| 画像理解 | はい |
| 音声文字起こし | はい |
| 動画理解 | はい |
| ウェブ検索(Grounding) | はい |
| 思考/推論 | はい(Gemini 2.5+ / Gemini 3+) |
| Gemma 4 モデル | はい |
ウェブ検索
同梱の gemini ウェブ検索プロバイダーは、Gemini Google Search Grounding を使用します。
plugins.entries.google.config.webSearch に専用の検索キーを設定するか、GEMINI_API_KEY の後に models.providers.google.apiKey を再利用できます。
{ plugins: { entries: { google: { config: { webSearch: { apiKey: "AIza...", // GEMINI_API_KEY または models.providers.google.apiKey が設定されている場合は省略可能 baseUrl: "https://generativelanguage.googleapis.com/v1beta", // models.providers.google.baseUrl にフォールバック model: "gemini-2.5-flash", }, }, }, }, },}認証情報の優先順位は、専用の webSearch.apiKey、次に GEMINI_API_KEY、最後に models.providers.google.apiKey です。webSearch.baseUrl は任意であり、運用者のプロキシまたは互換性のある Gemini API エンドポイント向けに用意されています。省略した場合、Gemini ウェブ検索は models.providers.google.baseUrl を再利用します。プロバイダー固有のツール動作については、Gemini 検索を参照してください。
画像生成
同梱の google 画像生成プロバイダーは、デフォルトで google/gemini-3.1-flash-image を使用します。
google/gemini-3-pro-imageもサポート- 生成: リクエストごとに最大 4 枚の画像
- 編集モード: 有効、最大 5 枚の入力画像
- ジオメトリ制御:
size、aspectRatio、resolution
Google をデフォルトの画像プロバイダーとして使用するには、次のように設定します。
{ agents: { defaults: { imageGenerationModel: { primary: "google/gemini-3.1-flash-image", }, }, },}動画生成
同梱の google Plugin は、共有の video_generate ツールを通じて動画生成も登録します。
- デフォルトの動画モデル:
google/veo-3.1-fast-generate-preview - モード: テキストから動画、画像から動画、単一動画の参照フロー
aspectRatio(16:9、9:16)とresolution(720P、1080P)をサポート。現在、Veo は音声出力をサポートしていません- 対応時間: 4、6、または 8 秒(その他の値は、許可された最も近い値に調整されます)
Google をデフォルトの動画プロバイダーとして使用するには、次のように設定します。
{ agents: { defaults: { videoGenerationModel: { primary: "google/veo-3.1-fast-generate-preview", }, }, },}音楽生成
同梱の google Plugin は、共有の music_generate ツールを通じて音楽生成も登録します。
- デフォルトの音楽モデル:
google/lyria-3-clip-preview google/lyria-3-pro-previewもサポート- プロンプト制御:
lyricsとinstrumental - 出力形式: デフォルトでは
mp3、google/lyria-3-pro-previewではwavも使用可能 - 参照入力: 最大 10 枚の画像
- セッションに基づく実行は、
action: "status"を含む共有のタスク/ステータスフローを通じてデタッチされます
Google をデフォルトの音楽プロバイダーとして使用するには、次のように設定します。
{ agents: { defaults: { musicGenerationModel: { primary: "google/lyria-3-clip-preview", }, }, },}テキスト読み上げ
同梱の google 音声プロバイダーは、gemini-3.1-flash-tts-preview とともに Gemini API TTS パスを使用します。
- デフォルト音声:
Kore - 認証:
tts.providers.google.apiKey、models.providers.google.apiKey、GEMINI_API_KEY、またはGOOGLE_API_KEY - 出力: 通常の TTS 添付ファイルでは WAV、ボイスノート対象では Opus、Talk/電話では PCM
- ボイスノート出力: Google PCM は WAV としてラップされ、
ffmpegを使用して 48 kHz Opus にトランスコードされます
Google のバッチ Gemini TTS パスは、完了した generateContent レスポンスで生成済み音声を返します。レイテンシを最小限に抑えた音声会話には、バッチ TTS ではなく Gemini Live API を利用する Google リアルタイム音声プロバイダーを使用してください。
Google をデフォルトの TTS プロバイダーとして使用するには、次のように設定します。
{ tts: { auto: "always", provider: "google", providers: { google: { model: "gemini-3.1-flash-tts-preview", speakerVoice: "Kore", audioProfile: "落ち着いた口調でプロフェッショナルに話してください。", }, }, },}Gemini API TTS は、スタイル制御に自然言語プロンプトを使用します。audioProfile を設定すると、読み上げるテキストの前に再利用可能なスタイルプロンプトが付加されます。プロンプトテキストで名前付きの話者を参照する場合は、speakerName を設定します。
Gemini API TTS は、[whispers] や [laughs] など、テキスト内の表現力豊かな角括弧付き音声タグも受け入れます。タグを TTS に送信しながら、表示されるチャット返信には含めないようにするには、[[tts:text]]...[[/tts:text]] ブロック内に配置します。
これは表示用の返信テキストです。 [[tts:text]][whispers] これは読み上げるバージョンです。[[/tts:text]]リアルタイム音声
同梱の google Plugin は、Voice Call や Google Meet などのバックエンド音声ブリッジ向けに、Gemini Live API を利用するリアルタイム音声プロバイダーを登録します。
| 設定 | 設定パス | デフォルト |
|---|---|---|
| モデル | plugins.entries.voice-call.config.realtime.providers.google.model |
gemini-3.1-flash-live-preview |
| 音声 | ...google.voice |
Kore |
| 温度 | ...google.temperature |
(未設定) |
| VAD 開始感度 | ...google.startSensitivity |
(未設定) |
| VAD 終了感度 | ...google.endSensitivity |
(未設定) |
| 無音時間 | ...google.silenceDurationMs |
(未設定) |
| アクティビティ処理 | ...google.activityHandling |
Google のデフォルト、start-of-activity-interrupts |
| ターンの対象範囲 | ...google.turnCoverage |
Google のデフォルト、audio-activity-and-all-video |
| 自動 VAD の無効化 | ...google.automaticActivityDetectionDisabled |
false |
| セッション再開 | ...google.sessionResumption |
true |
| コンテキスト圧縮 | ...google.contextWindowCompression |
true |
| API キー | ...google.apiKey |
models.providers.google.apiKey、GEMINI_API_KEY、または GOOGLE_API_KEY にフォールバック |
Voice Call のリアルタイム設定例:
{ plugins: { entries: { "voice-call": { enabled: true, config: { realtime: { enabled: true, provider: "google", providers: { google: { model: "gemini-3.1-flash-live-preview", speakerVoice: "Kore", activityHandling: "start-of-activity-interrupts", turnCoverage: "audio-activity-and-all-video", }, }, }, }, }, }, },}メンテナーがライブ検証を行うには、
OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts を実行します。
このスモークテストでは OpenAI のバックエンド/WebRTC パスも対象になります。Google 側では、
Control UI Talk が使用するものと同じ制限付き Live API トークン形式を発行し、
ブラウザーの WebSocket エンドポイントを開き、初期セットアップペイロードと JPEG フレームを送信して、
テキスト応答と describe_view 関数のラウンドトリップを検証します。
高度な設定
Gemini キャッシュの直接再利用
Gemini API を直接実行する場合(api: "google-generative-ai")、OpenClaw は設定された
cachedContent ハンドルを Gemini リクエストに渡します。
- モデルごとまたはグローバルのパラメーターを、
cachedContentまたは 旧式のcached_contentのいずれかで設定します - より具体的なスコープ(グローバルよりモデルレベル)のパラメーターが常に優先されます。
同じスコープ内で両方のキーが設定されている場合、
cached_contentが優先されます。 予期しない動作を避けるため、スコープごとに 1 つのキーのみを使用してください。 - 値の例:
cachedContents/prebuilt-context - Gemini のキャッシュヒット使用量は、アップストリームの
cachedContentTokenCountから OpenClaw のcacheReadに正規化されます
{ agents: { defaults: { models: { "google/gemini-2.5-pro": { params: { cachedContent: "cachedContents/prebuilt-context", }, }, }, }, },}Gemini CLI の使用上の注意
google-gemini-cli OAuth プロバイダーを使用する場合、OpenClaw はデフォルトで
Gemini CLI の stream-json 出力を使用し、最後の stats
ペイロードから使用量を正規化します。旧式の --output-format json オーバーライドでは、
引き続き JSON パーサーが使用されます。
- ストリーミングされた応答テキストは、アシスタントの
messageイベントから取得されます。 - 旧式の JSON 出力では、応答テキストは CLI JSON の
responseフィールドから取得されます。 - CLI が
usageを空のままにした場合、使用量はstatsにフォールバックします。 stats.cachedは OpenClaw のcacheReadに正規化されます。stats.inputがない場合、OpenClaw はstats.input_tokens - stats.cachedから 入力トークン数を算出します。
環境とデーモンのセットアップ
Gateway がデーモン(launchd/systemd)として動作する場合は、GEMINI_API_KEY を
そのプロセスで使用できるようにしてください(たとえば、~/.openclaw/.env 内で設定するか、
env.shellEnv を使用します)。