メインコンテンツへスキップ

概要

Claude Agent SDK は、エージェントと対話するための 2 つの異なる入力モードをサポートしています。
  • ストリーミング入力モード(デフォルト&推奨)- 永続的でインタラクティブなセッション
  • シングルメッセージ入力 - セッション状態を使用して再開する 1 回限りのクエリ
このガイドでは、各モードの違い、利点、ユースケースについて説明し、アプリケーションに適したアプローチを選択するのに役立てます。

ストリーミング入力モード(推奨)

ストリーミング入力モードは、Claude Agent SDK を使用する推奨される方法です。エージェントの機能へのフルアクセスを提供し、豊かでインタラクティブなエクスペリエンスを実現します。 エージェントが長期間実行されるプロセスとして動作し、ユーザー入力を受け取り、割り込みを処理し、権限リクエストを表示し、セッション管理を処理することができます。

仕組み

利点

画像アップロード

メッセージに画像を直接添付して、ビジュアル分析と理解を実現

キューに入れたメッセージ

複数のメッセージを順序立てて処理し、割り込み機能を備えて送信

ツール統合

セッション中にすべてのツールとカスタム MCP サーバーへのフルアクセスをサポート

リアルタイムフィードバック

最終結果だけでなく、生成されたレスポンスをリアルタイムで確認

コンテキスト永続性

複数のターンにわたって自然に会話コンテキストを維持

実装例

import { query, type SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";
import { readFile } from "fs/promises";

async function* generateMessages(): AsyncGenerator<SDKUserMessage> {
  // First message
  yield {
    type: "user",
    message: {
      role: "user",
      content: "Analyze this codebase for security issues"
    },
    parent_tool_use_id: null
  };

  // Wait for conditions or user input
  await new Promise((resolve) => setTimeout(resolve, 2000));

  // Follow-up with image
  yield {
    type: "user",
    message: {
      role: "user",
      content: [
        {
          type: "text",
          text: "Review this architecture diagram"
        },
        {
          type: "image",
          source: {
            type: "base64",
            media_type: "image/png",
            data: await readFile("diagram.png", "base64")
          }
        }
      ]
    },
    parent_tool_use_id: null
  };
}

// Process streaming responses
for await (const message of query({
  prompt: generateMessages(),
  options: {
    maxTurns: 10,
    allowedTools: ["Read", "Grep"]
  }
})) {
  if (message.type === "result" && message.subtype === "success") {
    console.log(message.result);
  }
}

シングルメッセージ入力

シングルメッセージ入力はより単純ですが、より制限されています。

シングルメッセージ入力を使用する場合

シングルメッセージ入力は以下の場合に使用してください。
  • 1 回限りのレスポンスが必要な場合
  • 画像添付またはセッション中の制御メソッドが不要な場合
  • Lambda 関数などのステートレス環境で動作する必要がある場合

制限事項

シングルメッセージ入力モードは以下をサポートしていません
  • メッセージ内の直接的な画像添付
  • 動的なメッセージキューイング
  • リアルタイム割り込み
  • 自然なマルチターン会話

実装例

import { query } from "@anthropic-ai/claude-agent-sdk";

// Simple one-shot query
for await (const message of query({
  prompt: "Explain the authentication flow",
  options: {
    maxTurns: 1,
    allowedTools: ["Read", "Grep"]
  }
})) {
  if (message.type === "result" && message.subtype === "success") {
    console.log(message.result);
  }
}

// Continue conversation with session management
for await (const message of query({
  prompt: "Now explain the authorization process",
  options: {
    continue: true,
    maxTurns: 1
  }
})) {
  if (message.type === "result" && message.subtype === "success") {
    console.log(message.result);
  }
}