Agent Skills by ALSEL
Google GeminiLLM・AI開発⭐ リポ 0品質スコア 50/100

gemini-live-api-dev

Gemini Live APIを使ったリアルタイム双方向ストリーミングアプリを構築する際に活用するスキル。WebSocketベースの音声・映像・テキストストリーミング、音声アクティビティ検出(VAD)、ネイティブ音声機能、ファンクションコーリング、セッション管理、クライアントサイド認証用のエフェメラルトークン、すべてのLive API設定オプションをカバーする。対応SDKはgoogle-genai(Python)および@google/genai(JavaScript/TypeScript)。

description の原文を見る

Use this skill when building real-time, bidirectional streaming applications with the Gemini Live API. Covers WebSocket-based audio/video/text streaming, voice activity detection (VAD), native audio features, function calling, session management, ephemeral tokens for client-side auth, and all Live API configuration options. SDKs covered - google-genai (Python), @google/genai (JavaScript/TypeScript).

SKILL.md 本文

Gemini Live API開発スキル

概要

Live APIは、WebSockets経由でGeminiとの低遅延でリアルタイムな音声およびビデオ対話を実現します。連続的なオーディオ、ビデオ、またはテキストストリームを処理して、即座に人間的な音声応答を配信します。

主な機能:

  • 双方向オーディオストリーミング — リアルタイムなマイクからスピーカーへの会話
  • ビデオストリーミング — オーディオと共にカメラ/スクリーンフレームを送信
  • テキスト入力/出力 — ライブセッション内でテキストを送受信
  • オーディオトランスクリプション — 入出力オーディオの両方のテキストトランスクリプトを取得
  • 音声活動検出(VAD) — 自動割り込み処理
  • ネイティブオーディオ — シンキング(設定可能なthinkingLevel付き)
  • 関数呼び出し — 同期的なツール使用
  • Googleサーチグラウンディング — リアルタイム検索結果で応答をグラウンディング
  • セッション管理 — コンテキスト圧縮、セッション再開、GoAwayシグナル
  • エフェメラルトークン — セキュアなクライアント側認証

[!NOTE] Live APIは現在、WebSocketのみをサポートしています。WebRTCサポートまたは簡略化された統合については、パートナー統合を参照してください。

モデル

  • gemini-3.1-flash-live-preview — 低遅延でリアルタイム対話に最適化。ネイティブオーディオ出力、シンキング(thinkingLevel経由)。128kコンテキストウィンドウ。すべてのLive API使用ケースに推奨されるモデルです。

[!WARNING] 以下のLive APIモデルは非推奨であり、シャットダウンされます。gemini-3.1-flash-live-previewに移行してください。

  • gemini-2.5-flash-native-audio-preview-12-2025gemini-3.1-flash-live-previewに移行してください。
  • gemini-live-2.5-flash-preview — 2025年6月17日リリース。シャットダウン: 2025年12月9日。
  • gemini-2.0-flash-live-001 — 2025年4月9日リリース。シャットダウン: 2025年12月9日。

SDK

  • Python: google-genaipip install google-genai
  • JavaScript/TypeScript: @google/genainpm install @google/genai

[!WARNING] レガシーSDK google-generativeai(Python)および@google/generative-ai(JS)は非推奨です。上記の新しいSDKを使用してください。

パートナー統合

リアルタイムオーディオ/ビデオアプリケーション開発を効率化するために、WebRTCまたはWebSockets経由でGemini Live APIをサポートするサードパーティ統合を使用してください:

  • LiveKit — LiveKit AgentsでGemini Live APIを使用します。
  • Pipecat by Daily — Gemini LiveとPipecatを使用してリアルタイムAIチャットボットを作成します。
  • Fishjam by Software Mansion — Fishjamでライブビデオおよびオーディオストリーミングアプリケーションを作成します。
  • Vision Agents by Stream — Vision Agentsでリアルタイム音声およびビデオAIアプリケーションを構築します。
  • Voximplant — VoximplantでインバウンドおよびアウトバウンドコールをLive APIに接続します。
  • Firebase AI SDK — Firebase AI LogicでGemini Live APIを開始します。

オーディオフォーマット

  • 入力: Raw PCM、リトルエンディアン、16ビット、モノラル。16kHzネイティブ(他はリサンプリング)。MIMEタイプ: audio/pcm;rate=16000
  • 出力: Raw PCM、リトルエンディアン、16ビット、モノラル。24kHzサンプリングレート。

