CLAUDE LABEN
MEMORY — Claude Codeの長時間セッションのメモリリークが一掃されました。MCP stdioサーバのstderrが最大64MB蓄積する問題やLSPドキュメントの開きっぱなしが修正されていますTABLES — 非常に大きなmarkdownテーブルが描画を止める不具合を修正。200行を超えるテーブルは先頭200行と「… N more rows」表示になりますSPEED — deny/askルールを多く抱えたセッションで毎ターン数秒遅くなる問題を修正。ルールマッチャがコンパイルして再利用されますTOOLS — MCPツールが多いprint/SDKセッションでは、ツールプールの組み立てをキャッシュし最大7倍速いラウンドになりましたARTIFACTS — Claude CodeのArtifactsは、セッションの作業をその場で更新される共有Webページに変えます。PR解説やダッシュボードに使えますDEADLINE — 7月24日にOpus 4.7のfastモードが削除されます。speed: "fast" はエラーになるため、Opus 4.8のfastモードへ移行が必要ですMEMORY — Claude Codeの長時間セッションのメモリリークが一掃されました。MCP stdioサーバのstderrが最大64MB蓄積する問題やLSPドキュメントの開きっぱなしが修正されていますTABLES — 非常に大きなmarkdownテーブルが描画を止める不具合を修正。200行を超えるテーブルは先頭200行と「… N more rows」表示になりますSPEED — deny/askルールを多く抱えたセッションで毎ターン数秒遅くなる問題を修正。ルールマッチャがコンパイルして再利用されますTOOLS — MCPツールが多いprint/SDKセッションでは、ツールプールの組み立てをキャッシュし最大7倍速いラウンドになりましたARTIFACTS — Claude CodeのArtifactsは、セッションの作業をその場で更新される共有Webページに変えます。PR解説やダッシュボードに使えますDEADLINE — 7月24日にOpus 4.7のfastモードが削除されます。speed: "fast" はエラーになるため、Opus 4.8のfastモードへ移行が必要です
記事一覧/API & SDK
API & SDK/2026-05-30上級

Claude API の max_tokens 打ち切りを継続生成でつなぐ — 重複とコードブロック分断を防ぐ実装

長文生成が途中で切れる max_tokens 打ち切りを検出し、assistant プレフィルで続きを書かせ、つなぎ目の重複やコードフェンスの分断を防いで安全に組み立てる継続生成の実装パターンをまとめました。

Claude API115stop_reason2長文生成3TypeScript24本番運用36

プレミアム記事

6本の壁紙アプリのリリースノートを多言語でまとめて生成させていたとき、出力の末尾が文の途中でぷつりと切れているのに、スクリプトは何事もなかったように次の工程へ進んでいました。原因はあっけないもので、stop_reason を確認せず content[0].text をそのまま結合していたからです。2014年から個人開発を続けてきて、AdMob 収益のために配信ページを整える作業は何百回とやってきましたが、生成の「途中で切れる」挙動は普通のアプリのバグとは性質が違い、エラーも例外も出ないまま静かに壊れます。この静かな失敗をどう検出し、続きをどう安全につなぐか。本番で実際に踏んだ落とし穴を含めて、継続生成の実装を整理します。

長文生成が途中で切れる瞬間に何が起きているか

Claude API のレスポンスには stop_reason という重要なフィールドがあります。生成が自然に終わったときは end_turn、ツール呼び出しで止まったときは tool_use、そして max_tokens に達して打ち切られたときは max_tokens が入ります。長文を一度に書かせようとすると、モデルがまだ書き続けたいのに max_tokens の上限に当たって途中で停止する、という状態が頻繁に起きます。

問題は、このとき返ってくる content には「そこまでに書けた分」がきちんと入っている点です。つまりレスポンス自体は正常に 200 で返り、テキストも入っているので、stop_reason を見なければ「完成した出力」と区別がつきません。私がリリースノート生成で踏んだのは、まさにこの罠でした。英語と日本語は収まっていたのに、3言語目の途中で max_tokens に当たり、見出しの途中で切れた文字列がそのまま配信用テキストに混ざっていたのです。

max_tokens を大きくすれば回避できると思いがちですが、これは半分しか正しくありません。モデルごとに出力上限があり、上限を引き上げてもトピックによっては足りない場合があります。さらに max_tokens を無条件に最大化すると、短くて済む生成にまで長いタイムアウト枠を確保することになり、レイテンシとコストの観点で不利になります。実用的な答えは「適度な max_tokens で生成し、max_tokens で止まったら続きを書かせて組み立てる」という継続生成(continuation)の設計です。

stop_reason を見ずに結合すると壊れる3つのパターン

継続生成を雑に実装すると、かえって出力が壊れます。私が実際に直面した壊れ方は次の3つでした。

1番目は途中切れの放置です。stop_reason を見ずに1回の応答だけで完了とみなすと、文の途中・コードの途中で終わったテキストがそのまま下流へ流れます。配信テキストやドキュメントの末尾が不自然に途切れていても、機械的なパイプラインは気づきません。

2番目はつなぎ目の重複です。続きを書かせるために「直前の続きを書いてください」と指示すると、モデルは丁寧さのあまり直前の段落を要約し直したり、同じ見出しをもう一度書いたりします。これを単純に結合すると、同じ文が二度現れる読みにくい出力になります。

3番目はコード構造の分断です。コードブロックの途中で max_tokens に当たると、開いている コードフェンス が閉じられないまま切れます。続きが別のコードフェンスから始まると、Markdown のパーサは入れ子を誤認し、本文がまるごとコードブロック扱いになって表示が崩れます。リリースノートに埋め込んだ設定例のコードが、丸ごとグレーの背景に飲み込まれていたのを見て、ようやくこの分断に気づきました。

この3つは独立した問題ではなく、継続ループの設計ひとつで連鎖的に防げます。順番に組み立てていきます。

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

この記事の続きを読む

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

この記事で得られること
stop_reason: max_tokens を検出して continuation ループを回す最小実装(TypeScript 約40行)
つなぎ目の重複を消すオーバーラップ検出トリミング関数と、200文字窓での突合ロジック
コードフェンスが奇数で分断されたまま結合される事故を防ぐ fence balance チェック
無限ループとコスト暴走を止める guard 回数上限と概算 USD 予算ガードの実装
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-07-01
Claude API のドキュメント抽出が「自信満々に間違える」とき — 沈黙する誤りを不変条件で捕まえる運用メモ
請求書や契約書の構造化抽出で一番怖いのは、クラッシュではなく「スキーマも通り信頼度も高いのに値だけ間違っている」沈黙の誤りです。不変条件・二段抽出・フィールド単位の誤り率で運用する実装メモを共有します。
API & SDK2026-06-17
Claude API のドキュメント抽出が「確信を持って間違える」とき — 検証層の設計メモ
Claude API で請求書や契約書を構造化抽出するとき、最も怖いのは例外ではなく「もっともらしく間違った JSON」です。スキーマ検証・算術整合・二重抽出の一致率で誤抽出を本番前に捕まえる検証層を、TypeScript の実装とともにまとめました。
API & SDK2026-06-17
Claude API のマルチテナント SaaS で「請求が合わない」を消す — テナント分離とコスト帰属の実装メモ
Claude API の SaaS をマルチテナント化したとき最初に壊れるのはコスト帳尻です。計測の単一窓口・原子的カウンター・Anthropic 請求との突合・テナント分離の敵対的検証まで、本番で動く TypeScript と運用判断を実装メモとしてまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →