Gemini Live API

Gemini Live API を使用すると、テキスト、音声、動画の入力に対して音声やテキストの出力を返す低レイテンシの双方向インタラクションを実現できます。これにより、人間とやり取りするような自然な音声会話が可能となります。また、いつでもモデルとのやりとりを中断できます。モデルが動画を理解できるようになることでコミュニケーション手段が多様化し、カメラ入力やスクリーンキャストを共有して質問することが可能になります。

機能

Live API の主な機能は次のとおりです。

  • マルチモダリティ: モデルは、見て、聞いて、会話できます。
  • 低レイテンシのリアルタイム インタラクション: モデルは、すばやくレスポンスを返すことができます。
  • セッション メモリ: モデルは、1 つのセッションで行われたすべてのインタラクションを記憶し、以前に聞いたことや見たことがある情報を思い出すことができます。
  • 関数呼び出し、コードの実行、Search as a Tool のサポート: モデルを外部サービスやデータソースと統合できます。

Live API は、サーバー間通信用に設計されています。

ウェブアプリとモバイルアプリについては、Daily のパートナーによるインテグレーションを使用することをおすすめします。

始める

Live API を試すには、Vertex AI Studio に移動し、[セッションを開始] をクリックします。

Live API は、WebSockets を使用するステートフル API です。

このセクションでは、Python 3.9 以降を使用して、Live API でテキストからテキストを生成する方法の例を示します。

Gen AI SDK for Python

インストール

pip install --upgrade google-genai
詳細については、 SDK リファレンス ドキュメントをご覧ください。

Vertex AI で Gen AI SDK を使用するための環境変数を設定します。

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import (
    Content,
    LiveConnectConfig,
    HttpOptions,
    Modality,
    Part,
)

client = genai.Client(http_options=HttpOptions(api_version="v1beta1"))
model_id = "gemini-2.0-flash-live-preview-04-09"

async with client.aio.live.connect(
    model=model_id,
    config=LiveConnectConfig(response_modalities=[Modality.TEXT]),
) as session:
    text_input = "Hello? Gemini, are you there?"
    print("> ", text_input, "\n")
    await session.send_client_content(
        turns=Content(role="user", parts=[Part(text=text_input)])
    )

    response = []

    async for message in session.receive():
        if message.text:
            response.append(message.text)

    print("".join(response))
# Example output:
# >  Hello? Gemini, are you there?
# Yes, I'm here. What would you like to talk about?

インテグレーション ガイド

このセクションでは、Live API とのインテグレーションの仕組みについて説明します。

セッション

WebSocket 接続で、クライアントと Gemini サーバー間のセッションが確立されます。

クライアントが新しい接続を開始すると、セッションがサーバーとメッセージを交換し、次のことを実行できます。

  • テキスト、音声、動画を Gemini サーバーに送信する。
  • Gemini サーバーから音声、テキスト、関数呼び出しリクエストを受信する。

セッション構成は、接続後の最初のメッセージで送信されます。セッション構成には、モデル、生成パラメータ、システム指示、ツールが含まれます。

次の構成例をご覧ください。


{
  "model": string,
  "generationConfig": {
    "candidateCount": integer,
    "maxOutputTokens": integer,
    "temperature": number,
    "topP": number,
    "topK": integer,
    "presencePenalty": number,
    "frequencyPenalty": number,
    "responseModalities": [string],
    "speechConfig": object
  },

  "systemInstruction": string,
  "tools": [object]
}

詳細については、BidiGenerateContentSetup をご覧ください。

メッセージを送信する

メッセージは、WebSocket 接続を介して交換される JSON 形式のオブジェクトです。

メッセージを送信するには、クライアントはオープンな WebSocket 接続を介して JSON オブジェクトを送信する必要があります。JSON オブジェクトには、次のオブジェクト セットのフィールドを 1 つだけ含める必要があります。


{
  "setup": BidiGenerateContentSetup,
  "clientContent": BidiGenerateContentClientContent,
  "realtimeInput": BidiGenerateContentRealtimeInput,
  "toolResponse": BidiGenerateContentToolResponse
}

サポートされているクライアント メッセージ

サポートされているクライアント メッセージについては、次の表をご覧ください。

メッセージ 説明
BidiGenerateContentSetup 最初のメッセージで送信されるセッション構成
BidiGenerateContentClientContent クライアントから送信された現在の会話コンテンツの増分更新
BidiGenerateContentRealtimeInput リアルタイムの音声または動画入力
BidiGenerateContentToolResponse サーバーから受信した ToolCallMessage へのレスポンス

