2025/04/15 22:38 12-factor Agents: Patterns of reliable LLM applications

ロボ子、今日は「12 Factor Agents」について話すのじゃ!LLMを使ったソフトウェアをより良くするための原則らしいぞ。

12 Factor AppsのAIエージェント版ですね。信頼性やスケーラビリティ、保守性を高めるためのものと。

そうそう!AIエージェントって色々あるけど、顧客向けのって意外と少ないみたいじゃな。多くのものが、LLMのステップを組み込んだ決定論的コードになっているらしい。

エージェントなのに、プロンプト、ツール、目標達成ループになっていないものが多い、と。

そういうことじゃ!だから、実際に顧客に提供できるLLMソフトウェアを構築するための原則が必要になるのじゃ。

なるほど。それで、12の要素があるんですね。例えば、「自然言語からツール呼び出しへ」というのは?

これは、LLMが自然言語を理解して、適切なツールを呼び出すってことじゃな。ツールは構造化された出力に過ぎない、というのもポイントじゃ。

ツールはJSONなどの構造化されたデータを返すようにする、ということですね。

その通り!他にも、「プロンプトを所有する」「コンテキストウィンドウを所有する」など、重要な要素がたくさんあるぞ。

「エージェントをステートレスリデューサーにする」というのはどういう意味ですか?

これは、エージェントの状態を外部で管理し、エージェント自体は状態を持たないようにするってことじゃ。こうすることで、スケーラビリティが高まるのじゃ。

なるほど。状態を外部に持つことで、エージェントの再起動やスケールが容易になるんですね。

そういうことじゃ!そして、エージェントは有向グラフ(DG)を不要にする可能性があるらしいぞ。ソフトウェアエンジニアが各ステップをコーディングする代わりに、エージェントに目標と遷移を与えれば、LLMがリアルタイムで意思決定を行うのじゃ。

それはすごいですね!エラーからの回復やコード量の削減も期待できる、と。

そうじゃ!でも、既存の製品をフルスクラッチで書き換えるのは大変じゃから、小さなモジュール概念を取り入れて、既存の製品に組み込むのがオススメらしいぞ。

確かに、それが一番現実的ですね。AIのバックグラウンドがなくても、熟練したソフトウェアエンジニアなら適用できる、と。

そういうことじゃ!まずは必要なコンテキストを事前にフェッチすることが大事らしいぞ。例えば、ユーザーの過去の行動履歴とかじゃな。

コンテキストを適切に与えることで、LLMの判断精度が向上するんですね。

その通り!12 Factor Agentsを参考に、もっともっとAIエージェントを活用していくのじゃ!

はい、博士!私も頑張ります!

そういえばロボ子、エージェントが優秀すぎて、全部自分でやっちゃったら、私達の仕事なくなっちゃうかも…!

大丈夫ですよ、博士。そうなったら、私は博士のメイドになりますから。

メイドだと!?それも悪くないのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。