NeoGraph - LangGraphをC++に移植したエージェントエンジン
(github.com/fox1245)こんにちは。
私が作ったエージェントオーケストレーションエンジン NeoGraph を共有します。
C++17ベースで、以下のコマンドでインストールできます。
pip install neograph-engine
なぜ作ったのか
Pythonベースの LangGraph を使っていると、性能が物足りないと感じることが多くありました。サーバー稼働時に必要となるスペックもかなり求められるため、軽量で高速なオーケストレーションエンジンがあればいいのにと思うことが多く、その流れで C++ で実装して性能向上を狙うことになりました。
特徴
グラフを コード ではなく データ として扱います。
ほとんどの Python フレームワークはグラフを Python オブジェクトとして定義します。NeoGraph はグラフ構造そのものを JSON で定義します。StateGraph オブジェクトではなく、DB の1行に入る JSON の塊として定義されます。
そのため、次のようなことが可能になります。
-
デプロイ不要のホットスワップ - エージェント構造(グラフトポロジー)を変更するには、DB の JSON 1行を差し替えるだけで済みます。
再デプロイも、プロセス再起動も、進行中の会話の消失もありません。 -
マルチテナント - 顧客ごとに異なるエージェント構造を1つのプロセス内で動かせます。実際に OpenAI gpt-4o-mini で 1,000 顧客を同時処理した際、RSS 29MB、エラー 0 件でした。同じ構成を LangGraph で行うと、顧客ごとにプロセスが必要になるため、おおよそ数十GBが必要になると見ています。
-
自己進化エージェント - LLM が各顧客との会話を見て、その顧客の graph_def(JSON) を書き換えます。つまり、エージェントがユーザーの行動に合わせて「自ら形を変えます」。
そして高速です。
| フレームワーク | エンジンオーバーヘッド(ノード1回) | NeoGraph比 |
|---|---|---|
| NeoGraph | 5.0 µs | 1× |
| Haystack | 140 µs | 28× |
| LangGraph | 643 µs | 128× |
| LlamaIndex | 1,565 µs | 313× |
| AutoGen | 3,127 µs | 625× |
もちろん測定方法によって異なる可能性はありますし、実際に LLM 呼び出しが入ると外部 I/O が支配的になるため、体感速度は似てくることもあります。
この µs の数値が本当に意味を持つのは、1台に数千件のリクエストが飛んでくるマルチテナントやエッジのケースだと考えています。
GitHub: https://github.com/fox1245/NeoGraph
PyPI: https://pypi.org/project/neograph-engine/
フィードバック歓迎です。
まだコメントはありません。