音声AIエージェントを止めないGemini 3.8 Liveの非同期ツール呼び出し

Gemini 3.8 Liveの非同期関数呼び出しで、音声AIエージェントは照会処理中も会話を継続できます。料金の見方、Extended Thinkingとの使い分け、完了判定、重複実行を防ぐ実装、検証すべき運用指標まで、電話対応への導入ポイントを実務目線で分かりやすく整理します。

Wednesday, September 16, 2026Omid Saffari
音声AIエージェントを止めないGemini 3.8 Liveの非同期ツール呼び出し

2026年9月15日、GoogleGemini 3.8 Live と Gemini 3.8 Live Extended Thinking の一般提供を開始しました。実務上のポイントは明快です。音声AIエージェントは、カレンダーや注文システム、予約APIがバックグラウンドで時間のかかる処理を進めている間も、電話の相手に状況を伝え続けられます。

音声AIエージェントは照会待ちで会話を止めなくてよい

音声エージェントには、同時に進めるべき仕事が2つあります。自然な会話を保つことと、別のシステムで実際の処理を行うことです。

会話がぎこちなくなるのは、たいてい後者です。エージェントが予約APIに空き枠を問い合わせ、返答を待つ間、電話には沈黙が流れます。相手は依頼を繰り返したり、まだつながっているのか確認したり、そのまま電話を切ったりします。アプリケーションが繰り返された発言を新しい指示として扱えば、同じ処理を二重に始めるおそれもあります。

Gemini 3.8 Live は、非同期関数呼び出しによってこの流れを変えます。非同期なら、ツールを動かしたままライブセッション全体を止めずに済みます。照会の完了を待つ間も、相手は情報を補足したり、内容を訂正したり、進捗を聞いたりできます。

Gemini 3.8 Live Extended Thinkingは、さらに一歩踏み込みます。複数ステップのタスクを推論し、ツールの実行中に短い進捗を音声で伝えられます。Googleが示しているのは、ライブの会話を中断せず、複数のシステムを確認する旅行予約の例です。

ただし、Gemini が単独で予約を完了するわけではありません。関数呼び出しを受け取り、カレンダーや注文情報を照会して結果を返すのは、引き続きアプリケーション側の役割です。モデルが担うのは、その処理を待つ間の会話です。

選択肢適する場面ツールの動作完了シグナル
gemini-3.8-liveタスクが単純で、ツールの応答が速い非同期がデフォルトだが、ブロッキングモードも利用可能turnComplete: true でターンが終了
gemini-3.8-live-extended-thinking複数ステップが必要、またはツールの処理に数秒かかる非同期のみ。lowmediumhigh の思考レベルに対応interaction_status: "IDLE" になるまで待機

本番運用で見落としやすいのが、最後の列です。Extended Thinkingでは、turnComplete: true が示すのは、途中の音声による進捗報告が終わったことだけかもしれません。照会はまだ動いている可能性があります。この時点でセッションを閉じたり、予約ボタンを有効にしたり、タスクを完了扱いにしたりすると、実際には終わっていない処理を完了として記録してしまいます。

電話の相手、バックグラウンド照会、進捗報告、検証済みの完了台帳を示すクレイアニメーション風の解説シーン
必要なのは、1つのライブ会話、1つのバックグラウンドタスク、そして検証済みの完了記録です。

経営指標は「完了タスク当たりコスト」で見る

バックグラウンドで話し続ける機能を使っても、自動的にコストが下がるわけではありません。ツールの実行中にもモデルの出力が増え、会話が長引けば、後続ターンで再処理されるコンテキストも増える可能性があります。会話が途切れないことで予約完了が増え、途中離脱が減り、スタッフの事後対応が少なくなって初めて、この機能を採用する意味があります。

Googleが示す標準料金は、両モデルで同じです。音声入力は1分当たり $0.005、音声出力は1分当たり $0.018 です。テキスト入力は100万トークン当たり $0.75、思考トークンを含むテキスト出力は100万トークン当たり $4.50 です。

5分間の予約電話で、モデルが2分間話すケースを考えます。プロアクティブ音声は常時有効なので、新たに発生する音声料金の単純計算は、5分の入力で $0.025、2分の出力で $0.036 です。音声だけの小計は $0.061 になります。

ただし、これは電話1件の最終コストではありません。

Live APIの課金ガイド によると、持続するセッションでは、蓄積されたコンテキストが後続ターンで再処理されることがあります。文字起こしにはテキストトークンの料金が加わります。Extended Thinkingでは、思考出力も増える可能性があります。さらに、カレンダー、CRM、電話キャリア、ホスティング、再試行、有人対応への切り替えにかかる費用は、Googleの音声料金の小計には含まれません。

代わりに、次の式で判断します。

