OpenSparX/MasterAgent
Build AI agents that run 100% on-device. Sub-100ms latency on Qualcomm NPU. Zero cloud dependency.
OpenSparX / MasterAgent – 小型で組み込み可能なC++エージェントランタイム
概要
- ローカルファーストなAIエージェントを構築するためのオープンソースのC++17ライブラリ(および付属のCLI)です。ユーザーの発話を決定論的な正確なフレーズのスキル(モデル不要)と照合します。スキルが一致しない場合、シンプルなHTTP/JSON APIを介してローカルでホストされたLLM(例:llama-server)にリクエストを転送できます。
- ランタイムはツール定義(名前、引数のJSONスキーマ)を検証し、宣言されたツールのみが呼び出され、パラメータがチェックされることを保証します。ツールの結果は構造化されたJSONとして呼び出し元に返されます。
- 完全にオフライン(libcurlやSQLiteなし)で実行することも、モデル呼び出しのためのオプションのHTTPサポートや、永続的なリクエストレシートのためのオプションのSQLiteストレージを使用して実行することも可能です。
主な機能
| 機能 | 仕組み |
|---|---|
| 正確なフレーズのスキル | 事前に登録されたフレーズが決定論的なコールバックをトリガーし、モデルをバイパスします。 |
| ツールの登録と検証 | 開発者はJSONスキーマのような記述とC++コールバックを提供し、ランタイムは実行前にツール名と引数をチェックします。 |
| ローカルモデル統合 | MASTER_AGENT_ENABLE_HTTP=ON でビルドすると、CLIはOpenAI互換の /v1/chat/completions エンドポイントを実装するサーバー(例:GGUFモデルを提供するllama-cppサーバー)と通信できます。 |
| 永続的なリクエストレシート | SQLiteを有効にすると、各リクエストに一意のIDが付与されます。重複呼び出しはデデュプリケートされ、結果がリプレイされるため、クラッシュ復旧や UNKNOWN 状態の手動調整が可能になります。 |
| コンテキストとキャンセル | すべてのツール呼び出しは、セッションID、リクエストID、冪等キー、期限、および協調キャンセル用トークンを受け取ります。 |
| CLIとSDK | sparx コマンドラインツールがフローを実演します。SDKはCMake経由でインストールし、MasterAgent::Core(およびオプションで MasterAgent::Http)としてリンクできます。 |
| 拡張可能なサンプル | 参考用の「インベントリエージェント」は、外部HTTPサービスの呼び出し、冪等レシートのコミット、および失われたレスポンスからの復旧方法を示しています。 |
| テストと評価 | CIはユニットテスト、合成評価、およびSDK、CLI、サンプルコンシューマーをビルドするパッケージングスクリプトを実行します。 |
典型的なワークフロー
- ツールの定義 – C++で各ツールを名前、パラメータスキーマ、および実際の作業を実行するコールバック(例:車のエアコンコントローラーとの通信)で登録します。
- 正確なフレーズスキルの追加 – 固定されたユーザーの発話(例:
"把空调调到22度")を適切なツールを呼び出すコールバックにマッピングします。 - ビルド –
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release(HTTPアダプターを削除するには-DMASTER_AGENT_ENABLE_HTTP=OFF、SQLiteを削除するには-DMASTER_AGENT_ENABLE_STORAGE=OFFを追加)。 - 実行 –
./build/cli/sparx run --input '把空调调到22度'。ランタイムはフレーズを照合し、ツールを検証し、コールバックを実行してJSONレシートを出力します。 - オプションのモデル – 正確なフレーズが一致しない場合、ローカルLLMサーバーを起動し、
--endpoint 127.0.0.1:8080 --model localを指定してCLIを呼び出します。モデルはJSON形式のツール呼び出しまたはプレーンなJSONレスポンスを返す必要があり、不正な出力は拒否されます。 - 永続化と復旧 –
--state ./state/agent.db --session alice --request-id ac-001を指定してレシートをSQLiteに保存します。クラッシュ後、sparx recover --state ./state/agent.dbを実行すると、成功した結果がリプレイされ、未完了のものは手動調整のためにUNKNOWNとしてフラグが立てられます。
なぜ重要なのか
- 決定論の優先 – モデルなしで既知のコマンドを処理することで、システムはハルシネーションを回避し、再現可能な動作を保証します。
- 安全性 – ツール名と引数は厳密に検証されます。ランタイムは、モデルの不確かな出力からツール呼び出しを推測することはありません。
- ローカルファースト – クラウドサービスは不要です。すべてがラップトップ、エッジデバイス、またはコンテナ内で実行可能です。
- 耐久性 – SQLiteレシートはシンプルな監査証跡を提供し、ビジネス上重要な操作(例:在庫の減算)に対して「正確に1回」のセマンティクスを実現します。
はじめに
# Clone and build (Ubuntu example)
git clone https://github.com/OpenSparX/MasterAgent.git
cd MasterAgent
sudo apt-get install libcurl4-openssl-dev libsqlite3-dev # optional deps
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel 4
ctest --test-dir build --output-on-failure
# Run the demo (no model needed)
./build/cli/sparx demo automotive
./build/cli/sparx run --input '把空调调到22度'
ライセンス – Apache-2.0。
上記の詳細はすべてリポジトリのREADMEから直接引用したものであり、追加の機能は推論されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト