6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Agent SDKでAIエージェントを作る完全ガイド:サブエージェント・Tool Use・MCPを徹底解説

Last updated at Posted at 2025-12-02

はじめに:なぜ今、AIエージェントなのか

正直に言いましょう。

2025年、AIの世界で一番アツいキーワードって何だと思います?

それは間違いなくAIエージェントなんです。

ChatGPTが出てきたときは「会話ができるAI」って感じでしたよね。
でも今、AIは自律的にタスクをこなす存在に進化しつつある。

例えば...

  • コードを書いて、テストして、デバッグして、プルリクエストまで出す
  • Webを検索して、情報をまとめて、レポートを作成する
  • ファイルを分析して、データを加工して、別のシステムに連携する

こういうことが、人間の介入なしにできるようになってきてるんです。

これ、めちゃくちゃ大きな変化だと思いません?

で、Anthropicが提供するClaude Agent SDKは、まさにこの「AIエージェント」を構築するためのツールキット。

今回は、このAgent SDKを使って何ができるのか、どうやって作るのか、詳しく解説していきます。

AIエージェントって結局なんなの?

まず、「AIエージェント」の定義を整理しておきましょか。

【従来のAI(チャットボット)】

ユーザー → 質問 → AI → 回答 → ユーザー

これは「一問一答」のシンプルなやりとり。
AIは聞かれたことに答えるだけ。

【AIエージェント】

ユーザー → ゴール設定 → AI → 計画立案 → ツール実行 → 結果確認 
        → 次のアクション → ツール実行 → ... → 最終結果 → ユーザー

これが全然違うところで...

エージェントは自分で計画を立てて、必要なツールを使って、結果を評価しながら、ゴールに向かって自律的に動くんです。

つまり、「何をすべきか」を自分で判断して、「どうやるか」も自分で決める。

これが「AIエージェント」の本質。
image.png

Claude Agent SDKの全体像

Claude Agent SDKとは?

Claude Agent SDKは、Anthropicが提供するエージェント構築用のツールキットです。

元々は「Claude Code SDK」という名前だったんですけど、2025年に「Claude Agent SDK」にリネームされました。

なぜAgent SDKを使うのか

正直、素のClaude APIでもエージェント的な処理は作れるんです。

でも、Agent SDKを使うと...

機能 素のAPI Agent SDK
コンテキスト管理 自分で実装 自動で最適化
ツール連携 個別に実装 統合済み
権限制御 自分で実装 細粒度で制御可能
セッション管理 自分で実装 組み込み済み
エラーハンドリング 自分で実装 標準装備
プロンプトキャッシング 手動設定 自動最適化

要するに、「エージェント開発に必要なもの」が全部入りなんです。

Claude Codeを支えているエージェントハーネスがベースになっているので、本番環境で動くクオリティがすでに担保されてる。

これ、自分でゼロから作ろうと思ったら、相当な工数かかりますよ。

image.png

インストール方法

TypeScript / Node.js の場合:

npm install @anthropic-ai/claude-agent-sdk

Python の場合:

pip install claude-agent-sdk

環境変数にAPIキーを設定しておくのを忘れずに。

export ANTHROPIC_API_KEY='your-api-key-here'

基本的なエージェントの作り方

最小構成のエージェント(TypeScript)

まず、一番シンプルな形から見てみましょか。

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

async function main() {
  // 最もシンプルなエージェント呼び出し
  const result = query({
    prompt: "プロジェクトのREADME.mdを分析して、改善点を3つ提案してください",
    options: {
      systemPrompt: "あなたはシニアソフトウェアエンジニアです。コードレビューと技術文書の改善が得意です。",
      model: "claude-sonnet-4-5"
    }
  });

  // ストリーミングで結果を受け取る
  for await (const message of result) {
    if (message.type === 'text') {
      console.log(message.text);
    }
  }
}

main();

これだけで動くんです。シンプルでしょ?

でも、これだと「ただの会話」と変わらない。