メッセージを受信する

Gemini からメッセージを受信するには、WebSocket の「message」イベントをリッスンし、サポートされているサーバー メッセージの定義に従って結果を解析します。

以下をご覧ください。

ws.addEventListener("message", async (evt) => {
  if (evt.data instanceof Blob) {
    // Process the received data (audio, video, etc.)
  } else {
    // Process JSON response
  }
});

サーバー メッセージには、次のオブジェクト セットのフィールドが 1 つだけ含まれます。


{
  "setupComplete": BidiGenerateContentSetupComplete,
  "serverContent": BidiGenerateContentServerContent,
  "toolCall": BidiGenerateContentToolCall,
  "toolCallCancellation": BidiGenerateContentToolCallCancellation
  "usageMetadata": UsageMetadata
  "goAway": GoAway
  "sessionResumptionUpdate": SessionResumptionUpdate
  "inputTranscription": BidiGenerateContentTranscription
  "outputTranscription": BidiGenerateContentTranscription
}

サポートされているサーバー メッセージ

サポートされているサーバー メッセージについては、次の表をご覧ください。

メッセージ 説明
BidiGenerateContentSetupComplete セットアップが完了したときに、クライアントから送信される BidiGenerateContentSetup メッセージ
BidiGenerateContentServerContent クライアント メッセージに応答してモデルが生成したコンテンツ
BidiGenerateContentToolCall クライアントに関数呼び出しを実行して、一致する ID を含むレスポンスを返すよう求めるリクエスト
BidiGenerateContentToolCallCancellation ユーザーがモデル出力を中断したために関数呼び出しがキャンセルされたときに送信されます
UsageMetadata セッションでこれまでに使用されたトークン数に関するレポート
GoAway 現在の接続がまもなく終了することを示すシグナル
SessionResumptionUpdate 再開可能なセッション チェックポイント
BidiGenerateContentTranscription ユーザーまたはモデルの音声の文字起こし

コンテンツの増分更新

増分更新を使用して、テキスト入力の送信、セッション コンテキストの確立、セッション コンテキストの復元を行います。コンテキストが短い場合は、ターンバイターンのインタラクションを送信して、イベントの正確なシーケンスを表すことができます。コンテキストが長い場合は、1 つのメッセージの概要を提供して、後続のインタラクション用にコンテキスト ウィンドウを空けておくことをおすすめします。

次のコンテキスト メッセージの例をご覧ください。

{
  "clientContent": {
    "turns": [
      {
          "parts":[
          {
            "text": ""
          }
        ],
        "role":"user"
      },
      {
          "parts":[
          {
            "text": ""
          }
        ],
        "role":"model"
      }
    ],
    "turnComplete": true
  }
}

コンテンツ部分は functionResponse 型にできますが、モデルから発行された関数呼び出しにレスポンスを返す際に BidiGenerateContentClientContent を使用しないでください。代わりに BidiGenerateContentToolResponse を使用してください。BidiGenerateContentClientContent を使用するのは、以前のコンテキストを確立する場合や、会話中にテキスト入力を行う場合のみにしてください。

ストリーミング音声およびストリーミング動画

コードの実行

コードの実行の詳細については、コードの実行をご覧ください。

関数呼び出し

すべての関数は、BidiGenerateContentSetup メッセージの一部としてツール定義を送信することで、セッションの開始時に宣言する必要があります。

関数は JSON を使用して定義します。具体的には、OpenAPI スキーマ形式サブセットを選択します。1 つの関数宣言に含めることができるパラメータは、次のとおりです。

  • name(文字列): API 呼び出し内の関数に対する固有識別子。

  • description(文字列): 関数の目的と機能についての包括的な説明。

  • parameters(オブジェクト): 関数に必要な入力データを定義します。

    • type(文字列): 全体的なデータ型(オブジェクトなど)を指定します。

    • properties(オブジェクト): 個々のパラメータを一覧表示します。各パラメータには次の情報が含まれます。

      • type(文字列): パラメータのデータ型(文字列、整数、ブール値など)。
      • description(文字列): パラメータの目的と適切な形式についての明確な説明。
    • required(配列): 関数の動作に必須のパラメータ名を列挙した文字列の配列。

curl コマンドを使用した関数宣言のコード例については、Gemini API を使用した関数呼び出しをご覧ください。Gemini API SDK を使用して関数宣言を作成する方法の例については、関数呼び出しのチュートリアルをご覧ください。

