Spring Frameworkの創設者Rod Johnson氏が発表したEmbabel Agent Frameworkは、Spring Framework上に構築されたAI駆動型アプリケーションを開発するための新しいJVMベースのプラットフォームだ。これにより、開発者が従来のJavaアプリケーションに大規模言語モデル(LLM)を統合する方法を変革し、実験的なアプローチから本番環境対応の型安全なソリューションへと移行できる。
Embabelは「エージェントフロー」をアクション、目標、条件を用いてモデル化する。単純なフレームワークとは異なり、ゲーム分野で伝統的に使用されてきたAIアルゴリズムであるGoal-Oriented Action Planning(GOAP)を活用し、適切な計画を実現する。これにより、アプリケーションは明示的にプログラムされていないタスクを新しい方法でステップを組み合わせて実行し、各アクション後に動的に再計画するOODAループを形成できる。
Embabelの中心的な理念は、強い型付けとオブジェクト指向にある。これにより、すべてのLLMとのやり取りが強く型付けされ、コンパイル時のチェック、リファクタリングのサポート、IDEの支援を提供し、AI開発を厳格なエンジニアリング実践に沿ったものにする。
Rod Johnson氏は、Embabelが計画を独立した能力として扱い、LLMだけに依存せず、専門的なアルゴリズムを活用している点を強調した。フレームワークのGOAP実装は、前提条件と効果を考慮して最適なアクションシーケンスを決定する。これにより、以下の利点が得られる。不要なLLM呼び出しを最小化することで効率性を向上させ、再計画による動的適応性を実現し、新しいアクションや目標を既存のコードを変更せずに追加可能にすることで構成可能性を向上させ、アクションの並列化を可能にする。この計画サイクルは、複雑な多段階プロセスの信頼性を大幅に向上させる。
フレームワークは3つの実行モードをサポートする。Focused(特定のエージェント呼び出し)、Closed(ユーザーの意図がエージェント選択を分類)、Open(プラットフォームが利用可能なすべてのリソースを使用して目標を達成するためにユーザーの意図を評価)だ。Embabelはまた、テストの容易さを重視しており、エージェントはSpring Beanのように単体テスト可能であり、プロンプトテスト専用のライブラリも提供する。その拡張性により、既存のコードを変更せずにドメインオブジェクト、アクション、目標、条件を追加できる。
さらに、プログラミングモデルとプラットフォーム内部を明確に分離することで、ローカル実行を可能にし、本番環境でのサービス品質を向上させる。コスト効率と能力向上のために複数のLLMを組み合わせて利用する「LLMミキシング」をサポートし、プライバシーとコスト管理のためにローカルモデルを含む。
Embabelは、Spring AIを基盤としながら、複雑な要件に対応するための高レベルの抽象化を提供し、JVMエコシステムにエージェント機能をもたらす。再利用性の最大化、テストの容易化、構成可能性の向上、管理性の向上、型安全性の提供を通じて、AIアプリケーション開発の主要な課題に対応する。
InfoQは、EmbabelおよびSpringの創設者であるRod Johnson氏にインタビューし、フレームワークの設計と戦略的な位置付けについてさらに詳しく聞いた。
InfoQ. EmbabelにKotlinを採用した理由は何ですか?モダンJavaの進化を考慮しての選択ですか?
Rod Johnson氏: JavaはOracleの管理下で非常に良く進化してきました。モダンJavaは確かに大きく改善されています。個人的にはKotlinでのコーディングを好み、Kotlinを使用することでEmbabelの開発が加速すると感じています。特に、null安全性、ストリームに持ち上げる必要のない読みやすいコレクションの使用、より簡潔な構文が気に入っています。型消去の影響を軽減することで、純粋なKotlinの使用がよりエレガントになる点も魅力です。
ただし、フレームワークの実装に使用する言語の選択は、それを基盤にアプリケーションを構築する際の言語選択を意味しません。すべてのJVM開発者にKotlinを検討することを勧めたいですが、多くのプロジェクトがJavaで継続する理由も理解しています。KotlinはJavaとの相互運用性が優れており、非常にスムーズです。Javaの使用が完全に慣習的であり、Kotlinの影響を受けないことを保証することにコミットしています。必要に応じて、少しJavaコードを追加してそれを確保しています。例えば、Javaでアプリケーションを構築する場合、Ktインポートを見ることはないでしょう。
Embabelの型安全性と豊富なドメインモデルというコアバリューは、KotlinでもJavaでも際立っています。両言語のそれぞれの流儀に沿った書き方を可能にすることを目指しており、Kotlin DSLも提供しています。
EmbabelはJVMフレームワークであり、Kotlinフレームワークではありません。JVM上の主要な言語はJavaであり、Javaが進化していることは素晴らしいことです。
InfoQ: EmbabelをLangChain4jやSpring AIなどの他のJavaベースのAIイニシアチブと比較してどのように位置付けますか?
Rod Johnson氏: EmbabelはLangChain4jやSpring AIよりもはるかに高いレベルに位置しています。それらのレイヤーを基盤に構築しており、Spring AIを選んだ理由はSpringエコシステムとの親和性によるものですが、より高い抽象化レベルを提供し、独自のアイデアを導入しています。エージェントフレームワークレベルはPythonではすでに馴染み深いですが、JVMでは非常に新しい概念です。そして、Javaがエンタープライズやその他の分野での地位を維持するためには緊急に必要とされています。
InfoQ: 従来のJavaチームはEmbabelを採用可能ですか?それともAIの専門知識が必要ですか?
Johnson氏: ドメインや既存のビジネスアプリケーション、インフラストラクチャの理解が、生成AIがビジネス価値を提供するために重要だと考えています。Embabelは、JVM開発者がSpring MVCアプリケーションを書くのと同じくらい簡単にエージェントを書けることを目指しています。
多くの人や組織が生成AIアプリケーションをPythonで書く必要があると考えています。それは本番環境に新しいスタックを導入し、潜在的に新しいスキルセットを必要とし、既存のビジネスロジックやインフラストラクチャにアクセスする際に多くの摩擦を生じさせる可能性があります。それは完全に誤りだと信じています。そして、Pythonエコシステムには非常に精通しています。Javaチームは、最小限の摩擦でAIをアプリケーションに活用し、既存の理解とツールセットの利点を享受するのに適しています。
とはいえ、LLMは広範な影響を持つ強力な新技術です。組織や開発者は、リスクやコストだけでなく、報酬も理解する必要があります。良いエージェントフレームワークは生成AIをより安全で予測可能にしますが、それでも働いている力を理解することが重要です。そして、その警告はどの技術スタックでアプリケーションを構築する場合にも当てはまります。
InfoQ. Springとの歴史やエコシステムとの現在の関係を考慮して、Embabelの進化をSpring AIやSpringポートフォリオ全体とどのように関連付けていますか?公式Springプロジェクトファミリーへの統合やより緊密な連携についての議論はありますか?
Johnson氏: 私は最近、バルセロナで開催されたSpring I/Oで講演を行いました。素晴らしいイベントでした。Springを基盤に構築することに非常に満足しています。Springは優れた技術であり、エンタープライズJavaにおける主要なコンポーネントモデルであるため、採用の観点からも理にかなっています。もちろん、個人的な理由でもSpringを基盤に構築することに満足しています。23年前に生み出したものが繁栄し、良い手に渡っているのを見るのは喜びです。
Embabelは独立したプロジェクトであり、独自のアイデアを持ち、どのプラットフォームでも最高のエージェントフレームワークを目指しています。Spring AIよりもはるかに高いレベルであり、独自のアイデアを導入しています。SpringとJavaにとって良いことだと考えています。
Springを作ったとき、当時のもっとも重要なエンタープライズJavaの問題、つまりJ2EEがアプリケーションを構築するのを非常に困難にしていた問題を解決することに焦点を当てていました。Embabelを作るにあたり、今日のもっとも重要なJVMの問題、つまりビジネスアプリケーションを生成AI時代に持ち込む方法を解決することに焦点を当てています。
JVMが生成AIの未来において特に重要な役割を果たすと考えているが、どのプラットフォームでも最高のエージェントフレームワークを目指すEmbabelの目標は、Springには当てはまらない他のプラットフォームへのモデルの移植を最終的に意味します。TypeScript版を明確に想像できます(移植とは言わない。慣習的である必要があるため)。TypeScriptが好きであり、Nodeが重要です。そして、Pythonが非常に人気であることは明らかです。
EmbabelはSpringと同じくらい重要な技術になり、Springエコシステムの力を拡大できると信じています。
InfoQ: Embabelの例や学習リソースはどこで見つけられますか?
Johnson氏: 私たちは例を改善するために継続的に取り組んでいます。embabelリポジトリが探索の出発点であり、開始方法に関する指示が含まれています。そのリポジトリのembabel-agent-examplesサブディレクトリには例のエージェントがあります。コーディングエージェントは例としても機能し、独自のリポジトリにあります(https://github.com/embabel/embabel-coding-agent)。
コーディングエージェントや旅行プランナーのような例を進化させ、Embabelを学ぶ開発者に役立つだけでなく、本当に有用にすることを計画しています。それらのいくつかが独自の興味深いオープンソースプロジェクトになるのを確実に想像できます。