エージェントの真価は、ツールを使って実際にアクションを起こせるところにあります。

ツールを使えるエージェント

エージェントにツールを持たせると、こんなことができるようになります。

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

async function main() {
  const result = query({
    prompt: "このディレクトリのTypeScriptファイルを分析して、型定義が不足している箇所を見つけてください",
    options: {
      systemPrompt: `あなたはTypeScriptの専門家です。
      コードの品質向上を支援します。
      ファイルを読んで分析し、具体的な改善提案をしてください。`,
      
      // 許可するツール
      allowedTools: [
        "Read",           // ファイル読み取り
        "Glob",           // ファイル検索
        "Grep",           // テキスト検索
        "LS"              // ディレクトリ一覧
      ],
      
      // 作業ディレクトリ
      cwd: "./src",
      
      model: "claude-sonnet-4-5"
    }
  });

  for await (const message of result) {
    switch (message.type) {
      case 'text':
        console.log(message.text);
        break;
      case 'tool_use':
        console.log(`🔧 ツール使用: ${message.name}`);
        break;
      case 'tool_result':
        console.log(`✅ 結果取得`);
        break;
    }
  }
}

main();

この例だと、Claudeは...

  1. GlobでTypeScriptファイルを探す
  2. Readでファイルの中身を読む
  3. 分析して型定義の不足を見つける
  4. 改善提案をテキストで返す

...という流れを自律的に実行します。

人間が「次はこのファイルを読んで」とか指示しなくても、自分で判断して動く。

これがエージェントの力。

Tool Use(ツール使用)を深掘りする

Claude 4.5のツール使用機能

Claude 4.5モデル(Opus 4.5, Sonnet 4.5, Haiku 4.5)は、ツール使用において大幅な進化を遂げています。

【Claude 4.5の強化されたツール使用】

  1. 並列ツール呼び出し

    • 複数のツールを同時に実行
    • 依存関係のない操作は並列処理
    • レイテンシが大幅に削減
  2. コンテキスト認識

    • トークン使用量を常に追跡
    • コンテキスト制限に近づいても適切に対処
    • 長時間実行タスクでも安定動作
  3. 高度な調整能力

    • 複数のツールと情報ソースを効果的に連携
    • 自分で最適な実行順序を判断

image.png

利用可能なツール一覧

Agent SDKで使える主要なツールを整理しておきましょか。

【ファイル操作系】

ツール名 機能 主な用途
Read ファイル読み取り コード分析、ドキュメント確認
Write ファイル書き込み コード生成、ドキュメント作成
Edit ファイル編集 既存コードの修正
LS ディレクトリ一覧 プロジェクト構造の把握
Glob パターンマッチング検索 特定ファイルの探索
Grep テキスト検索 コード内の検索

【実行系】

ツール名 機能 主な用途
Bash シェルコマンド実行 ビルド、テスト、システム操作
Code Execution Pythonコード実行(サンドボックス) データ分析、計算処理
Computer Use GUI操作(スクリーンショット、マウス、キーボード) ブラウザ自動化、デスクトップ操作

【外部連携系】

ツール名 機能 主な用途
Web Search Web検索 最新情報の取得
Web Fetch URLコンテンツ取得 特定ページの分析
Memory 情報の永続化 会話間での情報保持

並列ツール呼び出しの活用

Claude 4.5は並列ツール実行に優れていて、Sonnet 4.5は特に積極的に並列実行を行います。

この動作を最大限活用するためのプロンプト例:

const result = query({
  prompt: `プロジェクトの品質分析を行ってください。
  
  <use_parallel_tool_calls>
  複数のツールを呼び出す予定があり、ツール呼び出し間に依存関係がない場合は、
  すべての独立したツール呼び出しを並列で実行してください。
  
  例えば、3つのファイルを読み取る場合、3つのツール呼び出しを並列で実行して、
  3つのファイルをすべてコンテキストに同時に読み込んでください。
  
  ただし、一部のツール呼び出しが以前の呼び出しに依存して、
  パラメーターなどの依存値を通知する場合は、順序付けて呼び出してください。
  </use_parallel_tool_calls>`,
  
  options: {
    allowedTools: ["Read", "Glob", "Grep", "Bash"]
  }
});

