◉GEMINI LABEN
●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…
記事一覧/API / SDK
◈ API / SDK/2026-07-17上級

途中で切れた Gemini のストリーミングを、引き直すか続きから書かせるか — 二重に払わないための分岐設計

モバイル回線で Gemini のストリーミングが切れたとき、全部引き直すか続きから書かせるかで費用は大きく変わります。思考トークンの二重発生、受信トークン数で置く分岐条件、文末チェックポイント、継ぎ目に出る3つの壊れ方まで設計としてまとめました。

Gemini API248ストリーミング13コスト設計14冪等性6モバイル

✦ プレミアム記事

電車で移動しながら自分のアプリを触っていて、生成中の文章が途中で止まりました。ホームに入った瞬間です。アプリは黙って最初からやり直し、同じ書き出しがもう一度流れてきました。

そのとき引っかかったのは待たされたことよりも、いま消えた 600 トークン分の文章にも、おそらく料金は発生しているという事実でした。ユーザーには一度も届かないまま、二度目の生成が始まっています。

Google が公開した東南アジアのレポートでは、Gemini アプリへのリクエストのおよそ 75% がモバイルからで、音声・写真・動画を伴うものも 40% を超えていました。回線が揺れる前提で作らなければならない、という話が数字として出てきたことになります。個人開発でモバイル向けに Gemini を組み込んでいる立場からすると、切断は例外ではなく通常運転の一部です。

なぜ切れるのかの切り分けはストリーミングが本番で途中で切れるときの原因切り分けの順序に譲ります。ここで扱うのは、切れた後に何を選ぶかという一点です。

切れたストリームは「どこまで課金されたか」が分からない

streamGenerateContent の usageMetadata は、チャンク列の終盤で届きます。最後まで受け取れた場合はそこに入力・出力・思考のトークン数が入っています。

逆に言えば、途中で切れた試行については、この数字が手元に来ません。何トークン分を生成したところで切れたのか、クライアントからは確定できないということです。

そして、クライアントが接続を落とした時点でサーバ側の生成がどう扱われるか、課金がどこで止まるかは、公開ドキュメントに明示されていません。

ここで「たぶん課金されない」と仮定してしまうと、設計が崩れます。私自身は、受信済みチャンク分は課金されたものとして扱う前提で組んでいます。分からないものを楽観側に倒さない、というだけの話です。本番運用で効いてくる注意点は、この不確かさが再試行のたびに積み上がることのほうです。

状況usageMetadata実際の課金
最後まで受信取得できる数字どおりに把握できる
途中で切断届かない不明(悲観側に見積もる)
クライアント側で中止届かない不明(同上)

計測できない支出があるなら、せめて発生回数だけは数えておきます。切断イベントに受信済み文字数を添えてログに落とすだけでも、後で効いてきます。

引き直しと継続では、費用の形が違う

記号を置きます。プロンプトのトークン数を P、完成までに必要な出力を O、切れるまでに受け取った出力を R とします。入力単価を Ci、出力単価を Co とします。

切れた試行のぶん(Ci×P + Co×R)は、どちらを選んでも既に出ていきます。差が出るのはその後です。

方式二度目の入力二度目の出力捨てるもの
引き直すPO受信済みの R トークン
続きから書かせるP + RO − R継ぎ目の滑らかさ

差額を出すと、こうなります。

引き直し − 継続
 = (Ci×P + Co×O) − (Ci×(P+R) + Co×(O−R))
 = Co×R − Ci×R
 = R × (Co − Ci)

Gemini の価格表では出力単価が入力単価より高く置かれています。つまり Co − Ci は正で、継続は常に名目上は安くなるという結論になります。

ただし式をよく見ると、節約額は R に比例します。R が 60 トークンなら、浮くのは 60 × (Co − Ci) です。実装の複雑さと釣り合う額ではありません。

費用だけを見て「常に継続」と決めるのは、この式の読み違えです。効いてくるのは R が大きいとき、つまり長い文章を書かせている最中に落ちたときだけです。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦切れるたびに全部引き直していた再試行を、受信済み出力を活かす方式に切り替える判断基準が手に入る
✦継続と引き直しの費用差を R×(出力単価−入力単価) という式で自分の構成に当てはめて計算できる
✦継ぎ目の重複・文体の段差・構造化出力の破綻という副作用を、実装レベルで潰せる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

◈ API / SDK2026-08-23
Gemini TTS を streamGenerateContent で受け取り、先頭のチャンクから鳴らす
Gemini の TTS をストリーミングで受け取ると、音声は「ファイル」ではなく PCM の断片で届きます。チャンクごとに WAV ヘッダを付けた場合に何が起きるかを手元で測り、連結とヘッダの正しい順序を実装まで示します。
◈ API / SDK2026-08-18
Gemini 3.7 Flash と 3.1 Pro の使い分けを、速さではなくやり直しのコストで決める
新しい Flash が出るたびにモデル選定をやり直す作業を、判断基準ごと組み替えました。出力の誤りを機械で拾えるかどうかで振り分ける方法と、導入価格が切れる12月31日をまたいだ費用の出し方をまとめています。
◈ API / SDK2026-08-16
Gemini 3.7 Flash の値上げ分は、バッチ層へ移すとちょうど相殺されます
Gemini 3.7 Flash の導入価格は2026年12月31日で終わり、翌日から単価が倍になります。値上げの対象になるモデルとならないモデルを価格表で切り分け、自分の使用量から年明けの請求を先に出すところまでを整理しました。