Agent SDK のストリーミング|返事を少しずつ表示する

公開 更新 著者 永上裕之仕事の自動化
AIの返事が一文字ずつ画面に流れて表示されていくイメージ

この記事の要点

  • 既定では、文章や道具の呼び出しが1かたまり書き終わってから届く。設定を1つ足すと、書いている途中から少しずつ届く
  • 届くのは API の生の出来事。文章のかけらは自分でつなぎ合わせる
  • サブエージェントの途中経過は流れてこない。途中で切れた時も、最後の合図だけは必ず届く

社内向けに AI のチャット画面を作ると、「返事が出るまで何も表示されず、止まっているように見える」 という声がよく出ます。長い返事ほど、待っている間の不安は大きくなります。

この記事では、公式ドキュメント「Stream responses in real-time」(2026年11月10日確認)にもとづいて、Claude Agent SDK で返事を書いている途中から少しずつ表示する方法を整理します。SDK の全体像は Claude Agent SDK とは で解説しています。

結論:設定を1つ足すと「書いている途中」から届く

既定の SDK は、文章や道具の呼び出しを「1かたまり書き終わってから」まとめて届けます。 途中から届けてほしいときは、オプションの includePartialMessages(Python では include_partial_messages)を true にします。

すると、いつものまとまったメッセージに加えて、書いている途中の出来事(ストリームの出来事) が次々に届くようになります。

上は返事がまとめて届く様子、下は少しずつ流れて届く様子を並べた比較図
上は返事がまとめて届く様子、下は少しずつ流れて届く様子を並べた比較図(イメージ)

届く出来事の種類

届くのは Claude API の生の出来事です。文章がつなぎ合わさった形ではなく、かけらで届く ので、表示する側でつなぎ合わせます。

出来事意味
message_start新しい返事が始まった
content_block_start文章か道具の呼び出しのかたまりが始まった
content_block_deltaかたまりの中身の続きが届いた
content_block_stopかたまりが終わった
message_delta止まった理由や使った量などの更新
message_stop返事が終わった

文章を表示したいときは、content_block_delta のうち、中身の種類が text_delta のもの を拾って、順につなげて表示します。

道具を使っている様子も見せられる

道具の呼び出しも、少しずつ流れてきます。「いま何をしているか」を画面に出すと、待ち時間の不安が減ります。

  1. content_block_start で、どの道具を使い始めたかが分かる
  2. content_block_delta(中身は input_json_delta)で、道具に渡す内容が少しずつ届く
  3. content_block_stop で、呼び出しの組み立てが終わる

公式の例では、道具を使っている間だけ「[Read を使用中…]」のような表示を出し、終わったら「完了」と出す画面の作り方が紹介されています。

知っておきたい3つの注意

サブエージェントの途中経過は流れてこない

ストリームの出来事は、親の会話の分だけ です。サブエージェントの文章は、少しずつは届きません。どのサブエージェントの出力かを見分けたいときは、まとまったメッセージの側にある情報を使います。サブエージェントの使い方は Agent SDK のサブエージェント で解説しています。

途中で切れても「終わりの合図」は届く

通信が切れた、途中で止めた、などで返事が途中で切れることがあります。その場合も、message_stop は必ず届きます。 ただし、その手前の content_block_stop や message_delta は届かないことがあります。道具の呼び出しのかたまりが閉じないまま終わった時は、その呼び出しの中身は未完成として扱います。

古い版では、切れた時に終わりの合図が届かず、画面が「作成中」のまま残ることがありました(Claude Code 2.1.290 で改善。TypeScript 版 SDK 0.3.290 以降、Python 版 0.2.164 以降に同梱)。

決まった形の出力は、最後の結果を使う

決まった形(JSON)で答えさせる機能と一緒に使うと、途中のかけらは確認前の下書きとして流れてきます。確かめ終わった正しい結果は、最後の結果メッセージにだけ入ります。 形の決め方は Agent SDK の構造化出力 で解説しています。

仕事で使うときの考え方

少しずつ表示するかどうかは、「人が画面を見て待つかどうか」で決めます。

使い方おすすめ
社内のチャット画面で人が待つ少しずつ表示する(待ち時間の不安が減る)
夜間にまとめて処理する既定のまま(最後の結果だけ使えば十分)
結果を表やデータとして使う既定のまま+構造化出力

使った量(料金)を見たいときは、最後の結果メッセージの数字を使います。料金の見方は Agent SDK の料金の把握 を参照してください。

まとめ

出典

永上裕之

ユニコスクール株式会社 代表取締役。AIエージェント専門のスクール&コミュニティを運営しています。

この記事はAIを使って下書きし、著者が事実確認・加筆しています。ツールの機能や料金は変わることがあるため、最新の情報は各社の公式ページでご確認ください。

関連する記事