モデルは、単一のプロンプトから複数の関数呼び出しと、出力の連結に必要なコードを生成できます。このコードはサンドボックス環境で実行され、後続の BidiGenerateContentToolCall メッセージを生成します。各関数呼び出しの結果が表示されるまで実行は停止するため、順番どおりに処理が行われます。

クライアントは BidiGenerateContentToolResponse を返します。

詳細については、関数呼び出しの概要をご覧ください。

音声形式

Live API は、次の音声形式をサポートしています。

  • 入力音声形式: RAW 16 ビット PCM 音声、16kHz、リトル エンディアン
  • 出力音声形式: RAW 16 ビット PCM 音声、24kHz、リトル エンディアン

システム指示

システム指示を指定することで、モデルの出力をより適切に制御し、音声レスポンスのトーンや感情を指定できます。

システム指示は、インタラクションの開始前にプロンプトに追加され、セッション全体で有効になります。

システム指示を設定できるのは、セッションの開始時、初回接続の直後のみです。セッション中にモデルにさらに多くの情報を入力するには、コンテンツの増分更新を使用します。

中断

モデルの出力はいつでも中断できます。音声アクティビティ検出(VAD)が中断を検出すると、進行中の生成はキャンセルされ、破棄されます。クライアントにすでに送信された情報だけが、セッション履歴に保持されます。その後、サーバーは中断を報告する BidiGenerateContentServerContent メッセージを送信します。

さらに、Gemini サーバーは保留中の関数呼び出しを破棄し、キャンセルされた呼び出しの ID を記載した BidiGenerateContentServerContent メッセージを送信します。

音声

Live API は、次の音声をサポートしています。

  • Puck
  • Charon
  • Kore
  • Fenrir
  • Aoede

音声を指定するには、セッション構成の一部として、speechConfig オブジェクト内に voiceName を設定します。

次の speechConfig オブジェクトの JSON 表現をご覧ください。

{
  "voiceConfig": {
    "prebuiltVoiceConfig": {
      "voiceName": "VOICE_NAME"
    }
  }
}

制限事項

プロジェクトを計画する際は、Live API と Gemini 2.0 の次の制限事項を考慮してください。

クライアント認証

Live API が提供するのはサーバー間認証のみであるため、クライアントが直接使用することはおすすめしません。クライアントの入力を Live API で安全に認証するには、中間アプリケーション サーバーを経由する必要があります。

会話の履歴

モデルはセッション内のインタラクションを追跡しますが、会話履歴は保存されません。セッションが終了すると、対応するコンテキストは消去されます。

以前のセッションを復元したり、ユーザー インタラクションの過去のコンテキストをモデルに提供したりするには、アプリケーションが独自の会話ログを維持し、BidiGenerateContentClientContent メッセージを使用して新しいセッションの開始時にこの情報を送信する必要があります。

セッションの最大継続時間

セッション継続時間は、音声では最大 15 分、音声と動画では最大 2 分に制限されます。セッション継続時間が上限を超えると、接続が終了します。

モデルはコンテキストのサイズによっても制限されます。動画ストリームや音声ストリームとともに大量のコンテンツを送信すると、セッションが早期に終了する可能性があります。

音声アクティビティ検出(VAD)

デフォルトでは、モデルは連続した音声入力ストリームに対して音声アクティビティ検出(VAD)を自動的に実行します。VAD は、設定メッセージRealtimeInputConfig.AutomaticActivityDetection フィールドで設定できます。

オーディオ ストリームが一秒以上一時停止すると(ユーザーがマイクをオフにしたときなど)、キャッシュに保存されているオーディオをフラッシュするために AudioStreamEnd イベントが送信されます。クライアントはいつでも音声データの送信を再開できます。

また、設定メッセージで RealtimeInputConfig.AutomaticActivityDetection.disabledtrue に設定することで、自動 VAD をオフにすることもできます。この構成では、クライアントがユーザーの音声を検出し、適切なタイミングで ActivityStart メッセージと ActivityEnd メッセージを送信します。この構成では AudioStreamEnd は送信されません。代わりに、ストリームの中断は ActivityEnd メッセージでマークされます。

その他の制限

手動エンドポイントはサポートされていません。

音声入力と音声出力は、モデルが関数呼び出しを使用する機能に悪影響を及ぼします。

トークン数

トークン数はサポートされていません。

レート上限

