# Claude Agent SDKの便利だけど知られていない機能
🌍 エージェントの応答を待つ間、画面が真っ白で不安になったことはありませんか?リアルタイムストリーミングで解決です!
`include_partial_messages` を有効にすれば、テキストやツール呼び出しが生成される様子をリアルタイムで受信できます。
📌 タイトル:リアルタイム部分メッセージ
🔗 URL:
🧩 概要
`include_partial_messages`(Python)/ `includePartialMessages`(TypeScript)を `True` に設定すると、通常の `AssistantMessage` に加えて `StreamEvent` メッセージが送信されます。`StreamEvent` にはClaude APIの生のストリーミングイベント(`content_block_delta` の `text_delta` や `input_json_delta` など)が含まれ、テキストの断片やツール入力のチャンクをリアルタイムで受信できます。これにより、タイピング風のテキスト表示やツール実行中のステータス表示など、応答性の高いUIを構築できます。
🛠 使い方
```python
# Python - テキストチャンクをリアルタイム表示
from claude_agent_sdk import query, ClaudeAgentOptions
from claude_agent_sdk.types import StreamEvent
options = ClaudeAgentOptions(include_partial_messages=True)
async for message in query(prompt="データベースの仕組みを説明してください", options=options):
if isinstance(message, StreamEvent):
event = message.event
if event.get("type") == "content_block_delta":
delta = event.get("delta", {})
if delta.get("type") == "text_delta":
print(delta.get("text", ""), end="", flush=True)
```
```typescript
// TypeScript - ツール呼び出しのストリーミング表示
import { query } from "
@anthropic-ai/claude-agent-sdk";
let currentTool: string | null = null;
for await (const message of query({
prompt: "Read the README.md file",
options: { includePartialMessages: true }
})) {
if (message.type === "stream_event") {
const event = message.event;
if (event.type === "content_block_start" && event.content_block.type === "tool_use") {
currentTool = event.content_block.name;
process.stdout.write(`\n[Using ${currentTool}...]`);
} else if (event.type === "content_block_delta" && === "text_delta") {
process.stdout.write(
} else if (event.type === "content_block_stop" && currentTool) {
console.log(" done");
currentTool = null;
}
}
}
```
🏗 本番システムへの組み込み方
・チャットUIで `text_delta` を受信するたびにメッセージバブルにテキストを追加し、タイピング風の表示を実現します
・`content_block_start`(type: `tool_use`)でツール名を検知し、「実行中...」のスピナーを表示します
・`message_start`/`message_stop` イベントでメッセージの開始・完了を追跡します
・テキストデルタは自分で結合する必要があるため、アキュムレータを用意します
💡 ユースケース
💬 ChatGPT風のリアルタイムタイピング表示をカスタムUIに実装する
🔧 エージェントが使用中のツール名とその進捗をステータスバーに表示する
📝 長文の分析結果を、完成を待たずに部分的に表示開始する
⚠️ 注意点
・`StreamEvent` のイベントは生のClaude APIイベントであり、蓄積済みテキストではありません。テキストデルタを自分で結合する必要があります
・構造化出力(`structured_output`)はストリーミングデルタでは送信されず、最終の `ResultMessage` にのみ含まれます
・ツール実行中(`in_tool` フラグ)はテキストストリーミングを一時停止するなど、UIの状態管理が必要です
✨ 「処理中です、お待ちください...」だけの画面はもう卒業。部分メッセージでユーザーとエージェントの距離を縮めましょう!
#
ClaudeAgentSDK# #
AIAgent#