実践 AIエージェント開発

―マルチエージェントシステムの設計と実装

[cover photo]
TOPICS
AI/LLM
発行年月日
PRINT LENGTH
356
ISBN
978-4-8144-0159-8
原書
Building Applications with AI Agents
FORMAT
Print PDF EPUB
Ebook
4,620円
Ebookを購入する
Print
4,620円

生成AIはソフトウェアの開発を劇的に加速させ、ツールやリソースを駆使して難題を効率的に解決する「AIエージェント」が使われるようになりました。しかし、自律的な計画や修正を要するエージェントの開発は技術的難易度が高く、多くの組織で課題となっています。本書は、マルチエージェントシステムの設計と実装に関する実践的ガイドです。複雑な環境下で、アイデアを効率的かつ具体的なソリューションへと導くための手法を紹介します。

目次

訳者まえがき 
まえがき 

1章 エージェント入門 
    1.1 AIエージェントとは 
    1.2 事前学習革命 
    1.3 エージェントの種類 
    1.4 モデル選定 
    1.5 同期処理から非同期処理へ 
    1.6 実践的な活用例 
    1.7 ワークフローとエージェント 
    1.8 効果的なエージェントシステム構築の原則 
    1.9 エージェントシステム構築を成功させる体制作り 
    1.10 エージェントフレームワーク 
    1.11 結論 

2章 エージェントシステムの設計 
    2.1 最初のエージェントシステム 
    2.2 エージェントシステムの構成要素 
    2.3 モデル選定 
    2.4 ツール 
        2.4.1 特定タスク向けの機能設計 
        2.4.2 ツールの統合とモジュール性 
    2.5 メモリ 
        2.5.1 短期メモリ 
        2.5.2 長期メモリ 
        2.5.3 メモリ管理と検索 
    2.6 オーケストレーション 
    2.7 設計のトレードオフ 
        2.7.1 性能:スピードと精度のトレードオフ 
        2.7.2 拡張性:エージェントシステムの拡張性をエンジニアリングする 
        2.7.3 信頼性:ロバストで一貫したエージェント動作の確保 
        2.7.4 コスト:性能と費用のバランス 
    2.8 アーキテクチャデザインパターン 
        2.8.1 シングルエージェントアーキテクチャ 
        2.8.2 マルチエージェントアーキテクチャ:協働・並列処理・調整 
    2.9 ベストプラクティス 
        2.9.1 反復設計 
        2.9.2 評価戦略 
        2.9.3 実世界におけるテスト 
    2.10 結論 

3章 エージェントシステムのユーザー体験デザイン 
    3.1 インタラクションモダリティ 
        3.1.1 テキストベース 
        3.1.2 グラフィカルインターフェース 
        3.1.3 スピーチと音声インターフェース 
        3.1.4 ビデオベースのインターフェース 
        3.1.5 シームレスな体験のためのモダリティ統合 
        3.1.6 自律性スライダー 
    3.2  同期エージェント体験と非同期エージェント体験 
        3.2.1 同期体験の設計原則 
        3.2.2 非同期体験の設計原則 
        3.2.3 主体的な支援と過干渉のバランスを取る 
    3.3 コンテキストの保持と継続性 
        3.3.1 インタラクションをまたいだ状態維持 
        3.3.2 パーソナライゼーションと適応性 
    3.4 エージェント機能の伝え方 
        3.4.1 確信度と不確実性の伝え方 
        3.4.2 ユーザーへの確認とガイダンスの求め方 
        3.4.3 丁寧な失敗の実現 
    3.5 インタラクションデザインにおける信頼 
    3.6 結論 

4章 ツールの活用 
    4.1 LangChainの基礎 
        4.1.1 ローカルツール 
        4.1.2 APIベースのツール 
        4.1.3 プラグインツール 
        4.1.4 MCP 
        4.1.5 ステートフルツール 
    4.2 自動ツール開発 
        4.2.1 ツールメーカーとしてのベースモデル 
        4.2.2 リアルタイムコード生成 
    4.3 ツールの設定 
    4.4 結論 

5章 オーケストレーション 
    5.1 エージェントの種類 
        5.1.1 リフレックスエージェント 
        5.1.2 ReActエージェント 
        5.1.3 プランナーエグゼキューターエージェント 
        5.1.4 クエリ分解エージェント 
        5.1.5 リフレクションエージェント 
        5.1.6 ディープリサーチエージェント 
    5.2 ツール選択 
        5.2.1 標準的なツール選択 
        5.2.2 セマンティックツール選択 
        5.2.3 階層的ツール選択 
    5.3 ツールの実行 
    5.4 ツールの構成 
        5.4.1 単一ツール実行 
        5.4.2 並列ツール実行 
        5.4.3 チェーン 
        5.4.4 グラフ 
    5.5 コンテキストエンジニアリング 
    5.6 結論 

6章 知識と記憶 
    6.1 記憶への基礎的アプローチ 
        6.1.1 コンテキストウィンドウの管理 
        6.1.2 従来の全文検索 
    6.2 セマンティックメモリとベクトルストア 
        6.2.1 セマンティックサーチ 
        6.2.2 ベクトルストアによるセマンティックメモリ 
        6.2.3 RAG 
        6.2.4 セマンティック経験メモリ 
    6.3 GraphRAG 
        6.3.1 ナレッジグラフを使う 
        6.3.2 ナレッジグラフの構築 
        6.3.3 動的ナレッジグラフの将来性と危険性 
        6.3.4 ノートテイキング 
    6.4 結論 