次のレート制限が適用されます。

  • API キーあたり 3 つの同時実行セッション
  • 1 分あたり 400 万個のトークン

メッセージとイベント

BidiGenerateContentClientContent

クライアントから送信された現在の会話の増分更新。ここに示されたコンテンツはすべて、無条件で会話履歴に追加され、コンテンツを生成するためのモデルへのプロンプトの一部として使用されます。

次のメッセージが表示されると、現在のモデルの生成が中断されます。

フィールド
turns[]

Content

省略可。モデルとの現在の会話に追加されたコンテンツ。

シングルターン クエリの場合、単一のインスタンスです。マルチターン クエリの場合、会話履歴と最新のリクエストを含む繰り返しフィールドです。

turn_complete

bool

省略可。true の場合、現在蓄積されているプロンプトからサーバーのコンテンツ生成が開始することを示します。true ではない場合、サーバーは、メッセージが追加されるのを待って生成を開始します。

BidiGenerateContentRealtimeInput

リアルタイムで送信されるユーザー入力。

ClientContentUpdate とはいくつかの点で異なります。

  • モデルの生成を中断せずに連続で送信できます。
  • ClientContentUpdateRealtimeUpdate にまたがってインターリーブされたデータを混在させる必要がある場合、サーバーは最良のレスポンスになるよう最適化を試みます(ただし、保証はありません)。
  • ターンの終了は明示的に指定されず、ユーザー アクティビティ(音声の終了など)から導き出されます。
  • ターンが終了する前でも、データは増分処理され、モデルからのレスポンスを迅速に開始できるように最適化されます。
  • 常にユーザーの入力と見なされます(会話履歴の入力には使用できません)。
フィールド
media_chunks[]

Blob

省略可。メディア入力用のインライン バイトデータ。

activity_start

ActivityStart

省略可。ユーザー アクティビティの開始をマークします。このデータは、自動(サーバーサイド)アクティビティ検出が無効になっている場合にのみ送信されます。

activity_end

ActivityEnd

省略可。ユーザー アクティビティの終了をマークします。このデータは、自動(サーバーサイド)アクティビティ検出が無効になっている場合にのみ送信されます。

ActivityEnd

この型にはフィールドがありません。

ユーザー アクティビティの終了をマークします。

ActivityStart

この型にはフィールドがありません。

このメッセージのフィールドは、一度に 1 つのみ設定する必要があります。ユーザー アクティビティの開始をマークします。

BidiGenerateContentServerContent

クライアント メッセージに応答してモデルが生成するサーバーの増分更新。

コンテンツはリアルタイムではなく、できるだけ早く生成されます。クライアントは、コンテンツをバッファリングしてリアルタイムで再生することもできます。

フィールド
turn_complete

bool

出力専用。true の場合、モデルの生成が完了していることを示します。生成は、追加のクライアント メッセージに応答してのみ開始されます。content を指定して設定すると、その content がターンの最後であることを示すことができます。

interrupted

bool

出力専用。true の場合、クライアント メッセージが現在のモデル生成を中断したことを示します。クライアントがリアルタイムでコンテンツを再生している場合、現在のキューを停止して空にする良いタイミングになります。クライアントがリアルタイムでコンテンツを再生している場合、現在の再生キューを停止して空にする良いタイミングになります。

generation_complete

bool

出力専用。true の場合、モデルの生成が完了していることを示します。

生成中にモデルが中断された場合、中断されたターンには「generation_complete」メッセージは表示されず、「interrupted > turn_complete」に進みます。

モデルがリアルタイム再生を想定している場合、再生が完了するのを待機しているため、generation_complete と turn_complete の間に遅延が発生します。

grounding_metadata

GroundingMetadata

出力専用。メタデータが、生成されたコンテンツのグラウンディングに使用されるソースを指定します。

input_transcription

Transcription

省略可。文字起こしを入力します。音声文字変換はモデルのターンとは独立しています。つまり、音声文字変換とモデルのターンの間に順序付けはありません。

output_transcription

Transcription

省略可。音声文字変換を出力します。音声文字変換はモデルのターンとは独立しています。つまり、音声文字変換とモデルのターンの間に順序付けはありません。

model_turn

Content

出力専用。ユーザーとの現在の会話の一部としてモデルが生成したコンテンツ。

音声文字変換

音声文字変換メッセージ。

フィールド
text

string

省略可。文字起こしテキスト。

finished

bool

省略可。bool は、音声文字変換の終了を示します。

