Claude APIのストリーミング応答実装
Claude APIのストリーミング機能(SSE: Server-Sent Events)を活用すると、応答をリアルタイムに受け取りながら処理できます。これにより、ユーザー体験が向上し、対話型アプリやチャットUIの応答速度を最適化できます。
基本的なストリーミング受信フロー
通常、APIは完結した応答を返しますが、ストリーミングモードでは応答がチャンク単位で徐々に届きます。クライアント側では各チャンクを逐次処理し、UIへ反映可能です。
Pythonでの簡単なSSEストリーミング受信例
import requests
def stream_claude_response(api_key, prompt):
url = "https://api.anthropic.com/v1/complete"
headers = {
"x-api-key": api_key,
"Accept": "text/event-stream"
}
data = {
"model": "claude-v1",
"prompt": prompt,
"stream": True
}
with requests.post(url, headers=headers, json=data, stream=True) as response:
for line in response.iter_lines():
if line:
decoded_line = line.decode('utf-8')
if decoded_line.startswith('data: '):
chunk = decoded_line[6:]
if chunk == '[DONE]':
break
print(chunk) # ここでデータチャンクを逐次処理
# 実行例
api_key = 'YOUR_API_KEY'
prompt = "Hello, Claude!"
stream_claude_response(api_key, prompt)
補足:実際のレスポンスサイズ・改行有無はAPIのバージョンによるため必ずドキュメントを確認してください。
Tool Use(関数呼び出し)機能の設計と使い方
Claude APIでは、外部ツールや関数を呼び出すTool Use機能を使うことで、チャット中に動的な処理や情報取得が可能になります。例えば、検索APIや計算ツールを組み込み、自然言語から関数パラメータを抽出して呼び出す設計が一般的です。
Tool Useを活かすための基本設計
- 関数のスキーマ定義:呼び出す関数の名前、パラメータ、説明を明確に定義します。
- Prompt内での呼び出し指示:ユーザーからの質問に対し、該当関数の呼び出しを行うか生成させる。
- フロントエンドでの関数呼び出し:APIの返答で得た関数呼び出し情報を基に外部APIや自作関数を実行し結果をAPIへ再投入し会話を継続。




