Hieronymus Ver 2.0.6 release
「慧仕(Huìshì)」というAIエージェントフレームワークを作っています。
Huishi(以下この記法にします)の詳細についてはまたそのうち書くとして、これで使っている「思考構造」について公開したいと思います。 これは、世の中にある様々なAIエージェントを調べていて、類似の構造のものがなかったからです。
「なかった」理由はよくわかりません。有効でないと考えられているのか、そこに考えが至らなかったのか、その辺はよくわかりません。 とは言え、「なかった」のは事実なので、文章にまとめて公開して公知にしておきます。 そうすれば、少なくとも私が使えないことはないからです。
以前、CatchUpというニュース解説のエージェントを作っているという話はしました。
元々が「お好みのニュースを楽して読みたい」という希望から作ったものですが、裏の背景として「LLMを応用した文書管理システム」の話が来ていたということも書いていると思います。 そして、この話に関連して「ある種の教育システム」という話も一緒に来ていました。 時を同じくして、複数のAIエージェントを作るということになっていたわけです。
私の習性として、そういった「似たような話」が複数ある時には「個別にアプリ作るのをやめてフレームワーク的なものをまず作る」というアプローチを取ります。 そこで、「汎用AIアシスタント」を構築するためのフレームワークを考え始めました。 それが「Huishi」です。
「Huishi」の詳細については、そのうちあらためて書きます。
最初は「ユーザの入力」を元にLLMで解析をして、処理の分岐を行い… というありがちのアプローチを取ろうとしたのですが(前述のエントリにそれが書いてありますね)、「ある種の教育システム」に関わる人達は、基本的に非ITエンジニアです(教育学系の人達)。 そうなると、このアプローチは取れません。 そこで「より汎用的でわかりやすい何か」を実現することが必要となります。
「大きな問題」を解くためのAIエージェントは「思考のルーティング」が必要です。
つまり、「強いプロンプトを考案して、どーんとLLMに食わせる」よりは、問題を分割して個々の問題を解くエージェントを作り、その思考をルーティングしてやることが必要となります。
そして、「従来手法」として「思考のルーティング」は大別して以下の方法と得失があります(この部分はChatGPTに聞いてます)。
この表の妥当性、あるいはこれらについての詳細の説明は省きますが、大別して2つくらいの手法があり、それぞれ得失が存在します。
Huishiの思考構造として取ったアプローチは、一言で言えば「SCRIPT」です。
「SCRIPT」とは、R.C.Schankの提唱していた「CD理論(Conceptual dependency theory)」の中の一つで、人間の行動の大部分がある種のパターン(台本)に当てはまるという理論です。 人間の行動のうちの「手続き的動作」について説明するためのものです。
しばしばSCRIPTの例に挙げられる「レストランスクリプト」だと、
…
というような一連の動作が「SCRIPT」であるというわけです。 元々は「SCRIPTがわかれば次に何をするかわかる」的なものでした。
AIエージェントの思考も、これを応用すれば良いではないかというのが今回の着想です。 つまり、
というのが、Huishiの「思考」です。 この「思考」の過程で、細かいタスクを処理する専門的なエージェントがあって、そのエージェントをSCRIPTでオーケストレーションするというのが基本構造です。
以下はこの概念的な図です(実装は異なります)。
個々のエージェントは、ほとんどがMarkdownかYAMLで記述されていて、「特別な処理(DB検索とか外部アクセスとか)」のみがハードコードです。
SCRIPTはYAMLで記述で記述されます。 「あれやって、これやって」を列挙するだけですから、YAMLが一番書きやすかったという理由です。 とは言え、エージェントの動作と組み合わせて、Turing完全になるようにはなっています。
今回提案する手法は、いずれの手法にも属さない手法であると共に、これらのデメリットを補う手法です。
現在のところ良好に動いていて、当初の予定であった「ニュース解説」はもちろんのこと、効果のデモとして作った「数当てゲーム」も共存できています。 また、SCRIPTにない問いがあった場合でも、適当にエージェントを組み合わせて答えを出すようなSCRIPTを自分で生成して処理したりもしてくれます。
SCRIPTの途中キャンセルにもある程度対応していて、「数当てゲーム」の途中で「今日の天気教えて」と言えば、「数当てゲーム」を中止して「天気予報」を教えてくれたりします。
まだエージェントやSCRIPTが少ないので、これらを増やした時にどうなるかは、今後の課題となっています。 現状直接LLMに選択させていますが、この部分はスケールするように改修する予定でいます。
私は発見できませんでしたがこれは単純なアイディアに過ぎませんから、既に誰かが発明して特許化しているかも知れません。
また、現状のHuishiの実装は初期段階に過ぎませんし、実効性の検証もまだまだなので、有効性についてはよくわかっていません。
そういったこともあるとは思いますが、とりあえずこうやってネットの海に放流します。 つまり、「少なくとも今日からは公知」です。
例によって「公知」となっていますから、私及び弊社は何の権利も主張しませんので、もし本当に有用であれば自由に使って下さい。 この手法をより「強く」する方法があれば、それも同じように公知にして下さると嬉しいですし、特許化されたら「基本アイディアは公知だ」と言いに行くかも知れませんw