BidiGenerateContentSetup

最初のクライアント メッセージでのみ送信されるメッセージ。ストリーミング セッションの期間に適用される構成が含まれています。

クライアントは、BidiGenerateContentSetupComplete メッセージを待って、追加メッセージを送信する必要があります。

フィールド
model

string

必須。パブリッシャー モデルの完全修飾名。

パブリッシャー モデルの形式: projects/{project}/locations/{location}/publishers/\*/models/\*

generation_config

GenerationConfig

省略可。生成の構成。

次のフィールドはサポートされていません。

  • response_logprobs
  • response_mime_type
  • logprobs
  • response_schema
  • stop_sequence
  • routing_config
  • audio_timestamp
system_instruction

Content

省略可。ユーザーがモデルに指定するシステム指示。注: パートにはテキストのみを使用します。各パートのコンテンツは別の段落にします。

tools[]

Tool

省略可。モデルが次のレスポンスの生成に使用できる Tools のリスト。

Tool は、システムが外部システムと対話して、モデルの知識や範囲外のアクションまたは一連のアクションを実行できるようにするコードです。

session_resumption

SessionResumptionConfig

省略可。セッション再開メカニズムを構成します。含まれている場合、サーバーは定期的に SessionResumptionUpdate メッセージをクライアントに送信します。

context_window_compression

ContextWindowCompressionConfig

省略可。コンテキスト ウィンドウ圧縮メカニズムを構成します。

指定されている場合、サーバーは指定された長さに収まるようにコンテキスト ウィンドウを圧縮します。

realtime_input_config

RealtimeInputConfig

省略可。リアルタイム入力の処理を設定します。

input_audio_transcription

AudioTranscriptionConfig

省略可。入力の音声文字変換が、入力音声の言語と一致している。

output_audio_transcription

AudioTranscriptionConfig

省略可。出力の音声文字変換は、出力音声に指定された言語コードと一致しています。

AudioTranscriptionConfig

この型にはフィールドがありません。

音声文字変換の設定。

BidiGenerateContentSetupComplete

この型にはフィールドがありません。

クライアントからの BidiGenerateContentSetup メッセージに応答して送信されます。

BidiGenerateContentToolCall

クライアントに function_calls を実行して、一致する id を含むレスポンスを返すよう求めるリクエスト。

フィールド
function_calls[]

FunctionCall

出力専用。実行される関数呼び出し。

BidiGenerateContentToolCallCancellation

指定の id を含む、以前発行された ToolCallMessage を実行せずにキャンセルする必要があることをクライアントに伝える通知。これらのツール呼び出しに副作用があった場合、クライアントはツール呼び出しを取り消すことができます。このメッセージは、クライアントがサーバーのターンを中断した場合にのみ表示されます。

フィールド
ids[]

string

出力専用。キャンセルするツール呼び出しの ID。

BidiGenerateContentToolResponse

サーバーから受信した ToolCall に対してクライアントが生成するレスポンス。個々の FunctionResponse オブジェクトは、id フィールドでそれぞれの FunctionCall オブジェクトと照合されます。

単項およびとサーバー ストリーミングの GenerateContent API では、Content パートを交換することで関数呼び出しが実行されますが、双方向の GenerateContent API では、専用のメッセージセットを介して関数呼び出しが実行されます。

フィールド
function_responses[]

FunctionResponse

省略可。関数呼び出しに対するレスポンス。

RealtimeInputConfig

BidiGenerateContent でリアルタイム入力の動作を構成します。

フィールド
automatic_activity_detection

AutomaticActivityDetection

省略可。設定しない場合、アクティビティの自動検出はデフォルトで有効になります。自動音声検出が無効になっている場合は、クライアントがアクティビティ シグナルを送信する必要があります。

activity_handling

ActivityHandling

省略可。アクティビティの効果を定義します。

turn_coverage

TurnCoverage

省略可。ユーザーのターンに含まれる入力を定義します。

ActivityHandling

ユーザー アクティビティを処理するさまざまな方法。

列挙型
ACTIVITY_HANDLING_UNSPECIFIED 指定しない場合、デフォルトの動作は START_OF_ACTIVITY_INTERRUPTS です。
START_OF_ACTIVITY_INTERRUPTS true の場合、アクティビティの開始時にモデルのレスポンスが中断されます(「割り込み」とも呼ばれます)。中断した時点で、モデルの現在のレスポンスはカットされます。これはデフォルトの動作です。
NO_INTERRUPTION モデルのレスポンスが中断されることはありません。