完了タスク当たりコスト = モデル、ツール、電話、インフラ、再試行、有人対応の全支出 ÷ 検証済みの完了タスク数

感じのよい会話ログが残っていても、タスクが完了したことにはなりません。予約窓口なら、予約IDが一度だけ書き込まれ、正しく読み上げられ、電話の相手が了承した状態が完了です。注文サポートなら、正しいアカウントに正しい注文処理がひも付いていることです。転送なら、必要な文脈を保ったまま目的の窓口につながったことを指します。

Googleは、消費したトークンの合計を usageMetadata で定期的に返します。その記録を、ツール呼び出しID、電話キャリアのセッション、最終的な業務結果、スタッフが行った作業と結び付けます。そうすれば、信じるしかない1分当たりの概算ではなく、監査可能な通話単位の台帳を作れます。

公開時のベンチマーク値だけで、この実証は代替できません。Googleによると、Extended Thinkingはtau-Voiceのタスクベンチマークで68.6%、その銀行業務版で35.1%を記録しています。この結果から分かるのは、エージェント型の音声業務でモデルをテストする価値があるということです。自社のカレンダー、運用ルール、電話回線を使ったときに、予約を完了できる発信者の割合までは分かりません。

待ち時間が結果を左右する4つの業務

歯科医院で診療予約を受ける

運用責任者は、希望日を聞いた後に空き状況を照会し、カレンダーから返答が来るまで確認中であることを伝えるよう、エージェントを設計できます。価値があるのは、沈黙が短くなること自体ではありません。スタッフが折り返す件数を減らしながら、確定予約を増やせる点です。

守るべきルールは明確です。音声で進捗を伝えただけでは、予約は成立していません。システムが予約を作成するのは、返された空き枠を電話の相手が選んだ後に限ります。再試行では同じ冪等性キーを使い、1回の通話から同じ予約が二重に作られないようにします。

ECチームが注文状況を確認する

サポート責任者は、エージェントが注文システムへ照会している間も、同じ会話を続けられます。相手の依頼が「荷物は今どこにあるか」から「配送先住所を変更したい」に変わったら、アプリケーションは新しい依頼を有効なものとして扱い、古い処理をキャンセルするか、その結果を無視しなければなりません。

日常的な問い合わせの引き継ぎを減らせるのが利点です。一方、会話が次へ進んだ後に、古い質問への正しい回答が返ってくるリスクがあります。

旅行チームが予約変更に対応する

フライト検索、規定の確認、ホテルの空室確認、運賃比較が必要なため、Extended Thinkingに向く業務です。複数のノンブロッキング関数を実行しながら、モデルが進捗を説明できます。

支払いと航空券の変更は、必ず確認ステップの後に実行します。自然な声で話せるようになっても、取り消せない操作に必要な承認基準は下がりません。

テクニカルサポートがアカウント障害を診断する

短時間で終わるアカウント照会にはGemini 3.8 Liveが適しています。複数のログを集め、設定を確認する診断なら、Extended Thinkingを使う理由があります。

この使い分けが重要なのは、深い推論にもコストがかかるからです。業務の複雑さで振り分け、その後に解決率とエスカレーション率を比較します。モデル名から安全そうに見えるという理由だけで、すべてのパスワードリセットを重い処理経路に通すべきではありません。

電話回線より先にバックグラウンド処理を実装する

まず、テキストで開始するセッションとスタブツールを用意します。電話キャリア、マイク、音声ブリッジ、本番カレンダーという4つのデバッグ要因を追加する前に、非同期処理の挙動だけを切り分けられます。

以下の例は、Googleの現行Python SDK、Extended Thinkingの設定、ノンブロッキング関数の宣言、ツール応答のパターン、interaction_statususageMetadata の各フィールドに沿っています。返された24 kHzの音声は response.wav に保存します。ツールの結果はローカルのスタブなので、実際のカレンダーにはアクセスしません。

Bash
pip install -U google-genai
export GEMINI_API_KEY="YOUR_API_KEY"
Python
import asyncio
import wave

from google import genai
from google.genai import types

client = genai.Client()
model = "gemini-3.8-live-extended-thinking"

check_availability = types.FunctionDeclaration(
    name="check_availability",
    description="Checks the calendar for the next available appointment.",
    behavior="NON_BLOCKING",
    parameters={
        "type": "OBJECT",
        "properties": {},
    },
)

config = types.LiveConnectConfig(
    response_modalities=["AUDIO"],
    thinking_config=types.ThinkingConfig(thinking_level="low"),
    tools=[types.Tool(function_declarations=[check_availability])],
)


