GEMINI LABEN
MEMORY — Memory Bank の Memory Profiles が GA になりました。静的スキーマの構造化プロファイルにより、セッション中の検索を挟まずに情報へ到達できますSCOPE — プロファイルは取り込み時のスコープごとに分離され、スキーマとスコープの組み合わせに対して単一のプロファイルが維持されますINGEST — IngestEvents API が GA になり、イベントのストリーミング・メモリのリビジョン管理・メタデータの付与が扱えるようになりましたAUDIO — gemini-3.1-flash-tts-preview が streamGenerateContent 経由のストリーミングに対応し、読み上げ開始までの待ち時間が縮みましたCLASSROOM — 8月10日から、既にアクセス権を付与されている K-12 と高等教育の全年齢の学生が Gemini in Classroom を利用できるようになりますSUNSET — 停止日が迫っています。8月17日に画像生成モデル、20日に Grok 4.1 ファミリー、31日に gemini-robotics-er-1.6-preview ですMEMORY — Memory Bank の Memory Profiles が GA になりました。静的スキーマの構造化プロファイルにより、セッション中の検索を挟まずに情報へ到達できますSCOPE — プロファイルは取り込み時のスコープごとに分離され、スキーマとスコープの組み合わせに対して単一のプロファイルが維持されますINGEST — IngestEvents API が GA になり、イベントのストリーミング・メモリのリビジョン管理・メタデータの付与が扱えるようになりましたAUDIO — gemini-3.1-flash-tts-preview が streamGenerateContent 経由のストリーミングに対応し、読み上げ開始までの待ち時間が縮みましたCLASSROOM — 8月10日から、既にアクセス権を付与されている K-12 と高等教育の全年齢の学生が Gemini in Classroom を利用できるようになりますSUNSET — 停止日が迫っています。8月17日に画像生成モデル、20日に Grok 4.1 ファミリー、31日に gemini-robotics-er-1.6-preview です
記事一覧/API / SDK
API / SDK/2026-07-17上級

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

モバイル回線でストリーミングが切れたあと、無条件に全部引き直していませんか。受信済み出力を続きに使う方式との費用差を式で出し、継ぎ目の壊れ方まで含めて分岐条件を決める設計をまとめます。

Gemini API207ストリーミング12コスト設計10冪等性6モバイル

プレミアム記事

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

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

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

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

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

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

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

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

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

状況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-08
打ち切りは失敗の合図ではありませんでした — ブロッキング挙動を伴う関数呼び出しの設計
呼び出しが返るまで待つ種類のツールをエージェントに持ち込むと、並列化と打ち切りの常識が反転します。サンドボックスで実測した数値とともに、再試行を観測へ振り替える設計をまとめました。
API / SDK2026-08-07
ストリーミング応答の日本語が静かに欠ける — バイト境界とイベント境界を実測で切り分ける
ストリーミング表示の日本語だけが欠ける現象を、ローカルの疑似SSEサーバで実測しました。壊れていた層は二つあり、片方は例外にすらならず、英語のテストでは検出率がゼロでした。
API / SDK2026-08-01
temperature 非推奨で先に困ったのは、決定性ではなく多様性の側でした
temperature・top_p・top_k の非推奨化で影響が出たのは決定性ではなく多様性を作る側でした。呼び出し箇所の数え方、多様性を入力層へ移す設計、実効多様度の測り方を実測値とともに残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →