📔

Principles of Building AI Agentsを読んでみた

に公開

先日、LinkedInでGatsbyのファンダーでMastra.aiのファウンダー兼CEOである、Sam Bhagwat氏が自著のPrinciples of Building AI Agentsを多くの人に配っていて、その話を投資家にしたら、もっともっと広めるべきだみたいな事を言われたので、Bookって投稿した人にも共有しますみたいな投稿をしていたので、Bookとコメントしたら、会社のメールアドレスをLinkedInとは結びつけていないのにもかかわらず、PDFのダウンロードlinkが会社のメールアドレスに送られてきましたw

本の構成は各部に関して、キーワードを説明しつつ、エージェントを作る上でどういう事に気をつけるべきかという事が書かれています。サンプルコードは当然ですが、Mastraをつかっています。恐らく、一度でもMastraを触って事ある人にとってコードを理解することは簡単だと思います。

AIエージェント構築の原則というタイトルだけあって、AIエージェントについて興味がある人ならば、一度は聞いたことある、知っているだろうという内容が最初は多く出てくるので、1部とMCPに関する3部とかは読み飛ばしても良いかもしれないですが、その他の部はフレームワークで軽くエージェントを作って見たことある人とか、エージェント興味はあるけど、まだちょっと試せてないみたいな人は必読の内容かなぁと思います。

結論から言うと、AIエージェントに興味がある方は必読だと思います。

個人的に面白かった箇所

2部のMastraの投資家の1人であるアラーナ・ゴヤル氏の例は参考になりました。実際、自分もエージェントを作った時に取り敢えず、詰め込めるだけ詰め込んでおこうで見事に撃沈しました。この部と6部読んで、やっぱりコードを書き始める前に、簡単なフローチャート的なもの書くのは結構エージェントを作る上で良い気がしました。
あと、2部だと、dynamic agentsの部分は面白かったです。
下記はnew Agentの一部なんですが、ああ確かにありだなぁと。ただ、この実装だとサービスはトライアルがないとユーザーに出力結果イマイチすぎ、もう使わないとか思われそうだなぁとも思いました。

 return `You are a customer support agent for our SaaS platform.
The current user is on the ${userTier} tier and prefers ${language} language.
For ${userTier} tier users:
${userTier === "free" ? "- Provide basic support and documentation links" : ""}
${userTier === "pro" ? "- Offer detailed technical support and best practices" : ""}
${userTier === "enterprise" ? "- Provide priority support with custom solutions" : ""}
Always respond in ${language} language.`;
  },

4部のストリーミングアップデートのところは、正直耳が痛いですw
今いる会社でAIプロダクトのプロトタイプを作ったのですが、その時は時間がなかったので、ストリーミングなしでいくと決めたPMやチームに対して、本気か?とか思いましたが、如何にストリーミングが重要かを説けるほどではなかったので、この内容を去年知っていればなぁと思わずにはいられなかったです。

5部のRAG及びその代替手段に関しては、ふむふむとか思いながら読んでいましたが、今年のはじめの方に行ったGoogleのAIイベントでみんなAgentic RAG声高にプレゼンターの人が言っていたわりにはAgentic RAGという言葉自体はあんまり見聞きしないなぁとも。

最後の部のMultiModalの部分は最近Eleven Labsの創業者に関する動画を見たこともあって、これから発展していく感じになるんだろうなぁと。ドメインによってはファウンデーションmodelを作っているOpenAI、Anthropic 、Google、Metaとも勝負出来たりしそうな気がしました。

https://youtu.be/4dZLfR-TaRk
generated by NotebookLLM

第1部: 大規模言語モデル(LLM)へのプロンプト入力

  • モデル選択の要点:
    • ホスト型 vs オープンソース: プロトタイピングはOpenAIAnthropicなどのホスト型APIで始めるのが効率的。
    • 精度 vs コスト: 高価で高精度なモデルから試し、機能が実現できたらコスト最適化を行う。
    • コンテキストウィンドウ: Google Gemini 1.5 Proのように巨大なコンテキストウィンドウを持つモデルは、新しい応用を可能にする。
  • 優れたプロンプトの原則:
    • フューショット: 複数の具体例(入力+出力)を与えることで、出力の精度が向上する。
    • システムプロンプト: エージェントに特定の役割や性格(ペルソナ)を与える。
    • フォーマット: XMLタグや大文字など、構造化されたフォーマットを使うとモデルが指示を正確に理解しやすくなる。本番用のプロンプトは非常に詳細になる傾向がある。