[!IMPORTANT] すべてのリアルタイムユーザー入力(オーディオ、ビデオ、およびテキスト)に対してsend_realtime_input / sendRealtimeInputを使用してください。send_client_content / sendClientContentは初期コンテキスト履歴のシード処理のみサポートされています(history_configinitial_history_in_client_contentを設定する必要があります)。会話中に新しいユーザーメッセージを送信するために使用しないでください

[!WARNING] sendRealtimeInputmediaを使用しないでください。特定のキーを使用してください: オーディオデータ用のaudio、画像/ビデオフレーム用のvideo、テキスト入力用のtext


クイックスタート

認証

Python

from google import genai

client = genai.Client(api_key="YOUR_API_KEY")

JavaScript

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({ apiKey: 'YOUR_API_KEY' });

Live APIへの接続

Python

from google.genai import types

config = types.LiveConnectConfig(
    response_modalities=[types.Modality.AUDIO],
    system_instruction=types.Content(
        parts=[types.Part(text="You are a helpful assistant.")]
    )
)

async with client.aio.live.connect(model="gemini-3.1-flash-live-preview", config=config) as session:
    pass  # Session is active

JavaScript

const session = await ai.live.connect({
  model: 'gemini-3.1-flash-live-preview',
  config: {
    responseModalities: ['audio'],
    systemInstruction: { parts: [{ text: 'You are a helpful assistant.' }] }
  },
  callbacks: {
    onopen: () => console.log('Connected'),
    onmessage: (response) => console.log('Message:', response),
    onerror: (error) => console.error('Error:', error),
    onclose: () => console.log('Closed')
  }
});

テキストを送信

Python

await session.send_realtime_input(text="Hello, how are you?")

JavaScript

session.sendRealtimeInput({ text: 'Hello, how are you?' });

オーディオを送信

Python

await session.send_realtime_input(
    audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
)

JavaScript

session.sendRealtimeInput({
  audio: { data: chunk.toString('base64'), mimeType: 'audio/pcm;rate=16000' }
});

ビデオを送信

Python

# frame: raw JPEG-encoded bytes
await session.send_realtime_input(
    video=types.Blob(data=frame, mime_type="image/jpeg")
)

JavaScript

session.sendRealtimeInput({
  video: { data: frame.toString('base64'), mimeType: 'image/jpeg' }
});

オーディオとテキストを受信

[!IMPORTANT] 単一のサーバーイベントは複数のコンテンツパートを同時に含むことができます(例: オーディオチャンクとトランスクリプト)。各イベントのすべてのパートを処理して、コンテンツの欠落を避けてください。

Python

async for response in session.receive():
    content = response.server_content
    if content:
        # オーディオ — 各イベントのすべてのパートを処理
        if content.model_turn:
            for part in content.model_turn.parts:
                if part.inline_data:
                    audio_data = part.inline_data.data
        # トランスクリプション
        if content.input_transcription:
            print(f"User: {content.input_transcription.text}")
        if content.output_transcription:
            print(f"Gemini: {content.output_transcription.text}")
        # 割り込み
        if content.interrupted is True:
            pass  # Stop playback, clear audio queue

JavaScript

// onmessageコールバック内
const content = response.serverContent;
if (content?.modelTurn?.parts) {
  for (const part of content.modelTurn.parts) {
    if (part.inlineData) {
      const audioData = part.inlineData.data; // Base64エンコード
    }
  }
}
if (content?.inputTranscription) console.log('User:', content.inputTranscription.text);
if (content?.outputTranscription) console.log('Gemini:', content.outputTranscription.text);
if (content?.interrupted) { /* Stop playback, clear audio queue */ }

制限事項

  • 応答モダリティ — セッションあたりTEXTまたはAUDIOのみ、両方ではない
  • オーディオのみセッション — 圧縮なしで15分
  • オーディオ+ビデオセッション — 圧縮なしで2分
  • 接続の生存期間 — 約10分(セッション再開を使用)
  • コンテキストウィンドウ — 128kトークン(ネイティブオーディオ) / 32kトークン(標準)
  • 非同期関数呼び出し — まだサポートされていません。関数呼び出しは同期のみです。ツール応答を送信するまで、モデルは応答を開始しません。
  • プロアクティブオーディオ — Gemini 3.1 Flash Liveではまだサポートされていません。この機能の構成を削除してください。
  • 感情的対話 — Gemini 3.1 Flash Liveではまだサポートされていません。この機能の構成を削除してください。
  • コード実行 — サポートされていません
  • URLコンテキスト — サポートされていません