逆に、並列実行を抑制したい場合:

const result = query({
  prompt: `各ステップ間に短い一時停止を伴う順序で操作を実行して、安定性を確保してください。`,
  options: {
    // ...
  }
});

プログラマティックツール呼び出し(ベータ)

これ、めちゃくちゃ強力な新機能なんです。

通常、Claudeがツールを使うときは...

Claude → ツール呼び出し → API → 結果 → Claude → 次のツール呼び出し → ...

...という風に、毎回APIを経由するラウンドトリップが発生します。

でもプログラマティックツール呼び出しを使うと...

Claude → コード実行コンテナ内で直接ツール呼び出し → 結果処理 → 次のツール呼び出し → ... → 最終結果 → Claude

つまり、Claudeが書いたコードの中からツールを直接呼び出せるようになる。

tools = [
    {
        "type": "code_execution_20250825",
        "name": "code_execution"
    },
    {
        "name": "query_database",
        "description": "Execute a SQL query against the sales database.",
        "input_schema": {...},
        "allowed_callers": ["code_execution_20250825"]  # ← これがポイント
    }
]

メリット:

  • レイテンシ大幅削減(ラウンドトリップ不要)
  • トークン消費削減(中間結果をフィルタリング可能)
  • 複雑なワークフロー対応(ループ、条件分岐、バッチ処理)

Claude Opus 4.5およびSonnet 4.5で利用可能です。

サブエージェント:タスクを分割して効率化

image.png

サブエージェントとは?

サブエージェントって、要するに**「専門家チーム」**みたいなものです。

メインのエージェント(オーケストレーター)が全体を管理して、
専門的なタスクは専門家(サブエージェント)に委任する。

例えば、「Webアプリを作って」というタスクなら...

メインエージェント(PM役)
├── フロントエンドエージェント → React コンポーネント作成
├── バックエンドエージェント → API 実装
├── データベースエージェント → スキーマ設計
└── テストエージェント → テストコード作成

なぜサブエージェントを使うのか

1. コンテキストの効率化

1つの巨大なコンテキストで全部やろうとすると、トークン消費が爆発する。

サブエージェントを使えば、タスクごとに新しいコンテキストウィンドウを使えるので、効率的に処理できます。

2. 専門性の向上

「なんでもできる汎用エージェント」より、「特定のことに特化したエージェント」の方が精度が高い。

例えば、セキュリティ監査専門のエージェントとか、テスト専門のエージェントとか。

3. 並列処理

独立したタスクは並列で実行できるので、全体の処理時間が短縮される。

サブエージェントの定義方法

方法1:ファイルベースの定義

.claude/agents/ ディレクトリにMarkdownファイルとして配置する方法。

<!-- .claude/agents/security-reviewer.md -->

# Security Reviewer Agent

## Description
コードのセキュリティ脆弱性をレビューする専門エージェント。
SQLインジェクション、XSS、認証バイパスなどの脆弱性を検出します。

## Tools
- Read
- Grep
- Glob

## Prompt
あなたはセキュリティ専門家です。
コードを分析し、以下の観点でセキュリティ脆弱性を検出してください:

1. SQLインジェクション
2. クロスサイトスクリプティング(XSS)
3. 認証・認可の問題
4. 機密情報の露出
5. 入力検証の不足

発見した脆弱性は、重要度(High/Medium/Low)と修正方法を含めて報告してください。

方法2:プログラムでの定義

SDKのオプションで直接定義する方法。

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

