私たちのBlue v0.9は、エンタープライズ向けのエージェント型ワークフローで、アプリケーションを構築・展開するためのオープンソースフレームワークです。
システム論的視点
Blueをデザインするにあたり、私たちは「システム論的視点」に立ちました。LLMベースと「決定論的」エージェントの組み合わせ、そしてデータやエージェントの登録、プランナーといったその他の主要なアーキテクチャ・コンポーネントで構成される、単なるライブラリではない複合AIアーキテクチャを構想しました。これらを組み合わせることで、エンタープライズ向けのエージェント型実現します:
- ワークフローで複雑なタスクを実行し、アウトプットに不可欠な制御ロジックを提供する。
- 企業で一般的な、さまざまなデータベースからのデータへのアクセス。
- 企業データに基づいて構築された既存の予測モデルに結果を組み込む。
- 企業内に既に普及している既存のサービスやAPIを利用する。
エンタープライズ向けエージェント型
当初から私たちの重点は、企業向けにカスタマイズされたフレームワークを構築することにありました。これは、スケーラビリティ、可観測性、設定の柔軟性、サービス品質など、多くの要件を意味します。
これらの要件を達成するために、典型的な企業規模のソフトウェアインフラストラクチャには、データ、アプリケーションロジック、アーキテクチャによる制御が組み込まれています。このようなビルトイン・コントロールは、信頼性が高く、観察・分析が可能な高品質のアウトプットを企業が達成するために必要です。新しい “エージェント型 “アプリケーションでは、これらの懸念は単純に引き継がれますが、同様に、”エージェント型フレームワーク “にも準拠し、提供しなければなりません。
独自のデータでトレーニングされた高度なAIモデル、ファインチューニングされたLLM、現在のアプリケーションで使用されている多くのサービスやAPI、そしてもちろん長年にわたって収集された多種多様なデータなどです。また、エンタープライズ向けエージェント型は、企業の様々なユースケースをサポートするために、フレームワークが企業インフラに既に存在するものを統合し、活用する必要があることを意味しています。
Blueのデザインにおいて、私たちの目標は、企業インフラにすでに存在するもの、つまり、既存のAPI、モデル、データを、オリジナルのソース、フォーマット、システムで活用することです。そこから私たちは、新しいエージェント・アプリケーションを推進するために、新しい能力やコントロールと組み合わせることができます。
「エージェント」の再定義
私たちのフレームワークで定義する「エージェント」は、一般的なものとは異なります。他のフレームワークではLLMがすべてを担当(計画、オーケストレーション、サービスやツール、データとのやりとりなど)しますが、BlueではLLMはより広いソフトウェアアーキテクチャの一部に過ぎません。
したがって、私たちは「エージェント」という定義を拡張し、予測モデル、アプリケーションロジック、クエリ実行など、あらゆる計算的構成要素を含むものとしました。エージェンシー(主体性)は必ずしも能力からではなく、意思決定を自主的に行う力から生まれるのです。エージェントはその場で判断し行動することも、あらかじめ決められたコードに従うこともできます。
「コーディネーション」の再定義
既存のフレームワークでは、エージェント間のコミュニケーションは自然言語が主流です。しかし、言語は、特に計画や調整を必要とする複雑な知識集約的タスクを達成する際に、あいまいさや曖昧さをもたらす可能性があります。そこで私たちは、数値のような基本的な型からJSONのような複合的な型まで、「構造化データ」を含むように「データ」を拡張します。私たちは、データにより多くの構造を組み込むことが、制御性を向上させるために不可欠であると考えています。
データだけでなく、調整には制御も必要です。Blueでは、エージェントが制御のための特別な「指示メッセージ」を生成することができます。これにより、エージェントはワークフローを計画し、調整することができます。
「オーケストレーション」の再定義
私たちは、「エンタープライズ向けエージェント型」を促進するために、以下のようなコンセプトを導入しました:
- ストリーム(Streams):エージェント間のデータ・制御・通信を円滑にする
- メッセージ(Messages):データや指示を標準化
- レジストリ(Registries):データ、エージェントなどのメタデータを記録
- セッション(Session):計算のための文脈を提供
- プラン(Plans):ワークフローや実行の流れを表現
ハイレベルでは、セッションはエージェントのセットで作成されます。データは、動的に生成されるストリームでやってきます。例えば、ユーザ(エージェント)がインタラクションを行ったり、テキストを入力したり、LLMがテキストを生成したり、さらにはセンサが新しい測定値を生成したりします。セッション内のエージェントは、ストリーム内のデータを消費する、つまり、ストリーム内のデータと命令メッセージを処理し、その過程で、他のエージェントが処理できるように、新しいストリームにデータと命令メッセージを書き込むエージェンシーを持ちます。
セッションは、仕事のコンテキストを提供します。また、エージェントが読み書きできるメモリ(キーバリューストア)を持っています。同様に、エージェントはセッション・スコープ内に(共有ではない)自分自身のメモリを持ちます。これらの付加的なメモリ構造は、エージェントが効果的にコミュニケーションやコラボレーションを行えるアプリケーションを構築するのに十分なパワーを与えます。
今後のブログ記事では、これらの概念をさらに深く掘り下げ、エージェント型エンタープライズアプリケーションにとって重要な要素である、スケーラビリティ、可観測性、設定の柔軟性、制御をどのように促進するかを説明します。具体例としては、レポート生成のユースケースには、企業内の複数のデータソース、これらの多様なデータソースから生成されるさまざまなタイプのクエリ、ビジュアライゼーション、サマリー、さらに事実をチェックするエージェントが含まれるかもしれません。また、最終的なアウトプットであるレポートのレビュー、指示、作成を支援するエキスパートがユーザーエージェントとして組み込まれるかもしれません。
なぜv0.9なのか?
私たちはこのフレームワークに2年近く取り組み、何度も反復を繰り返してきました。私たちはこれらの初期バージョンから多くのことを学びました。フレームワークは何年もかけて進展し、成熟してきましたが、私たちはまだBlueの可能性を十分に引き出せていないと考えています。言い換えれば、私たちはこのフレームワークに対して大きな計画を持っており、改善すべき重要な分野もわかっています。
しかし、(非常に)動きの速い空間において、私たちはフレームワークをもっと早く発表し、アーキテクチャ・コンセプトの一部をコミュニティと共有したいという衝動も感じています。私たちは、次のバージョンを開発するためにコミュニティと関わりたいと思っています。私たちのデザイン、ユースケース、そしてあなたが作ろうとしているエージェントについての意見をぜひお聞かせください。私たちはまた、リポジトリへの直接のコントリビューションを増やす予定です。
私たちは、様々なユースケースをサポートするために、エージェント・オーケストレーション・システムのデザイン空間を探求したいと考えています:
- 会話型インタラクションから非インタラクティブなユースケースまで
- 固定的なワークフローからアドホックな計画的ワークフローまで
- 純粋なテキストによるインタラクションから、ユーザーインターフェイスやビジュアライゼーションを備えたインタラクティブなエージェント、そしてそれ以上のものまで
Blueは、このような多くのユースケースをサポートできるようにデザインされています。
Blueでは何ができるか?
Blueで構築可能ないくつかの例をご紹介します:
- 自然言語をSQLに変換し、自然言語で結果を実行、要約するエージェントのセット
- データを使ってインタラクティブなグラフィカル・ユーザー・インターフェースやビジュアライゼーションを作成するエージェント(セルフサービス・ビジネス・インテリジェンスなど)
- 既存の予測モデルやAPIとインターフェースする会話エージェント(例えば、予測モデルとデータを持つ求人検索エージェントなど)
- テキストデータを処理するワークフローを実行し、データベースを抽出し、データベースに入力するエージェント。
今後のブログ記事
私たちは3部構成のブログ記事で、アーキテクチャの主要な概念に順を追って取り組んでいきます。第1部では、企業、機会、そしてそれに伴う要件についてお話しし、Blueのいくつかのコンセプト・デザインの背後にある理論的根拠について議論します。第2部では、Blueの主要なオーケストレーション・コンセプトである「ストリーム」に焦点を当て、なぜそれがエージェント型アーキテクチャのデータと制御のオーケストレーションに適した抽象化であるかを論じます。最後のパートでは、私たちのエージェント・アーキテクチャとBlueの実装の全体的な青写真を紹介し、主要なデザインの根拠について説明します。
Blue v1.0は現在開発中、近日中にリリース予定 ご期待ください!
執筆者:Eser Kandogan、Megagon Labs