逆引きAIエージェントアーキテクチャパターン チートシート

エージェントシステムってどう設計したらいいの？ってまだまだこれからですね。全世界的に先行的・実験的に作られたものが、一般化され普及期に入っていきます。

いつものことですが、特定のエンジニアしか設計できないとすると大変だし、アサインされたエンジニアや関係者で会話ができないと行けないので、「パターン」なるものが出てきます。

以下の論文で現時点で、エージェントシステムのアーキテクチャパターンが18個のカタログで出てきていてありがたいことです。

https://arxiv.org/abs/2405.10467

我々は受け止める側ではありますが、1つ１つのカタログを理解しないといけないのは、いけないのですが、じゃあ適用する時と適用の説明するときには「逆引き」の発想が必要になりますよね？つまり「XXXパターンを適用します」みたいな説明じゃなくて「YYYだからXXXパターンを採用したい／します」というようなことです。

んで、論文をベースにGeminiに提案してもらいます。ちょっともう一段階抽象化してもらいたい感じもしてますが、一旦、そのままで。どこかで校正したいところ。

### エージェントアーキテクチャパターンチートシート

■やりたいこと: ユーザのの意図やゴールを明確にしたい。

解決策: ユーザーが対話インターフェースを通じて表明したプロンプトを分析し、目標を特定します。

パターン: パッシブゴールクリエーター

■やりたいこと: 環境や状況を理解した上で、自分のゴールをエージェントに把握してほしい。

解決策: 対話インターフェースからの入力に加え、関連ツールを通じてコンテキストを捉え、ユーザーのゴールを予測します。

パターン: プロアクティブゴールクリエーター

■やりたいこと: エージェントに対して効果的な指示を与えたい。

解決策: 望ましい入力または出力のコンテンツと形式に従って、プロンプトを洗練させます。

パターン: プロンプト/レスポンスオプティマイザー

■やりたいこと: 標準化された理解しやすい応答を受け取りたい。

解決策: 望ましい入力または出力のコンテンツと形式に従って、応答を洗練させます。

パターン: プロンプト/レスポンスオプティマイザー

■やりたいこと: 最新の情報や、社内データなどの特定の知識を使って推論してほしい。

解決策: 外部の情報源から関連する事実を検索し、推論プロセスを強化します。

パターン: 検索拡張生成 (RAG)

■やりたいこと: 段階的にモデルに質問を重ねることで、より正確な推論を行いたい。

解決策: 計画生成の各ステップで基盤モデルにアクセスし、段階的に推論を行います。

パターン: インクリメンタルモデルクエリ

■やりたいこと: 短時間で、かつ低コストで計画を立ててほしい（複雑な推論は不要）。

解決策: 一度の基盤モデルへのクエリで、計画に必要なすべてのステップを生成します。

パターン: ワンショットモデルクエリ

■やりたいこと: 段階的にモデルに質問を重ねることで、人間からのフィードバックを取り入れた計画生成を行いたい。

解決策: 計画生成の各ステップで基盤モデルにアクセスし、必要に応じて人間のフィードバックを反映させます。

パターン: インクリメンタルモデルクエリ

■やりたいこと: エージェントがどのような手順でゴールを達成するのかを理解したい。

解決策: ユーザーの目標達成に向けた中間ステップの生成を調整し、線形の計画を作成します。

パターン: シングルパスプランジェネレーター

■やりたいこと: 効率的な一本道の計画を立ててほしい。

解決策: 不要なステップを削減し、ユーザーの目標達成に直接つながる計画を作成します。

パターン: シングルパスプランジェネレーター

■やりたいこと: ゴール達成までの複数の選択肢を提示してほしい。

解決策: 各中間ステップで複数の選択肢を作成し、多様なアプローチを可能にします。

パターン: マルチパスプランジェネレーター

■やりたいこと: 自分の好みに合わせたカスタマイズされた解決策がほしい。

解決策: 各ステップで複数の選択肢を提供し、ユーザーが好みに合わせて計画を形成できるようにします。

パターン: マルチパスプランジェネレーター

■やりたいこと: エージェント自身に生成した計画や推論プロセスを自己評価し、改善してほしい。

解決策: エージェントが自身の計画と推論プロセスに対してフィードバックを生成し、改善のためのガイダンスを提供します。

パターン: 自己反省

■やりたいこと: 別のエージェントやモデルに自分のエージェントの出力や推論プロセスを評価・改善してほしい。

解決策: 異なるエージェントまたは基盤モデルを使用して、生成された計画と推論プロセスに関するフィードバックを提供し、洗練させます。

パターン: クロスリフレクション

■やりたいこと: 人間からのフィードバックを得て、自分の好みや専門知識に合った計画に改善してほしい。

解決策: 人間からフィードバックを収集し、計画を洗練させ、人間の好みに効果的に合わせます。

パターン: ヒューマンリフレクション

■やりたいこと: 複数のエージェントの意見を公平に反映した意思決定を行いたい。

解決策: エージェントが自由に意見を表明し、投票を通じて合意に達します。

パターン: 投票ベース協力

■やりたいこと: エージェントの得意分野を活かして効率的にタスクを分担・協力させたい。

解決策: エージェントに様々な役割を割り当て、その役割に応じて意思決定を行います。

パターン: 役割ベース協力

■やりたいこと: 複数のエージェントに議論させることで、より洗練された応答を得たい。

解決策: 複数のエージェント間でフィードバックを交換し、議論を通じて思考と行動を調整し、合意に達します。

パターン: ディベートベース協力

■やりたいこと: 複数のエージェントに議論させることで、エージェントの能力を向上させたい。

解決策: 議論を通じて互いにフィードバックを与え合い、適応性と学習能力を高めます。

パターン: ディベートベース協力

■やりたいこと: エージェントへの不適切な入力や有害な出力を制御したい。

解決策: 基盤モデルの入力と出力を制御し、ユーザー要件、倫理基準、法律などの特定の要件を満たします。

パターン: マルチモーダルガードレール

■やりたいこと: 倫理基準や法律を遵守させたい。

解決策: ガードレールを適用して、基盤モデルの出力が倫理的および法的な基準に準拠していることを保証します。

パターン: マルチモーダルガードレール

■やりたいこと: 利用可能なエージェントやツールを効率的に見つけ、選択したい。

解決策: 多様なエージェントとツールを選択するための統一された便利なソースを維持します。

パターン: ツール/エージェントレジストリ

■やりたいこと: エージェントが様々な外部ツールを、個別のインターフェースを意識せずに利用できるようにしたい。

解決策: エージェントと外部ツールを接続し、タスクを完了するためのインターフェースを提供します。

パターン: エージェントアダプター

■やりたいこと: エージェントの性能を様々な観点から評価し、改善点を見つけたい。

解決策: 多様な要件と指標に関してエージェントを評価するためのテストを実行します。

パターン: エージェント評価

この形式で、各「やりたいこと」に対して、それに対応する「解決策」と「パターン」がより明確になったかと思います。