const result = query({
  prompt: "このプロジェクトのコードレビューを行ってください",
  options: {
    systemPrompt: "あなたはテックリードです。品質の高いコードレビューを行います。",
    
    // サブエージェントの定義
    agents: {
      "security-reviewer": {
        description: "セキュリティ脆弱性をレビューする専門エージェント",
        tools: ["Read", "Grep", "Glob"],
        prompt: `あなたはセキュリティ専門家です。
                 コードの脆弱性を検出し、修正方法を提案してください。`,
        model: "sonnet"  // 'sonnet' | 'opus' | 'haiku' | 'inherit'
      },
      "performance-reviewer": {
        description: "パフォーマンス問題をレビューする専門エージェント",
        tools: ["Read", "Grep", "Glob"],
        prompt: `あなたはパフォーマンス最適化の専門家です。
                 N+1クエリ、メモリリーク、不要な再レンダリングなどを検出してください。`,
        model: "haiku"  // 軽量タスクなのでHaikuで十分
      }
    }
  }
});

Claude 4.5のネイティブサブエージェント調整

ここがすごいところで...

Claude 4.5モデルは、明示的な指示なしにサブエージェントへの委任を自分で判断できるんです。

つまり、「このタスクはサブエージェントに任せた方がいいな」と自分で気づいて、適切に委任する。

この動作を活用するためのポイント:

1. サブエージェントツールを明確に定義する

// サブエージェントが「何ができるか」を明確に記述
agents: {
  "data-analyst": {
    description: "大量のCSVデータを分析し、統計的な洞察を提供する。数値計算や可視化が必要なタスクに最適。",
    // ...
  }
}

2. 必要に応じて委任の積極性を調整する

積極的に委任させたい場合:

複雑なタスクは積極的にサブエージェントに委任してください。

保守的に委任させたい場合:

タスクが新しいコンテキストウィンドウを持つ別のエージェントから
明らかに利益を得る場合にのみ、サブエージェントに委任してください。

サブエージェントのユースケース

ユースケース1:コードレビューパイプライン

const agents = {
  "syntax-checker": {
    description: "構文エラーとスタイル違反を検出",
    model: "haiku"  // 高速処理
  },
  "logic-reviewer": {
    description: "ロジックの問題とバグを検出",
    model: "sonnet"  // バランス型
  },
  "security-auditor": {
    description: "セキュリティ脆弱性を検出",
    model: "opus"   // 高精度必須
  }
};

ユースケース2:ドキュメント生成

const agents = {
  "api-documenter": {
    description: "APIエンドポイントのドキュメントを生成",
    model: "sonnet"
  },
  "example-generator": {
    description: "使用例とサンプルコードを生成",
    model: "sonnet"
  },
  "translator": {
    description: "ドキュメントを多言語に翻訳",
    model: "haiku"
  }
};

MCP(Model Context Protocol):外部システムとの連携

MCPとは?

MCP(Model Context Protocol)は、Claudeを外部ツールやサービスと連携させるための標準プロトコル。

データベース、API、各種サービスと連携するための「共通言語」みたいなものです。

Agent SDKでは、MCPサーバーを通じてカスタムツールを追加できます。

MCPサーバーの設定方法

方法1:設定ファイルでの定義

.claude/settings.json に記述:

{
  "mcpServers": {
    "my-database": {
      "command": "node",
      "args": ["./mcp-servers/database-server.js"],
      "env": {
        "DATABASE_URL": "postgresql://localhost:5432/mydb"
      }
    },
    "slack-integration": {
      "command": "python",
      "args": ["./mcp-servers/slack_server.py"],
      "env": {
        "SLACK_TOKEN": "${SLACK_TOKEN}"
      }
    }
  }
}

方法2:プログラムでの定義

