AIアーキテクチャを構築する正しい方法
AIアシスタントを賢くするには、同じループにツールを追加し続ければいいのだと思っていました。 しばらくはその方法でうまくいっていました。 しかし、チャットからタスクを継続したり、ステータスに関する質問に答えたり、ワークフローを記憶したりといった、一般的なユーザータスクをアシスタントが行う必要が出てきました。
問題は、アシスタントが呼び出せるツールの数ではなく、そのアーキテクチャにありました。 旧来のアーキテクチャは単純でした:ユーザーメッセージ -> アシスタントループ -> ツール -> 回答。 これはデモとしては十分ですが、常駐型アシスタントとしては不十分です。
常駐型アシスタントには、メッセージが新しいタスクなのか、フォローアップなのか、あるいはキャンセルなのかを判断する必要があります。 また、他のタスクからデスクトップの制御権を奪うことを避け、古いトランスクリプト(対話履歴)を使わずに手順を記憶する必要があります。
そこで、私はアシスタントを単一のエージェントとして考えるのをやめ、ローカルのコントロールプレーン(control plane)として扱うようにしました。 現在のアーキテクチャは以下のようになっています:
- Experience Plane: ユーザーがどこから対話しているかを管理
- Assistant Control Plane: それがどのような種類の作業であるかを決定
- Runtime Execution Plane: コーディング作業が行われる場所
- Proxy / Model Access Plane: プロバイダー側の処理を担当
また、Observation PlaneとMemory / Policy Planeも備えています。 これらのプレーンによって、アシスタントは混乱することなく、タスクに集中し続けることができます。
最大の改善は、アシスタントに生のログではなく「オブザベーション(観測結果)」を消費させるようにしたことでした。 これにより、アシスタントは膨大なトランスクリプトを読む代わりに、「タスクXは承認待ちです」といった簡潔な事実を把握できるようになります。
「記憶すること」は、プロンプトにチャット履歴を詰め込むこととは別物であると学びました。 私のアシスタントにとって、メモリはファイルベースであり、スコープ(範囲)が限定されています。 ワークフロー、事実、または参照を保存し、必要な時にそれを呼び出すことができます。
もし既存のツールを中心にエージェントを構築しているなら、すべてを一つのループの中に詰め込んでいませんか?それとも、コントロール、実行、オブザベーション、メモリを分割し始めていますか?
Source: https://dev.to/codekingai/my-ai-assistant-needed-a-control-plane-not-a-bigger-loop-15aa Optional learning community: https://t.me/GyaanSetuAi