第2部: エージェントの構築

  • エージェントの構成要素: エージェントはLLMの上に位置し、ツール使用、メモリ管理、他エージェントとの連携が可能。
  • ツールの設計が最重要: エージェント構築で最も重要なステップは、タスクを具体的な操作に分解し、それぞれをツールとして設計すること。
  • メモリの重要性: 長期的な対話の文脈を維持するために不可欠。最近のやり取りと、関連性の高い過去の対話を組み合わせる階層的メモリが効果的。
  • 動的エージェント: ユーザーの属性(サブスクリプション層など)に応じて、実行時にモデルやツール、指示を動的に変更できる。

第3部: ツールとMCP

  • 主要なツール: エージェントには、ウェブ検索や、GmailSalesforceといったサードパーティサービスとの連携機能が不可欠。
  • MCP (モデルコンテキストプロトコル):
    • AIエージェントとツールを接続するための標準規格(AI用のUSB-Cのようなもの)。
    • これにより、異なる開発者や言語で書かれたツールとエージェントを簡単に接続できる。
    • 2025年には主要なAI企業がサポートを表明し、デファクトスタンダードになりつつある。

第4部: グラフベースのワークフロー

  • 予測可能性の確保: 自由度の高いエージェントでは出力が不安定な場合、タスクをステップに分解したグラフベースのワークフローが有効。
  • ワークフローの基本操作: 分岐、連鎖、マージ、条件分岐などを組み合わせて複雑な処理を定義する。
  • 中断と再開: 人間の承認など、外部の入力を待つためにワークフローを一時停止し、後で再開する機能が重要。
  • ストリーミングと可観測性:
    • ストリーミング: 処理の途中経過をリアルタイムでユーザーに表示することが、優れたUXに不可欠。
    • トレーシング: 各ステップの入出力を記録・可視化すること(可観測性)が、非決定的なAIのデバッグに極めて重要。

第5部: 検索拡張生成(RAG)

  • RAGの仕組み: 独自の知識ベース(ドキュメントなど)を検索し、関連部分をLLMのコンテキストとして与えることで、より正確な回答を生成する技術。
  • RAGの代替手段:
    • 巨大コンテキストウィンドウ: 全文を直接モデルに読み込ませるシンプルな方法。
    • エージェント的RAG: テキスト検索の代わりに、データにアクセスするためのツールをエージェントに与える。
  • RAG構築の指針: いきなり複雑なRAGを組むのではなく、まず巨大コンテキストウィンドウの利用やエージェント的RAGを試し、それで不十分な場合にRAGパイプラインの構築を検討すべき。

第6部: マルチエージェントシステム

  • 専門家チームとしてのAI: 専門的な役割を持つ複数のエージェントが協調して、より複雑なタスクを解決するシステム(例:計画エージェント、コーディングエージェント、レビューエージェント)。
  • 設計の考え方: マルチエージェントの設計は、企業の組織設計に似ている。
  • A2A (Agent-to-Agent): 信頼できない外部エージェント同士が通信するためのプロトコル。MCPと並び、標準化が進む可能性がある。

第7部: 評価(Evals)

  • AI品質の測定: AIの非決定的な出力を評価するため、合否ではなく0から1のスコアで品質を測定する**評価(Evals)**が重要。
  • 評価の種類: 回答の忠実性、ハルシネーションの有無、ツール使用の的確さなどを測定する多様な評価手法がある。
  • 人間によるレビュー: 自動評価に加え、A/Bテストや人間による本番データのレビューも不可欠。

第8部 & 9部: 開発、デプロイ、その他

  • ローカル開発: エージェントの挙動を確認するためのチャットUIやワークフロー可視化ツールが開発効率を高める。
  • デプロイの課題: エージェントは長時間実行されることが多く、タイムアウト制限のある一般的なサーバーレスプラットフォームでの運用は難しい場合がある。
  • マルチモーダル: 画像、音声、ビデオのAI応用はテキストに比べてまだ発展途上。特にリアルタイム音声は技術的難易度が高い。
  • 今後の展望: 推論モデルの進化、エージェントが自らのログから学習するエージェント学習セキュリティの重要性向上などが予測される。分野の進化が速いため、誰もが「永遠の初心者」であり続ける。

Discussion