Jaseci Logo
出典: docs.jaseci.org

AIエージェントを想定した言語と実行環境

ミシガン大学のJason Mars教授が、AIやエージェントを中心に据えたプログラミング言語「Jac」と実行環境「Jaseci」を開発しました。Mars氏は、エージェントが複数の言語や開発ツールを扱う負担を減らすことを狙いに挙げています。

Mars氏は、JacとJaseciを米ノースカロライナ州ローリーで開かれた「All Things Open」カンファレンスで紹介しました。従来のプログラミング言語や開発環境は人間の開発者向けに作られており、AIエージェントが使う場合に課題があるというのが、同氏の問題意識です。

JacはPythonに似た構文を持ち、エージェント開発に必要な言語機能と実行環境をまとめる設計です。Jaseciは実行を担うランタイムで、Jacと組み合わせてエージェントやアプリケーションを動かします。

複数の言語環境を一つにまとめる設計

JacはPythonバイトコード、JavaScript、ネイティブ機械語へコンパイルでき、PythonのPyPIとJavaScriptのnpmにあるライブラリを利用できます。また、LLVMを取り入れ、Rustに似た借用検査と所有権の仕組みを実装しているほか、CやC++のライブラリも読み込めます。

JacのコードをTypeScript、Python、Cへ変換する「eject function」もあり、組織のコンプライアンス要件への対応に使えます。一方、Javaは対応言語に含まれず、Mars氏もJava向けの言語ではないと述べました。

Mars氏は、複数言語間の変換費用の例として、Bunの開発者Jarred Sumner氏が、Zigで書かれたBunをRustへ変換するためにAnthropicのトークンへ16万5,000ドル(約2,600万円)を費やした事例を挙げました。Jacは異なる言語の環境を一つにまとめ、こうした開発上の負担を抑える構想です。

ノードとエッジをたどるwalker

Jacでは、データをグラフとして扱い、情報のまとまりを「ノード」、ノード間の関係を「エッジ」で表します。この構造はデータの表現と処理の土台を兼ねます。グラフはコンピューターのメモリー、ストレージ、クラウドサーバーに置けます。

処理を担う「walker」は、グラフ上を移動しながらノードやエッジをたどる仕組みです。walkerはそれぞれ独立してグラフを歩き、処理結果をグラフに残して別のwalkerと情報を共有します。この構成では、機能をwalker単位で追加・削除できます。

複数のwalkerが異なる経路を進むことで、処理を並行して実行できます。Mars氏は、データベースから情報を取り出して別の場所で処理する代わりに、処理側をデータのある場所へ送り込む方法だと説明しました。エージェントがデータの形式を読み解く作業を減らすことも、このグラフ設計の狙いです。

LangGraphとの比較と利用例

Mars氏は、JacとPythonベースのエージェント構築フレームワーク「LangGraph」を使い、AIエージェントにコードレビュー製品Greptileの複製を作らせる比較を行いました。Jacでは複数段階の処理を組み合わせ、複数ツールを並列で呼び出すアプリができた一方、LangGraphでは直線的な状態機械となり、並列処理ができなかったと報告しています。

この比較を踏まえ、Mars氏は、AIに与えるツールが生成物の質を左右すると評価しました。この評価はMars氏が行った一つの試行に基づき、JacとLangGraph全般の性能比較を示すものではありません。

JacとJaseciは、GraphClawという複数エージェント向けプラットフォーム、スケジューラーのSkooch、Tobuの個人向けメモリープラットフォームなどのAI関連サービスで使われています。