Claude API 実践:ストリーミング・Tool Use・構造化出力

AI Navigate Original / 2026/3/24

💬 オピニオンDeveloper Stack & Infrastructure
共有:

要点

  • Claude APIのストリーミング機能(SSE)でリアルタイム応答を実装する
  • Tool Use機能で関数呼び出しを設計し、外部ツール連携を実現する
  • JSON構造化出力促すプロンプト設計のポイントと実用例を紹介
  • Prompt Cachingにより同一プロンプトの再利用でAPIコールを最適化
  • Batch API活用で多数プロンプトの効率的な一括処理を実装可能

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へ再投入し会話を継続。

JSON形式の関数スキーマ定義例

続きを読むには無料登録が必要です

アカウントを作成すると、オリジナル記事の全文をお読みいただけます。