AutomaticActivityDetection

アクティビティの自動検出を構成します。

フィールド
start_of_speech_sensitivity

StartSensitivity

省略可。音声が検出される確率を決定します。

end_of_speech_sensitivity

EndSensitivity

省略可。検出された音声が終了する可能性を判断します。

prefix_padding_ms

int32

省略可。音声開始が commit される前に検出された音声に必要な時間。この値が小さいほど、音声開始の検出がより敏感になり、認識できる音声が短くなります。ただし、これにより誤検出の可能性も高くなります。

silence_duration_ms

int32

省略可。音声の終了が commit される前に検出される無音(または非音声)の必要な時間。この値を大きくすると、ユーザーのアクティビティを中断することなく音声のギャップを長くできますが、モデルのレイテンシが増加します。

disabled

bool

省略可。有効にすると、検出された音声入力とテキスト入力がアクティビティとしてカウントされます。無効になっている場合は、クライアントがアクティビティ シグナルを送信する必要があります。

EndSensitivity

音声終了の感度。

列挙型
END_SENSITIVITY_UNSPECIFIED デフォルトは END_SENSITIVITY_LOW です。
END_SENSITIVITY_HIGH 自動検出で音声が終了する頻度が増える。
END_SENSITIVITY_LOW 自動検出による音声の終了が減ります。

StartSensitivity

音声開始の感度。

列挙型
START_SENSITIVITY_UNSPECIFIED デフォルトは START_SENSITIVITY_LOW です。
START_SENSITIVITY_HIGH 自動検出により、音声の開始がより頻繁に検出されます。
START_SENSITIVITY_LOW 自動検出で音声の開始が検出される頻度が低下します。

TurnCoverage

ユーザーのターンに含まれる入力に関するオプション。

列挙型
TURN_COVERAGE_UNSPECIFIED 指定しない場合、デフォルトの動作は TURN_INCLUDES_ALL_INPUT です。
TURN_INCLUDES_ONLY_ACTIVITY ユーザーのターンには、前回のターンからのアクティビティのみが含まれ、無操作(音声ストリームの無音など)は含まれません。
TURN_INCLUDES_ALL_INPUT ユーザーのターンには、前回のターンからのすべてのリアルタイム入力が含まれます(音声ストリームの無音など)。これはデフォルトの動作です。

UsageMetadata

キャッシュに保存されたコンテンツの使用に関するメタデータ。

フィールド
total_token_count

int32

キャッシュに保存されたコンテンツが消費するトークンの合計数。

text_count

int32

テキスト文字数。

image_count

int32

画像の数。

video_duration_seconds

int32

動画の長さ(秒単位)。

audio_duration_seconds

int32

音声の長さ(秒単位)。

GoAway

サーバーがクライアントを処理できなくなります。

フィールド
time_left

Duration

接続が ABORTED として終了するまでの残り時間。ここで返される最小時間は、特定のモデルのレート制限とともに別途指定します。

SessionResumptionUpdate

セッション再開ステータスの更新。

BidiGenerateContentSetup.session_resumption が設定されている場合にのみ送信されます。

フィールド
new_handle

string

再開可能な状態を表す新しいハンドル。resumable=false の場合は空になります。

resumable

bool

この時点でセッションを再開できる場合は true。

場合によっては、セッションを再開できないことがあります。その場合は、空の new_handle と resumable=false を送信します。このようなケースの例としては、モデルが関数呼び出しを実行する場合や、単に生成する場合などがあります。このような状態でセッションを再開すると(以前のセッション トークンを使用)、一部のデータが失われます。

last_consumed_client_message_index

int64

この SessionResumptionToken で表される状態に含まれる、クライアントから送信された最後のメッセージのインデックス。SessionResumptionConfig.transparent が設定されている場合にのみ送信されます。

このインデックスが存在すると、ユーザーは透過的に再接続でき、リアルタイムの音声入力/動画の一部が失われる問題を回避できます。クライアントが(GoAway の受信などにより)一時的に接続を切断する場合は、最後の SessionResmumptionTokenUpdate 以降に送信されたメッセージをバッファリングすることで、状態を失うことなく切断できます。このフィールドを使用すると、バッファリングを制限できます(すべてのリクエストを RAM に保持しないようにします)。

後で「再開して状態を復元」する場合は使用されません。そのような場合、部分的な音声フレームと動画フレームは必要ありません。

次のステップ