Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Agent SDKは、エージェントとやり取りするための2つの異なる入力モードをサポートしています:
このガイドでは、各モードの違い、利点、使用例について説明し、アプリケーションに適したアプローチを選択するのに役立ちます。
ストリーミング入力モードは、Claude Agent SDKを使用する推奨方法です。エージェントの機能へのフルアクセスを提供し、豊富でインタラクティブな体験を可能にします。
エージェントが長時間実行されるプロセスとして動作し、ユーザー入力を受け取り、割り込みを処理し、許可リクエストを表示し、セッション管理を処理することを可能にします。
視覚的分析と理解のためにメッセージに直接画像を添付
順次処理される複数のメッセージを送信、割り込み可能
セッション中のすべてのツールとカスタムMCPサーバーへのフルアクセス
様々なポイントで動作をカスタマイズするためのライフサイクルフックを使用
最終結果だけでなく、生成される応答をリアルタイムで確認
複数のターンにわたって会話コンテキストを自然に維持
import { query } from "@anthropic-ai/claude-agent-sdk";
import { readFileSync } from "fs";
async function* generateMessages() {
// 最初のメッセージ
yield {
type: "user" as const,
message: {
role: "user" as const,
content: "このコードベースをセキュリティ問題について分析してください"
}
};
// 条件またはユーザー入力を待機
await new Promise(resolve => setTimeout(resolve, 2000));
// 画像付きのフォローアップ
yield {
type: "user" as const,
message: {
role: "user" as const,
content: [
{
type: "text",
text: "このアーキテクチャ図をレビューしてください"
},
{
type: "image",
source: {
type: "base64",
media_type: "image/png",
data: readFileSync("diagram.png", "base64")
}
}
]
}
};
}
// ストリーミング応答を処理
for await (const message of query({
prompt: generateMessages(),
options: {
maxTurns: 10,
allowedTools: ["Read", "Grep"]
}
})) {
if (message.type === "result") {
console.log(message.result);
}
}単一メッセージ入力はより簡単ですが、より制限があります。
以下の場合に単一メッセージ入力を使用してください:
単一メッセージ入力モードは以下をサポートしません:
import { query } from "@anthropic-ai/claude-agent-sdk";
// シンプルなワンショットクエリ
for await (const message of query({
prompt: "認証フローを説明してください",
options: {
maxTurns: 1,
allowedTools: ["Read", "Grep"]
}
})) {
if (message.type === "result") {
console.log(message.result);
}
}
// セッション管理で会話を継続
for await (const message of query({
prompt: "次に認可プロセスを説明してください",
options: {
continue: true,
maxTurns: 1
}
})) {
if (message.type === "result") {
console.log(message.result);
}
}