async def main():
    async with client.aio.live.connect(model=model, config=config) as session:
        await session.send_client_content(
            turns={
                "parts": [
                    {"text": "Find the next available appointment and keep me updated."}
                ]
            }
        )

        with wave.open("response.wav", "wb") as audio:
            audio.setnchannels(1)
            audio.setsampwidth(2)
            audio.setframerate(24000)

            async for message in session.receive():
                status = getattr(message, "interaction_status", None)

                if message.data is not None:
                    audio.writeframes(message.data)

                if message.usage_metadata:
                    print("Tokens:", message.usage_metadata.total_token_count)

                if message.tool_call:
                    replies = []
                    for call in message.tool_call.function_calls:
                        replies.append(
                            types.FunctionResponse(
                                id=call.id,
                                name=call.name,
                                response={"result": "Tuesday morning is available."},
                            )
                        )
                    await session.send_tool_response(function_responses=replies)

                if status == "IDLE":
                    print("Interaction complete")
                    break


if __name__ == "__main__":
    asyncio.run(main())

最も起こりやすい実装ミスは、最初の turnComplete でループを抜けることです。Extended Thinkingは「確認しています」と話し終えていても、ツールの応答を待っている場合があります。interaction_statusIDLE になるまで受信を続け、ツール呼び出しIDを最終的な業務結果とひも付けたままにします。

本番の電話エージェントでは、このループが正しく動作してから音声ブリッジを追加します。モデルを取り巻く電話キャリアとオーケストレーション層を選ぶ際は、幅広い 音声エージェントのコスト比較 が参考になります。Googleのトークン課金と、より単純なフロントエンド側の音声料金を比較するなら、GPT-Live-1の通話コスト分析 を見ると、どちらにも完了タスクを分母にする必要がある理由が分かります。

デモではなく完了台帳を軸に実証する

  1. 完了を示すイベントを1つ決める

    確定予約のように、対象業務を1つに絞ります。完了を証明するデータベース上のイベントを明文化し、失敗、途中離脱、重複処理、有人対応への切り替えに当たる状態をすべて定義します。

  2. ライブ処理のライフサイクルを記録する

    セッションID、すべてのツール呼び出しID、interaction_status の変化、ツールの開始・終了時刻、usageMetadata を保存します。つなぎの発話は進捗であって、完了ではありません。

  3. 課金される全レイヤーを結び付ける

    Gemini の利用料、カレンダーまたはCRMの料金、電話キャリア料金、インフラ、再試行、スタッフの作業時間を、同じ通話記録にひも付けます。Googleの例示的な音声小計 $0.061 を、既存システムの総額と比較してはいけません。

  4. 失敗経路をテストする

    エージェントに割り込み、照会中に希望日を変え、ツールをタイムアウトさせ、空きなしを返し、結果が出る前に電話を切ります。古い関数呼び出しから予約が書き込まれないことを確認します。

  5. 完了タスクを比較する

    現在のフローと新しいフローに、同じ種類の電話を通します。検証済みの完了、途中離脱、エスカレーション作業、重複操作、完了タスク当たりの総コストを比較します。記録が一致して初めて、コスト削減を主張できます。

導入前に理解すべき限界

モデルは沈黙を埋められます。しかし、遅いカレンダーを高速化したり、品質の悪い電話回線を直したり、何をもって業務完了とするかを決めたりはできません。

音声のみのセッションは、長時間会話向けのセッション管理手法を追加しない限り15分に制限されます。ネイティブ音声のコンテキスト上限は128,000トークンです。また、ターン数の多い長時間通話では、過去のコンテキストが再処理されるため、単純に通話時間から見積もった料金とは異なる可能性があります。

セキュリティは引き続きアプリケーション側の責任です。ブラウザから直接接続する場合は、標準APIキーではなくエフェメラルトークンを使います。予約、返金、アカウント変更には、認証、検証、冪等性、監査証跡が必要です。

非同期処理には、古いタスクの結果が遅れて届くという本番上のリスクもあります。ツールの実行中に相手が依頼を変えると、変更前の結果が後から返ってくる可能性があります。タスクの状態を明示的に追跡し、現在の意図と一致しない結果は拒否します。

月曜から始めるなら、対象キューを1つに絞って計測する

ツールの応答を無言で待つために、電話の相手が同じ内容を繰り返す、予約を諦める、スタッフによる後処理が発生するといった問題があるなら、今週から着手する価値があります。直接的な照会にはGemini 3.8 Liveを使い、本当に複数ステップが必要なフローを1つだけExtended Thinkingに振り分けます。どちらも同じ完了台帳で管理します。

一方、自社システム内で完了をまだ証明できない場合、電話キャリア経路が安定していない場合、確認手順のない取り消し不能な操作が含まれる場合は、導入を待つべきです。新しいモデルより先に、記録の仕組みが必要です。

