音声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日、Google は Gemini 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複数ステップが必要、またはツールの処理に数秒かかる非同期のみ。low、medium、high の思考レベルに対応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_status、usageMetadata の各フィールドに沿っています。返された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_status が IDLE になるまで受信を続け、ツール呼び出し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であなたのために優先表示します。

AI 文字起こしの料金は据え置き:Grok Voice Transcribe 2.0移行ガイド

AI 文字起こしの料金は据え置き:Grok Voice Transcribe 2.0移行ガイド

Grok Voice Transcribe 2.0のAI 文字起こし料金は、バッチが音声1時間あたり$0.10、ストリーミングが$0.20のままです。デフォルトモデル変更で起こり得る出力差、移行前に確認すべき総コスト、1.0と2.0を同条件で検証して本番モデルを固定する手順を、運用担当者向けに整理します。2026年9月20日Explained
HAR ファイルで原因を追う:Cloudflare Browser Runの失敗調査

HAR ファイルで原因を追う:Cloudflare Browser Runの失敗調査

Cloudflare Browser RunのSession RecordingにInspectパネルが加わり、完了後のログ、通信、最終DOMを確認できるようになりました。HAR ファイルで失敗原因を絞り込み、不要な再実行を減らす手順、料金への影響、録画では見えない領域まで、実務向けに分かりやすく解説します。2026年9月19日Explained
v0でnpm プライベートパッケージを活用する:社内コンポーネント再利用の実践ガイド

v0でnpm プライベートパッケージを活用する:社内コンポーネント再利用の実践ガイド

v0が共有環境変数経由でnpm プライベートパッケージに対応。NPM_TOKENとNPM_RCの選び方、認証情報をモデルやSandboxに渡さない仕組み、社内コンポーネントを試作から本番へ引き継ぐ設定手順、料金と実務上の注意点を整理し、差し替え工数を減らせるか判断する方法を解説します。2026年9月19日Explained
Claude Code 料金を見直す:auto modeの分類器課金が消える条件

Claude Code 料金を見直す:auto modeの分類器課金が消える条件

Claude Code 2.1.278では、auto modeの安全判定をサーバー側で処理できるセッションの分類器リクエスト課金がなくなります。API、Enterprise、クラウド、ゲートウェイ環境で適用条件を見極め、/statusで実際の課金経路を確認し、予算へ正しく反映する方法を解説します。2026年9月19日Explained
Vercel ビルド高速化:Turboを1回だけ使う方法と料金

Vercel ビルド高速化:Turboを1回だけ使う方法と料金

VercelのPro/Enterpriseで、プロジェクト設定を変えずに1回のデプロイだけTurboを指定する方法を解説します。GitHubのコミットマーカー、Vercel CLI、デプロイAPIという3つの経路と、1分あたり$0.105からの料金、権限不足時のフォールバック、通常ビルドとの比較手順まで整理しました。2026年9月18日Explained
ChatGPT Word連携の実力:できること・料金・導入手順

ChatGPT Word連携の実力:できること・料金・導入手順

ChatGPT Word連携を使えば、Wordのサイドバーで下書き、要約、選択範囲の修正、見出し調整まで完結します。利用条件、共有される使用量、料金の考え方、データ境界、導入手順を、提案書やSOPの具体例とともに解説。コピペ往復を減らしつつ、事実や約束を守るレビュー方法も紹介します。2026年9月18日Explained
Google Antigravity移行ガイド:10月5日までのローカルジョブ対応

Google Antigravity移行ガイド:10月5日までのローカルジョブ対応

Google Antigravityの5月版エージェントは2026年10月5日に停止予定です。出力のみのジョブはID変更で済みますが、ローカルツールやfunction_callを扱う環境には、新しいツール名、PascalCase引数、行範囲編集に対応するアダプター改修が必要です。安全な移行手順を解説します。2026年9月18日Explained
Cloudflare WorkersのRPCトレースで遅延箇所を特定する

Cloudflare WorkersのRPCトレースで遅延箇所を特定する

Cloudflare WorkersのRPCトレースで、遅い顧客リクエストを別のWorkerやDurable Objectまで追跡。担当サービスとメソッドを見つける手順、サンプリング率、保持期間、2026年10月1日以降のスパン単位の料金まで、チェックアウトの例で実践的に解説します。2026年9月17日Explained
ニュースレター

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

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