概要
- SymbolicAI は、PythonとLLM(大規模言語モデル)を融合させた ニューロシンボリックフレームワーク
- プリミティブ と コントラクト が中核概念で、柔軟な拡張性とカスタマイズ性を備える
- 構成管理 やAPIキー設定など、実運用に必要な管理機能も充実
- 多様なエンジン (OpenAI, Anthropic, ローカル, 画像/音声/検索など)を統合利用可能
- コントラクト により、LLMの出力品質や正確性を保証する仕組みを実装
SymbolicAIとは何か
- SymbolicAI は、 従来型Pythonプログラミング と LLMの意味的推論能力 を自然に組み合わせるフレームワーク
- モジュール設計 により、独自エンジンの追加や外部ツール連携(Web検索・画像生成等)が容易
- プリミティブ(Primitive) と コントラクト(Contract) が主要概念
- プリミティブ :シンボル(Symbol)を用いた直感的な操作体系
- コントラクト :LLMの出力品質を保証する設計原則
プリミティブ(Primitive)の特徴
-
Symbol は 2種類 :構文的(Syntactic)・意味的(Semantic)
- 構文的 :通常のPython値として振る舞う(デフォルト)
- 意味的 :LLMエンジンと連携し、意味や文脈を理解
-
演算子オーバーロード により、==や&などPython演算子を意味的に拡張
-
.sem/.syn プロパティで 構文⇔意味 の切替が可能
-
ドット記法操作 (例:.map())実行時に自動で意味的モードへ
-
複雑なチェーン処理 も単一Symbolで柔軟に実現
- 例:
- S = Symbol("Cats are adorable", semantic=True)
- print("feline" in S) → True(意味的判定)
- S = Symbol(['apple', 'banana', 'cherry', 'cat', 'dog'])
- print(S.map('convert all fruits to vegetables')) → ['carrot', 'broccoli', 'spinach', 'cat', 'dog']
- 例:
-
主なプリミティブ・演算子一覧
- ==:等価性判定(構文的=文字列一致、意味的=概念的同一)
- +:加算・合成
- &:論理積・文脈マージ
- .choice():パターンマッチ
- .cluster():意味的クラスタリング(sklearn DBSCAN利用)
- .similarity():埋め込み類似度計算
- その他、多数の意味的ヘルパーメソッド
コントラクト(Contract)の仕組み
- Design by Contract 原則をLLM活用に導入
- デコレータ を使い、データモデルや検証制約を組み込む
- Pydantic互換 のデータモデルで構造化・バリデーション
- リメディ機能 (pre/post-remedy)で入力・出力の自動修正も可能
- エラー履歴蓄積・リトライ制御 など堅牢な運用設計
- コントラクト適用クラス (Agent等)は
- prompt(命令文)、pre/post(検証)、forward(出力)等の高レベル振る舞いを実装
- LLM出力が制約に違反した場合、自動的に修正またはフォールバック
インストールとセットアップ
-
pipでインストール
- 基本:
pip install symbolicai - オプション機能:
"symbolicai[wolframalpha]""symbolicai[whisper]""symbolicai[selenium]""symbolicai[serpapi]""symbolicai[pinecone]""symbolicai[all]"(全依存一括)
- 基本:
-
APIキー設定
- OpenAI, Anthropic, ローカルエンジン(llama.cpp/huggingface等)に対応
- OS・環境ごとに環境変数で設定(Linux/MacOS, Windows, Jupyter)
-
追加要件
- 音声認識:ffmpegインストール必須
- Webクローリング:Chrome + chromedriver-autoinstaller利用
構成管理(Configuration Management)
-
優先順位付き設定管理システム
- 3段階(カレントディレクトリ>Python環境>ホームディレクトリ)
- 各レベルに symai.config.json 等の設定ファイルを設置
symconfigコマンドで設定状況の確認・初期化
-
推奨運用
- デフォルト設定はグローバル(~/.symai/)
- プロジェクト固有は環境別ディレクトリ
- 開発・デバッグはカレントディレクトリ
-
設定例
- symai.config.jsonで各種エンジンAPIキー・モデル指定
- SUPPORT_COMMUNITYでデータ収集協力のON/OFF切替
- SYMAI_WARNINGS=0で警告非表示
テスト実行
- pytestによるローカルテスト
- 全テスト:
pytest tests - 必須テストのみ:
pytest -m mandatory
- 全テスト:
まとめ
- SymbolicAI は、PythonコードとLLMの意味的推論を融合するための 強力なフレームワーク
- プリミティブ と コントラクト により、 直感的な記述 と 品質保証 を両立
- 多様なエンジン ・ 柔軟な構成管理 ・ 自動修復機能 など、実運用に適した機能群
- APIキー設定や拡張依存の管理 もシンプルで、導入・運用が容易
- LLM活用の新たな設計パラダイム として、Pythonユーザーに強く推奨