このリリースは、テキスト専用製品、ツールがすぐ応答する音声フロー、すでに完了率・エスカレーション率・コストの目標を満たしている電話エージェントには重要ではありません。新モデルが登場したというだけで、計測済みのシステムを置き換える理由にはなりません。

運用コストや業務フローを変えるアップデートを平易に読み解く記事を受け取るには、ニュースレターにご登録ください

最終更新
2026年9月16日
カテゴリー
Explained

Googleでこのサイトを優先する

omidsaffari.comをGoogle検索の優先ソースに追加

omidsaffari.comを優先ソースに設定すると、GoogleがTop Stories・AI Overviews・AI Modeであなたのために優先表示します。

Cloudflare Workers デプロイをクライアント単位で分離する権限設計

Cloudflare Workers デプロイをクライアント単位で分離する権限設計

Cloudflare Workers デプロイをクライアント単位で安全に分離する方法を解説します。4つのロール、アカウント所有APIトークン、Wranglerの設定、バインディングやDurable Objects、Routesに残る権限上の注意点まで、制作会社が実運用へ移す手順を具体的に整理しました。2026年9月15日Explained
Claude Code セキュリティ:依存関係のインストールだけに通信を許可する

Claude Code セキュリティ:依存関係のインストールだけに通信を許可する

Claude Code 2.1.271では、サンドボックスの自動モードでネットワーク許可をコマンド単位に限定できます。依存関係のインストール時だけレジストリを開き、その後のビルドやテストへ通信権限を引き継がせない設定方法、適用範囲、永続許可との違い、見落としやすい制約を実務目線で解説します。2026年9月15日Explained
Vercel AI SDKの料金設計:既存サブスクリプションでエージェント費用を抑える

Vercel AI SDKの料金設計:既存サブスクリプションでエージェント費用を抑える

Vercel AI SDKがClaude CodeやCodexなどの既存サブスクリプションを使う仕組みを解説。認証情報の優先順位、プラン利用枠とAPI・AI Gatewayの請求先、Vercel Sandboxに残る実行コストまで、どの経路が誰に向くかを実例と設定手順で整理します。2026年9月15日Explained
Cloudflare Browser Runの新機能:ブラウザ自動化を承認済みホストに限定

Cloudflare Browser Runの新機能:ブラウザ自動化を承認済みホストに限定

Cloudflare Browser Runの新しいセッションガードレールと読み取り専用Live Viewを解説します。ブラウザ自動化の通信先を承認済みホストに限定し、クライアントに操作権を渡さずレビューしてもらう設計から、実装手順、料金への影響、許可リスト運用の落とし穴まで実務目線で整理します。2026年9月14日Explained
AIコールセンターの費用はどう変わる?GPT-Live-1を実例で試算

AIコールセンターの費用はどう変わる?GPT-Live-1を実例で試算

GPT-Live-1の音声セッションは1分$0.05。ただしAIコールセンターの実コストには、バックエンド推論、ツール、電話回線も含まれます。90秒の予約電話を例に、解決済み通話1件あたりの費用、SIP構成、割り込み対応、バックエンド選定、導入判断の測り方まで具体的に整理します。2026年9月14日Explained
ChatGPT デスクトップアプリのAppshots活用法:Windowsの情報共有を効率化

ChatGPT デスクトップアプリのAppshots活用法:Windowsの情報共有を効率化

ChatGPT デスクトップアプリのAppshotsをWindowsで使い、最前面のウィンドウをチャットへ渡す手順を解説します。画像と利用可能なテキストの範囲、送信先の設定、クライアントメールやエラー調査での使い方、共有前に確認すべきプライバシー上の注意点まで、実務目線で整理します。2026年9月14日Explained
Vercel CDNでFastAPIの静的ファイル配信を効率化する

Vercel CDNでFastAPIの静的ファイル配信を効率化する

Vercel CDNがFastAPIのapp.frontend()とStaticFilesを直接配信し、Function呼び出し、CPU、オリジン転送を減らす仕組みを解説します。料金への影響、ルート順序、ミドルウェア、依存関係の注意点を押さえ、公開ファイルと保護ファイルを分けて安全に検証する手順まで整理しました。2026年9月13日Explained
OpenAI APIキーの有効期限に備える、安全なローテーション設計

OpenAI APIキーの有効期限に備える、安全なローテーション設計

OpenAIのプロジェクトAPIキーに有効期限を設定できるようになりました。期限切れによる定期ジョブの停止を防ぐため、担当者の決め方、交換時期、シークレットストアへの反映、実環境での検証、旧キーの失効までを整理。安全なローテーション手順と運用コストの見積もり方を実務目線で解説します。2026年9月13日Explained
ニュースレター

毎週日曜、一通の手紙。動くシステムの話。感想戦ではなく。

週刊。スパムなし。いつでも解除できます。