CLAUDE LABEN
WWDC — WWDC 2026でSiriはGoogle Geminiベースと確定。ChatGPT等への外部ハンドオフは廃止され、サードパーティAI選択はEU(DMA)で当面非対応にBILLING — 6/15の課金変更まで残り6日。Agent SDK・headless Claude Code・GitHub Actions・他社エージェントがAPIレート準拠の月次クレジットへ移行OUTAGE — claude.ai・Claude Code・Coworkで障害が報告(6月)。スケジュール実行はfallbackModelとリトライ前提の設計が安全ですDYNAMIC-WORKFLOWS — Max・TeamプランとAPIでdynamic workflowsがデフォルトON。コードベース横断のバグ探索や独立検証に活用ULTRACODE — Claude Codeの新設定ultracodeがeffortメニューに追加。xhigh固定でワークフロー判断はClaudeに委ねますOPUS4.8 — Claude Opus 4.8が主要プランのデフォルトとして定着。コーディング・エージェント・推論を強化WWDC — WWDC 2026でSiriはGoogle Geminiベースと確定。ChatGPT等への外部ハンドオフは廃止され、サードパーティAI選択はEU(DMA)で当面非対応にBILLING — 6/15の課金変更まで残り6日。Agent SDK・headless Claude Code・GitHub Actions・他社エージェントがAPIレート準拠の月次クレジットへ移行OUTAGE — claude.ai・Claude Code・Coworkで障害が報告(6月)。スケジュール実行はfallbackModelとリトライ前提の設計が安全ですDYNAMIC-WORKFLOWS — Max・TeamプランとAPIでdynamic workflowsがデフォルトON。コードベース横断のバグ探索や独立検証に活用ULTRACODE — Claude Codeの新設定ultracodeがeffortメニューに追加。xhigh固定でワークフロー判断はClaudeに委ねますOPUS4.8 — Claude Opus 4.8が主要プランのデフォルトとして定着。コーディング・エージェント・推論を強化
記事一覧/API & SDK
API & SDK/2026-05-30上級

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

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

Claude API99stop_reason2長文生成3TypeScript34本番運用25

プレミアム記事

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-05-04
Bun × Claude API で本番運用するエッジAIサービス — Node.js移行の判断軸と落とし穴を回避する実装パターン
Claude APIをBun上で本番運用するための実装ガイド。Node.jsからの移行判断軸・組み込みSQLite/WebSocketの活用・ストリーミング最適化・典型的な落とし穴の回避策まで、動作するコードと実測値で解説します。
API & SDK2026-06-02
MCP の tools 以外の3つの能力を使い分ける:resources・prompts・sampling の設計
MCP サーバーで何でも tools にしてしまう設計の限界を、resources・prompts・sampling という3つの primitive で解きほぐします。壁紙アプリのアセット管理サーバーを題材に、判断基準と実装、クライアント対応の現実的な制約までまとめました。
API & SDK2026-05-31
Claude 非同期パイプラインで「毒メッセージ」を隔離する — デッドレターキュー設計の実装メモ
1件の壊れた入力がバッチ全体を止める「毒メッセージ」問題を、Cloudflare Queues のデッドレターキューで隔離する設計と実装。Claude API 特有の失敗パターンの切り分けまで実体験ベースでまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →