📝

AI エージェントのパターンを使ったTDDメカニズムの考察

に公開

を生成してもらってた。

はじめに

AIエージェントは、自律的にタスクを実行するために様々な思考や行動のフレームワーク(思考プロセス)を持っています。それぞれのエージェントは、問題解決の進め方において独自の特徴を持っています。ここでは、代表的なAIエージェントの思考プロセスを「Planning(計画)」「Testing(テスト)」「Programming(プログラミング)」「Refactoring(リファクタリング)」の4つの観点から整理し、解説します。


ReAct (Reason + Act)

ReActは、「思考」と「行動」を交互に繰り返すことで、タスクを遂行するエージェントです。人間の問題解決プロセスに似ており、状況を判断し、次に行うべきことを決定します。

  • Planning: タスクを達成するための具体的な行動計画を段階的に策定します。まず、大きな目標を達成するために「何をすべきか」を考え(Reason)、そのために必要な具体的な行動(Act)を決定します。例えば、「最新のAI研究について調べる」というタスクがあれば、「Googleで『最新 AI 研究』と検索する」という具体的な行動を計画します。
  • Testing: 行動の結果を観測し、それが計画通りに進んでいるか、期待した結果が得られたかを確認します。検索結果が不十分であれば、次の思考ステップで検索クエリを修正するなど、行動を評価・検証します。
  • Programming: 直接的なプログラミングは行いませんが、思考プロセスを通じてAPIを呼び出したり、外部ツールを利用したりする一連の「行動」を組み立てます。これは、特定のタスクを自動化するスクリプトを組む行為に似ています。
  • Refactoring: 行動の結果が期待と異なる場合、思考プロセスを修正します。例えば、ある行動が目標達成に効果的でないと判断した場合、その行動を避け、別の行動計画を立て直します。これは、コードの非効率な部分を改善するリファクタリングに相当します。

Self-Reflective(内省)エージェント

自己評価と自己修正の能力を持つエージェントです。自身のアウトプットや行動を客観的に評価し、改善点を見つけて修正していきます。

  • Planning: 初期の計画に基づいてタスクを実行した後、その結果を自己評価(内省)し、次の行動計画をより洗練されたものに修正します。計画自体を改善していく点が特徴です。
  • Testing: 生成したコードや文章、計画そのものに対して「このままで良いか」「もっと改善できる点はないか」といった自己評価(セルフテスト)を行います。外部からのフィードバックなしに、自ら問題点を発見しようとします。
  • Programming: 生成したコードに対して、内省プロセスを通じてバグや非効率な部分を自ら発見し、修正コードを生成します。一度書いたコードを何度も見直し、より良いものに仕上げていきます。
  • Refactoring: 内省エージェントの中核的な機能です。自身のアウトプットを継続的に評価し、より品質の高いものへと改善し続けます。生成物の構造や論理を見直し、冗長な部分を削除したり、より効率的な記述に修正したりします。

Tree-of-Thought (ToT)

一つの問題に対して複数の解決策を木の枝のように分岐させて考え、それぞれの可能性を評価しながら最適な答えを探すエージェントです。

  • Planning: 複数の実行可能な計画パス(思考の枝)を同時に生成・検討します。各計画の初期ステップを実行し、その見通しを評価して、最も有望な計画を選択または継続します。複雑な問題に対して、より網羅的で柔軟な計画立案が可能です。
  • Testing: 各思考の枝の有効性を評価します。それぞれの思考パスがゴールにどれだけ近づいているか、あるいは行き詰まっていないかをテストし、有望でない枝は早期に切り捨てます(剪定)。
  • Programming: 複数のアルゴリズムや実装方法を同時に検討し、それぞれのメリット・デメリットを評価します。例えば、ある機能を実装するために3つの異なるアプローチを並行して考え、最も効率的でバグの少ない方法を選択します。
  • Refactoring: ToTは、単一の解決策を改善するのではなく、複数の解決策の可能性を探ることに重点を置きます。ある思考の枝が行き詰まった場合、他の有望な枝に切り替えることで、根本的に異なるアプローチを試みます。

Plan & Execute

最初に詳細な計画を立て、その計画に従ってタスクを一つずつ実行していくエージェントです。

  • Planning: タスクの最初に、最終目標に至るまでのステップバイステップの詳細な計画を策定します。この計画は、一度立てると基本的には変更されません。
  • Testing: 各ステップが計画通りに完了したかを確認します。計画と実行結果の間にズレがないかをチェックすることが主なテストとなります。
  • Programming: 策定された計画に基づいて、必要なコードやコマンドを順番に実行します。計画が明確なため、迷いなくタスクを遂行できます。
  • Refactoring: このモデルでは、実行中に計画を柔軟に変更することはあまり想定されていません。計画が失敗した場合、最初から計画を立て直す必要があります。動的なリファクタリングよりも、初期計画の精度が重要になります。

Human-in-the-Loop (HITL)

AIエージェントの意思決定プロセスに人間が介在し、フィードバックや承認を行うことで、システムの精度と信頼性を高めるアプローチです。

  • Planning: AIが生成した計画案を人間がレビューし、承認または修正します。特に、倫理的・安全的な判断が求められる場面で、人間の監督者が計画の妥当性を保証します。
  • Testing: AIの生成物や行動の結果を人間が評価します。AIが見逃したエラーや、より適切な表現などを人間が指摘し、テストの役割を担います。
  • Programming: AIが生成したコードを人間のプログラマーがレビューし、修正や改善を加えます。AIはコーディングの補助として機能し、最終的な品質は人間が保証します。
  • Refactoring: 人間のフィードバックに基づいて、AIは自身のアウトプットや次の行動を修正します。これにより、AI単体では難しい、文脈に基づいた高度なリファクタリングが可能になります。

RL(強化学習)ベース or 自己学習エージェント

試行錯誤を通じて、より良い結果(報酬)が得られる行動を自ら学習していくエージェントです。

  • Planning: 固定された計画を持つのではなく、過去の経験(成功や失敗)から学習した「ポリシー(方策)」に基づいて、現在の状況で最も報酬が高くなるような行動を動的に選択します。これが実質的な計画となります。
  • Testing: 行動の結果得られた報酬を評価することで、その行動が良かったか悪かったかをテストします。報酬が高い行動は強化され、低い行動は抑制されます。
  • Programming: 特定のタスク(例えば、ゲームのクリアやロボットの制御)を最適に実行するための行動パターンを、膨大な試行錯誤を通じて自ら「プログラム」していきます。
  • Refactoring: 継続的な学習を通じて、行動選択のポリシーそのものを改善(リファクタリング)していきます。最初は非効率だった行動も、経験を積むことで洗練され、最適な戦略へと進化します。

Discussion