7章 エージェントシステムにおける学習 
    7.1 ノンパラメトリック学習 
        7.1.1 ノンパラメトリック・事例学習 
        7.1.2 リフレクション 
        7.1.3 経験学習 
    7.2 パラメトリック学習:ファインチューニング 
        7.2.1 大規模ベースモデルのファインチューニング 
        7.2.2 小規模モデルの可能性 
        7.2.3 教師ありファインチューニング 
        7.2.4 直接選好最適化 
        7.2.5 検証可能な報酬による強化学習 
    7.3 結論 

8章 シングルエージェントからマルチエージェントへ 
    8.1 エージェントはいくつ必要か 
        8.1.1 シングルエージェント 
        8.1.2 マルチエージェント 
        8.1.3 スウォーム 
    8.2 エージェントを追加する際の原則 
    8.3 マルチエージェントの連携 
        8.3.1 民主型連携 
        8.3.2 管理型連携 
        8.3.3 階層型連携 
        8.3.4 アクター・クリティック手法 
    8.4 エージェントシステムの自動設計 
    8.5 通信技術 
        8.5.1 ローカル通信と分散通信 
        8.5.2 Agent-to-Agentプロトコル 
    8.6 メッセージブローカーとイベントバス 
    8.7 アクターフレームワーク:Ray、Orleans、Akka 
    8.8 オーケストレーションとワークフローエンジン 
    8.9 状態と永続性の管理 
    8.10 結論 

9章 検証と測定 
    9.1 エージェントシステムの測定 
        9.1.1 測定の重要性 
        9.1.2 評価を開発ライフサイクルに統合する 
        9.1.3 評価セットの作成と拡張 
    9.2 構成要素の評価 
        9.2.1 ツールの評価 
        9.2.2 プランニングの評価 
        9.2.3 メモリの評価 
        9.2.4 学習の評価 
    9.3 全体的な評価 
        9.3.1 エンドツーエンドシナリオでの性能 
        9.3.2 一貫性 
        9.3.3 コヒーレンス 
        9.3.4 ハルシネーション 
        9.3.5 予期せぬ入力への対応 
    9.4 デプロイの準備 
    9.5 結論 

10章 本番環境での監視 
    10.1 監視は学ぶための手段 
    10.2 監視スタック 
        10.2.1 GrafanaとOpenTelemetry、Loki、Tempoの組み合わせ 
        10.2.2 ELKスタック 
        10.2.3 Arize Phoenix 
        10.2.4 SigNoz 
        10.2.5 Langfuse 
    10.3 最適なスタックを選ぶ 
    10.4 OTel による計測 
    10.5 可視化とアラート 
    10.6 監視パターン 
        10.6.1 シャドウモード 
        10.6.2 カナリアデプロイ 
        10.6.3 リグレッショントレースの収集 
        10.6.4 自己修復エージェント 
    10.7 可観測性シグナルとしてのユーザーフィードバック 
    10.8 分布シフト 
    10.9 指標のオーナーシップと機能横断ガバナンス 
    10.10 結論 

11章 改善ループ 
    11.1 フィードバックパイプライン 
        11.1.1 自動化された問題検出と根本原因分析 
        11.1.2 ヒューマンインザループレビュー 
        11.1.3 プロンプトとツールの改良 
        11.1.4 改善の集約と優先順位付け 
    11.2 実験 
        11.2.1 シャドウデプロイ 
        11.2.2 A/Bテスト 
        11.2.3 ベイジアンバンディット 
    11.3 継続的学習 
        11.3.1 コンテキスト内学習 
        11.3.2 オフライン再学習 
    11.4 結論 

12章 エージェントシステムの保護 
    12.1 エージェントシステム特有のリスク 
    12.2 新たな脅威 
    12.3 ベースモデルのセキュリティ確保 
        12.3.1 防御テクニック 
        12.3.2 レッドチーミング 
        12.3.3 MAESTROによる脅威モデリング 
    12.4 エージェントシステムにおけるデータ保護 
        12.4.1 データプライバシーと暗号化 
        12.4.2 データの来歴と完全性 
        12.4.3 機密データの取り扱い 
    12.5 エージェントの保護 
        12.5.1 セーフガード 
        12.5.2 外部の脅威からの保護 
        12.5.3 内部障害からの保護 
    12.6 結論 

13章 人間とエージェントの協働 
    13.1 役割と自律性 
        13.1.1 エージェントシステムにおける人間の役割の変化 
        13.1.2 ステークホルダーの調整と採用の促進 
    13.2 協働のスケーリング 
        13.2.1 エージェントのスコープと組織の役割 
        13.2.2 共有メモリとコンテキストの境界 
    13.3 信頼、ガバナンス、コンプライアンス 
        13.3.1 信頼のライフサイクル 
        13.3.2 アカウンタビリティのフレームワーク 
        13.3.3 エスカレーションの設計と監視 
        13.3.4 プライバシーと規制の遵守 
    13.4 結論:人間とエージェントのチームの未来 

用語集 
索 引