Gemini 2.5 Flash Liveからの移行

gemini-2.5-flash-native-audio-preview-12-2025からgemini-3.1-flash-live-previewに移行する場合:

  1. モデル文字列gemini-2.5-flash-native-audio-preview-12-2025からgemini-3.1-flash-live-previewに更新してください。
  2. シンキング構成thinkingBudgetの代わりにthinkingLevel(minimallowmediumhigh)を使用してください。デフォルトは最低遅延のためのminimalです。
  3. サーバーイベント — 単一のイベントはオーディオ+トランスクリプトなど、複数のコンテンツパートを同時に含むことができます。各イベントのすべてのパートを処理してください。
  4. クライアントコンテンツsend_client_contentは初期コンテキスト履歴のシード処理のみです(history_configinitial_history_in_client_contentを設定)。会話中のテキストにはsend_realtime_inputを使用してください。
  5. ターンカバレッジTURN_INCLUDES_ONLY_ACTIVITYの代わりにTURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEOにデフォルト設定されています。常にビデオフレームを送信している場合、コストを削減するためにオーディオアクティビティ中のみ送信することを検討してください。
  6. 非同期関数呼び出し — まだサポートされていません。関数呼び出しは同期のみです。
  7. プロアクティブオーディオと感情的対話 — まだサポートされていません。これらの機能の構成を削除してください。

ベストプラクティス

  1. ヘッドフォンを使用してマイクオーディオをテストするときは、エコー/自己割り込みを防ぐため
  2. コンテキストウィンドウ圧縮を有効にする15分以上のセッション向け
  3. セッション再開を実装する接続リセットを適切に処理するため
  4. エフェメラルトークンを使用クライアント側デプロイメント向け — ブラウザでAPIキーを公開しないこと
  5. すべてのリアルタイムユーザー入力(オーディオ、ビデオ、テキスト)にsend_realtime_inputを使用してくださいsend_client_contentは初期コンテキスト履歴のシード処理のみに予約してください
  6. マイクが一時停止されているときにaudioStreamEndを送信キャッシュされたオーディオをフラッシュするため
  7. 割り込みシグナルでオーディオ再生キューをクリア
  8. 各サーバーイベントのすべてのパートを処理 — イベントは複数のコンテンツパートを含む可能性があります

ドキュメント検索

MCPがインストールされている場合(推奨)

search_docsツール(Google MCPサーバーから)が利用可能な場合、それを唯一のドキュメントソースとして使用してください:

  1. クエリでsearch_docsを呼び出す
  2. 返されたドキュメントを読む
  3. MCPの結果をAPI詳細の真実のソースとして信頼してください — それらは常に最新です。

[!IMPORTANT] MCPツールが存在する場合、決してURLを手動で取得しないでください。MCPは最新で、インデックス化されたドキュメントを提供し、URLフェッチよりも正確でトークン効率が高いです。

MCPがインストールされていない場合(フォールバックのみ)

MCPドキュメントツールが利用できない場合、公式ドキュメントインデックスから取得してください:

llms.txt URL: https://ai.google.dev/gemini-api/docs/llms.txt

このインデックスには、.md.txt形式のすべてのドキュメントページへのリンクが含まれています。Webフェッチツールを使用して:

  1. llms.txtを取得して、利用可能なドキュメントページを検出
  2. 特定のページを取得(例: https://ai.google.dev/gemini-api/docs/live-session.md.txt)

主要なドキュメントページ

[!IMPORTANT] これらはすべてのドキュメントページではありません。llms.txtインデックスを使用して、利用可能なドキュメントページを検出してください

サポートされている言語

Live APIは70以上の言語をサポートしており、以下が含まれます: 英語、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、中国語、日本語、韓国語、ヒンディー語、アラビア語、ロシア語、その他多数。ネイティブオーディオモデルは自動的に言語を検出し、切り替えます。

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
google-gemini
リポジトリ
google-gemini/gemini-skills
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/google-gemini/gemini-skills / ライセンス: Apache-2.0

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: google-gemini · google-gemini/gemini-skills · ライセンス: Apache-2.0