import { query, createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';
import { z } from 'zod';

// カスタムMCPサーバーを作成
const myMcpServer = createSdkMcpServer({
  name: "my-custom-tools",
  version: "1.0.0",
  tools: [
    tool(
      "search_database",
      "データベースを検索して結果を返す",
      {
        query: z.string().describe("検索クエリ"),
        limit: z.number().optional().describe("取得件数の上限")
      },
      async (args) => {
        // 実際のデータベース検索ロジック
        const results = await searchDatabase(args.query, args.limit);
        return {
          content: [{ type: "text", text: JSON.stringify(results) }]
        };
      }
    ),
    tool(
      "send_notification",
      "Slackに通知を送信する",
      {
        channel: z.string().describe("送信先チャンネル"),
        message: z.string().describe("メッセージ内容")
      },
      async (args) => {
        await sendSlackMessage(args.channel, args.message);
        return {
          content: [{ type: "text", text: "通知を送信しました" }]
        };
      }
    )
  ]
});

// エージェントで使用
const result = query({
  prompt: "売上データを分析して、結果をSlackに報告してください",
  options: {
    mcpServers: {
      "my-tools": myMcpServer
    }
  }
});

MCPコネクタ(リモートMCPサーバー)

ローカルで動くMCPサーバーだけでなく、リモートのMCPサーバーにも接続できます。

これにより、別のサーバーで動いているサービスとも連携可能。

const result = query({
  prompt: "...",
  options: {
    mcpServers: {
      "remote-service": {
        url: "https://mcp.example.com/api",
        headers: {
          "Authorization": `Bearer ${process.env.MCP_TOKEN}`
        }
      }
    }
  }
});

エージェントスキル:能力の拡張

スキルとは?

スキル(Agent Skills)は、Claudeの能力を特定のタスクに特化して拡張するための仕組み。

サブエージェントが「別の専門家に任せる」のに対して、
スキルは「自分自身の能力を拡張する」イメージ。

ビルトインスキル

Agent SDKには、以下のビルトインスキルがあります:

  • PowerPoint: プレゼンテーション作成
  • Excel: スプレッドシート操作
  • Word: ドキュメント作成
  • PDF: PDF処理

これらは .claude/skills/ ディレクトリから自動的に検出されます。

カスタムスキルの作成

独自のスキルを SKILL.md ファイルとして定義できます。

<!-- .claude/skills/data-visualization/SKILL.md -->

# Data Visualization Skill

## Description
データを視覚化するスキル。Pythonのmatplotlibやseabornを使用してグラフを生成します。

## When to Use
- ユーザーがデータの可視化を要求したとき
- 数値データの傾向を分析する必要があるとき
- レポートにグラフを含める必要があるとき

## Instructions
1. データの種類を確認する(時系列、カテゴリ、相関など)
2. 最適なグラフタイプを選択する
3. Pythonコードでグラフを生成する
4. 生成した画像をユーザーに提供する

## Example Code
```python
import matplotlib.pyplot as plt
import seaborn as sns

# グラフ生成のサンプル
sns.set_style("whitegrid")
plt.figure(figsize=(10, 6))
# ... グラフ作成コード
plt.savefig("output.png", dpi=150, bbox_inches="tight")


## 実践的なエージェント構築例

### 例1:コードレビューエージェント

本番で使えるレベルのコードレビューエージェントを構築してみましょか。

```typescript
import { query } from '@anthropic-ai/claude-agent-sdk';

async function codeReviewAgent(targetPath: string) {
  const systemPrompt = `あなたはシニアソフトウェアエンジニアです。
コードレビューを行い、以下の観点で詳細なフィードバックを提供します:

## レビュー観点
1. **コード品質**: 可読性、保守性、DRY原則
2. **バグリスク**: 潜在的なバグ、エッジケース
3. **パフォーマンス**: 非効率な処理、N+1問題
4. **セキュリティ**: 脆弱性、入力検証
5. **テスト**: テストカバレッジ、テストの質

## 出力形式
各問題点について以下を含めてください:
- 問題の説明
- 重要度(Critical/High/Medium/Low)
- 該当コード(行番号付き)
- 修正案(コード例を含む)

<investigate_before_answering>
開いていないコードについて推測しないでください。
回答する前にファイルを読んで、根拠のある回答を提供してください。
</investigate_before_answering>`;

  const result = query({
    prompt: `${targetPath} のコードをレビューしてください。
             まずプロジェクト構造を把握し、主要なファイルを分析してください。`,
    options: {
      systemPrompt,
      allowedTools: ["Read", "Glob", "Grep", "LS"],
      cwd: targetPath,
      model: "claude-sonnet-4-5",
      
      // サブエージェント
      agents: {
        "security-auditor": {
          description: "セキュリティ脆弱性の詳細分析が必要な場合に使用",
          tools: ["Read", "Grep"],
          prompt: "セキュリティ専門家として、OWASP Top 10を含む脆弱性を検出してください。",
          model: "opus"
        }
      }
    }
  });

  const findings: string[] = [];
  
  for await (const message of result) {
    if (message.type === 'text') {
      findings.push(message.text);
    }
  }
  
  return findings.join('\n');
}

// 使用例
const review = await codeReviewAgent('./src');
console.log(review);

例2:ドキュメント生成エージェント

プロジェクトのドキュメントを自動生成するエージェント。

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

async function documentationAgent(projectPath: string) {
  const systemPrompt = `あなたはテクニカルライターです。
コードを分析し、以下のドキュメントを生成します:

1. README.md - プロジェクト概要、セットアップ手順、使用方法
2. API.md - APIエンドポイントの仕様
3. ARCHITECTURE.md - システム構成、設計思想

<documentation_guidelines>
- 初心者にもわかりやすい説明
- 具体的なコード例を含める
- 図解が必要な箇所は [図解: 説明] の形式で指示
- Markdown形式で出力
</documentation_guidelines>`;

  const result = query({
    prompt: `${projectPath} を分析し、ドキュメントを生成してください。
             まずプロジェクト構造を把握し、主要なファイルを確認してください。`,
    options: {
      systemPrompt,
      allowedTools: ["Read", "Write", "Glob", "LS", "Grep"],
      cwd: projectPath,
      model: "claude-sonnet-4-5"
    }
  });

  for await (const message of result) {
    if (message.type === 'tool_use' && message.name === 'Write') {
      console.log(`📝 ファイル作成: ${message.input.path}`);
    }
  }
}

例3:インシデント対応エージェント

本番障害時に自動で調査・対応するエージェント。

import { query, createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';
import { z } from 'zod';

// 監視ツール用のMCPサーバー
const monitoringServer = createSdkMcpServer({
  name: "monitoring-tools",
  version: "1.0.0",
  tools: [
    tool(
      "get_metrics",
      "システムメトリクスを取得する",
      {
        service: z.string(),
        timeRange: z.string()
      },
      async (args) => {
        // Prometheus/Grafanaなどからメトリクス取得
        const metrics = await fetchMetrics(args.service, args.timeRange);
        return { content: [{ type: "text", text: JSON.stringify(metrics) }] };
      }
    ),
    tool(
      "get_logs",
      "ログを検索する",
      {
        service: z.string(),
        query: z.string(),
        limit: z.number().optional()
      },
      async (args) => {
        // ElasticSearchなどからログ取得
        const logs = await searchLogs(args.service, args.query, args.limit);
        return { content: [{ type: "text", text: JSON.stringify(logs) }] };
      }
    ),
    tool(
      "send_alert",
      "Slackにアラートを送信する",
      {
        channel: z.string(),
        severity: z.enum(["critical", "warning", "info"]),
        message: z.string()
      },
      async (args) => {
        await sendSlackAlert(args.channel, args.severity, args.message);
        return { content: [{ type: "text", text: "Alert sent" }] };
      }
    )
  ]
});

async function incidentResponseAgent(incidentDescription: string) {
  const systemPrompt = `あなたはSRE(Site Reliability Engineer)です。
本番障害の調査と対応を行います。

## 対応フロー
1. 影響範囲の特定
2. メトリクスとログの分析
3. 根本原因の推定
4. 緊急対応の提案
5. Slackへの状況報告

## 重要事項
- 本番環境への変更は提案のみ、実行しない
- 不確かな情報は明記する
- 時系列で状況を整理する`;

  const result = query({
    prompt: `インシデント発生: ${incidentDescription}
             調査を開始し、状況を報告してください。`,
    options: {
      systemPrompt,
      allowedTools: ["Read", "Bash", "Grep"],
      mcpServers: {
        "monitoring": monitoringServer
      },
      model: "claude-opus-4-5"  // 高精度が必要
    }
  });

  for await (const message of result) {
    if (message.type === 'text') {
      console.log(message.text);
    }
  }
}

本番運用のためのベストプラクティス

権限管理

エージェントに与える権限は最小限に

const result = query({
  prompt: "...",
  options: {
    // 許可するツールを明示的に指定
    allowedTools: ["Read", "Glob"],  // 読み取りのみ
    
    // 禁止するツールを指定
    disallowedTools: ["Bash", "Write"],  // 実行と書き込みは禁止
    
    // 権限モードの設定
    permissionMode: "strict",  // 厳格モード
    
    // アクセス可能なディレクトリを制限
    cwd: "./src",
    additionalDirectories: []  // 他のディレクトリへのアクセスを禁止
  }
});

エラーハンドリング

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

async function safeAgentExecution(prompt: string) {
  try {
    const result = query({
      prompt,
      options: {
        maxTurns: 50,  // 無限ループ防止
        // ...
      }
    });

    for await (const message of result) {
      switch (message.type) {
        case 'error':
          console.error('エージェントエラー:', message.error);
          // エラー処理
          break;
        case 'text':
          console.log(message.text);
          break;
      }
    }
  } catch (error) {
    console.error('実行エラー:', error);
    // フォールバック処理
  }
}

コスト管理

const result = query({
  prompt: "...",
  options: {
    // 思考トークンの上限設定
    maxThinkingTokens: 10000,
    
    // 会話ターン数の上限
    maxTurns: 30,
    
    // 軽量タスクにはHaikuを使用
    model: "claude-haiku-4-5",
    
    // サブエージェントでモデルを使い分け
    agents: {
      "quick-task": {
        model: "haiku"  // コスト重視
      },
      "complex-task": {
        model: "sonnet"  // バランス
      },
      "critical-task": {
        model: "opus"   // 精度重視
      }
    }
  }
});

まとめ:エージェント開発の未来

ここまでいろいろ解説してきましたけど、最後にまとめておきましょか。

Claude Agent SDKでできること:

  1. 自律的なAIエージェント構築

    • ツール使用による実世界との連携
    • サブエージェントによるタスク分割
    • MCPによる外部システム統合
  2. 本番レベルの品質

    • Claude Codeで実証済みのアーキテクチャ
    • 細粒度の権限管理
    • 組み込みのエラーハンドリング
  3. 最新のClaude 4.5機能

    • 並列ツール呼び出し
    • ネイティブサブエージェント調整
    • プログラマティックツール呼び出し

エージェント開発で大事なこと:

正直、AIエージェントはまだ発展途上の技術。

「AIに任せれば全部自動でやってくれる」みたいな過信は禁物です。

大事なのは...

  • 適切な権限設定:できることを制限する
  • 人間のレビュー:最終確認は人間が行う
  • 段階的な導入:小さく始めて徐々に拡大
  • フォールバック設計:失敗時の対応を考えておく

エージェント技術は「人間を置き換える」ものじゃなくて、「人間の能力を拡張する」もの。

この視点を忘れずに、上手く活用していきましょか。

image.png

今日からやること3つ

  1. Agent SDKをインストールして、最小構成のエージェントを動かしてみる
  2. 自分の業務で繰り返しやってる作業を1つ見つけて、エージェント化を検討する
  3. 小さなサブエージェントを1つ作って、タスク分割の感覚をつかむ

エージェント開発、めちゃくちゃ面白いですよ。
ぜひ触ってみてください。


参考リンク

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?