Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AIエージェントのためのツール設計論 --Anthropic式・評価駆動開発手法の徹底解説

Avatar for MIKIO KUBO MIKIO KUBO
September 17, 2025

AIエージェントのためのツール設計論 --Anthropic式・評価駆動開発手法の徹底解説

AIエージェントのためのツール設計論

## Anthropic式・評価駆動開発手法の徹底解説

Avatar for MIKIO KUBO

MIKIO KUBO

September 17, 2025
Tweet

More Decks by MIKIO KUBO

Other Decks in Programming

Transcript

  1. 1. 序論:非決定論的システムとの「契約」 1.1. パラダイムの転換:決定論から非決定論へ 従来のAPI: 決定論的システム間の厳密な「契約」。 同じ入力 → 常に同じ出力。 AI

    エージェントの台頭: 非決定論的な性質を持つ。 同じ開始条件 → 多様な応答を生成しうる。 ツールの使用法について幻覚(hallucination)を起こす可能性。 ツールの再定義: 「決定論的システムと 非決定論的エージェントとの間の契約」。 開発者の役割の変化: Before: ロジックの設計者 After: AIの思考様式を理解し、推論プロセスを誘導・制約するインターフェースの設計者へ。 2
  2. 1.3. 本レポートの目的と構成 目的: Anthropicが提唱するAIエージェント向けツール開発の哲学と実践的な方法論を、網羅的かつ詳細に解 説する。 対象読者: 次世代のAIシステム開発に携わるエンジニア、研究者、テクニカルプロダクトマネージャー。 構成: i. 序論:

    パラダイムの転換と設計思想 ii. 評価駆動型ツール開発サイクル: 反復的な改善プロセス iii. 効果的なツール設計のための5 大原則: 実践的な設計指針 iv. 総合的考察と今後の展望: 原則の相互作用と未来 4
  3. 2.1. フェーズ1 :迅速なプロトタイピングと初期検証 最優先事項: 完璧な設計よりも、 速度と反復性。 手法: AIコーディングアシスタント(例: Claude Code)を活用し、開発を加速。

    ローカル環境やAPI経由で、迅速に対話的・プログラム的なテストを実施。 目的: ユーザーからのフィードバックを収集。 想定されるユースケースやプロンプトに対する直感を養う。 6
  4. 2.2. フェーズ2 :体系的な評価の設計と実行 (1/2) 現実的な評価タスクの生成 鍵: 現実世界の複雑さを反映した、 質の高い評価タスクを生成すること。 避けるべきこと: 過度に単純化された「サンドボックス」環境。

    強力なタスクの例: 複数のツール連携(連絡先検索、文書検索、カレンダー操作)を要する会議設定。 ログ検索ツールを複数回、異なるパラメータで呼び出す分析的推論タスク。 複数情報源からの情報を統合し、戦略的提案を生成する高度な問題解決。 弱いタスクの例: 単一のツールを直接呼び出すだけで完了するタスク。 7
  5. 2.2. フェーズ2 :体系的な評価の設計と実行 (2/2) 評価実行の技術的実装 方法: 手動ではなく、LLM APIを直接呼び出し、 プログラム的に実行(再現性と拡張性のため)。 重要な指示:

    エージェントに最終的な応答だけでなく、**思考プロセス(推論)**や自己評価を出力させる。 収集すべきメトリクス: タスクの成功率(トップレベルの精度) 総実行時間、総ツール呼び出し回数、総トークン消費量 ツールエラーの発生率 8
  6. 2.4. フェーズ4 :AI との協調によるリファクタリング AIを単なる分析対象から、 改善プロセスにおける能動的な協力者として活用する。 「共生的開発ループ」: i. 評価エージェントから得られた複数のトランスクリプトを連結する。 ii.

    それをコーディングAIに与える。 iii. AI自身にパフォーマンスのボトルネックを分析させ、ツールのソースコードをリファクタリングさせる。 このAIとの協調的な反復プロセスが、非決定論的AIの能力を最大限に引き出す。 10
  7. 原則1 :タスクの抽象化と機能の統合 低レベルなAPIを単純にラップするのではなく、エージェントの認知負荷を管理する。 非推奨 : 細かすぎるツールの集合。エージェントに過剰な計画負担を強いる。 list_users , list_events ,

    create_event を個別に実装。 get_customer_by_id , list_transactions , list_notes を個別に実装。 推奨 : 特定のワークフローをターゲットとし、複数の操作を内包する高レベルなツールを構築。 schedule_event (参加者の空き時間を見つけてイベントをスケジュール) get_customer_context (顧客の関連情報を一度にまとめて取得) 12
  8. 原則3 :高シグナル・コンテキストの返却 エージェントの限られた「作業記憶」(コンテキストウィンドウ)を、価値の高い情報で満たす。 非推奨 : 低レベルの技術的識別子( uuid , thread_ts など)。

    推奨 : エージェントの次の推論に直接役立つ、 自然言語の名前、用語、識別子。 高度なテクニック: シンプルな response_format というenumパラメータ(例: "concise" / "detailed")を公開する。 エージェントが自身の判断で応答の詳細度を動的に制御できるようにする。 14
  9. 原則4 :トークン効率の最大化 コンテキストウィンドウは有限で貴重なリソース。情報の「量」も最適化する。 実装すべき機能: ページネーション ( page=2 ) フィルタリング (

    user_id=... ) 切り捨て 応答メッセージの設計思想: エラーや切り捨てを、エージェントを導く**「コーチング」の機会**と捉える。 役立つエラー応答: 「Error: Invalid user ID format. Please provide a valid integer ID, for example: user_id=12345.」 指示的な切り捨て応答: 「Showing first 10 of 257 results. To see more, you can use the 'page' parameter...」 15
  10. 原則 核心概念 非推奨例 推奨例 1. タスクの 抽象化 ワークフロー指向の ツールを構築 get_customer

    , list_transactions を個別に 提供 関連情報を一度に取得する get_customer_context を提供 2. 名前空間 関連ツールを共通接 頭辞でグループ化 汎用的な search ツール asana_search と jira_search のよ うに明確に区別 3. 高シグナ ル・コンテキ スト 自然言語の情報を優 先して返す UUIDを含む詳細な応答を常に 返す スレッド内容のみを返し、詳細は response_format で制御 4. トークン 効率 コンテキスト消費を 管理し、エージェン トを誘導 全結果を一度に返し、不透明な エラーを返す ページ分割と「役立つ」エラーメッ セージを返す 5. プロンプ トとしての記 述 ツール説明はエージ ェントのUI 曖昧なパラメータ名 ( user ) と 短い説明 正確なパラメータ名 ( user_id ) と詳 細な説明 17
  11. 4. 総合的考察と今後の展望 4.1. 原則の相互作用とトレードオフ 5つの原則は独立ではなく、相互に関連し合う。実世界では トレードオフが生じる。 例1: 抽象化 ( 原則1)

    vs 柔軟性 高度に抽象化されたツールは、予期せぬエッジケースに対応できない可能性がある。 例2: 高シグナル ( 原則3) vs トークン効率 ( 原則4) 応答を極端に簡潔にすると、次の推論に必要なコンテキストが失われるリスクがある。 → 評価サイクルを通じて、経験的データに基づき最適なバランス点を見つけ出すことが重要。 18