オープンソースの式計算ライブラリ「 Exevalator(エグゼバレータ)」の最新版、Ver.2.4.0 をリリースしました!
Exevalator は、つい先日も Ver.2.3 へのメジャーアップデートを行ったばかりで、その際は Python で使用可能になりました:
今回の Ver.2.4 では、上記で追加された Python 移植版をベースに、新たに「MCP」というプロトコルをサポートする事で、AI用の計算ツールとしても活用できるようになりました!
今回はその詳細や、実際の使用例をご紹介します。
本来の Exevalator は、プログラム内に組み込んで、「文字列として与えられた計算式」の値を計算する機能を担うライブラリです。例えば、以下のような式の値を求められます:
こういった式が、プログラムの実行中に、ユーザー入力などによって(動的に)与えられる場合、それを計算するのは意外と難しい処理が必要です。
そこで Exevalator は、多種多様なプログラミング言語向けに、そういった処理をライブラリとして提供する事で、手軽に行えるようにしたものです。 現時点で Java, Rust, C++, C#, VB.NET, TypeScript, Python の7言語で利用可能で、今後もサポート言語が増えていく予定です。
そして今回は言語ではなく、AIとやり取りするためのプロトコルである「MCP」 を新たにサポートしました。
MCP は最近登場した新種のプロトコルなので、まだご存じでない方も多いと思います。
というか、そもそも一般には「プロトコルって何?」っていう感じかもしれませんね。そのあたりから少し補足しておきましょう。
プロトコルとは、ざっくり言うと、何らかのシステム同士が「やり取り」するための、あらかじめ決められた枠組み(ルールや前提など)の事です。
例えば一般論として、システム同士が情報をやり取りしたり、互いを制御したりする場合を考えると、以下のような事が言えますよね:
このような諸々の枠組みを取り決めたものを、プロトコルと呼びます。それに従って、システム同士はやり取りして、通信や連携などをしているわけです。
代表的な例としては、Webで情報を「送信する側」と「受信する側」がやり取りするためのプロトコルの一種である「TCP」や、その上に乗っかるプロトコルの「HTTP」などが非常に有名ですね。
いまこのページを読んでいる皆さんのPCやスマホにも、RINEARNのサイトを配信しているWebサーバーから、HTTP や TCP のルールに則ってページ内容の情報が送られています。
そういった共通化された枠組み(プロトコル)があるからこそ、皆さんのPCやスマホで、様々なWebサーバーとやり取りし、世界中のWebサイトを見れるわけです。
さて、ここからが本題です。
ここ数年でAIがめちゃくちゃ進化して、最近はついにAI自身がツール等を使い、自律的に作業をこなしてくれる ようになりつつありますよね。 いわゆる「AIエージェント」とか呼ばれているシステムです。
ラフに図にすると、以下みたいな雰囲気のシステムですね:
なんかSFみたいな世界観ですが、こういうシステムが最近一気に実用水準に入りつつあり、あちこちで流行し始めてます。いやAIの進化の波は本当に速いですね…
で、こういう場面では、「AIエージェント的なシステム」と、「AI用のツール」(とか情報提供システムとか色々)がやり取りをするわけです:
そう、ここで「やり取り」が発生するわけです。そういった「やり取り」を、AIにとって効率的かつ確実に行えるようにするためには、やはり共通化されたプロトコル的なものが欲しいところですよね。
その有力な選択肢の一つが、MCP (Model Contexit Protocol: モデル・コンテキスト・プロトコル) です。米国の Anthropic というAI企業が2024年に提唱したもので、登場したてホヤホヤのプロトコルですね。
さて、やや前置きの説明が長くなってしまいましたが、今回から Exevalator も、MCP による制御をサポートしました。
これにより、まさに先程の図の通り、Exevalator を AI 用の計算ツールとしても使えるようになります:
といっても、
という疑問も沸きますよね。
これは実際そうで、「AI に任意のスクリプトの実行を許せるような状況」であれば、わざわざ Exevalator を使う必要は全くないと言えます。
それじゃあ一体どういう場面で役立つの? というと、そう、逆に
です。
「任意のスクリプトの実行」って、AIがその気になれば何でもできてしまうので、例えば以下のようなケースなど、そういう権限を与えたくない or 与えられない場合が普通にあり得ます:
で、そういう場合に、
みたいなケースはあり得ます。そういった場合に Exevalator が有効です。
Exevalator だと、以下のような特徴があるので、安全に計算を行えます:
なので、仮に機密情報を読んだりシステムを壊そうと思っても、そもそもできないので安心、というわけです。
ただし、
という点には留意が必要です。従って、「flaot 以外の型の値やインスタンスを作って、それを引数として特定関数を呼び出す」みたいな事はできません。あくまでも数値の計算用です。
それでは最後に、実際に Exevalator をAIエージェントに接続して使ってみましょう!
ここからのサンプル実行例は、以下の環境を用いています:
上記の環境における、Exevalator の導入・接続方法については、公式 README で解説していますので、そちらをご参照ください。
まずは、適当な数学関数を使った式を計算してみてもらいましょう:
きちんと理論上正しい値を算出できていますね。
なお、 Exevalator のMCP版は、何の関数も登録されていない「 exevalator_mcp.py 」と、数学関数があらかじめ登録された「 exevalator_mcp_math_preset.py 」の2通りが存在します。 ここでは後者を接続して用いています。
どちらも、中身を編集して、使える関数を増やす事ができます。もちろん独自関数を作る事も可能です。
続いて、変数を宣言・読み書きして、ちょっとした手続き計算のようなものをやってもらいましょう:
こんな感じで、値をメモって後で使う、みたいな事ができます。
ちなみに上記を試してて思ったんですが、なんか「ザ・自然言語プログラミング」って感じですよね。こういう方向の、プログラミング入門用の言語処理系を作ってみるのも面白いかな?とか思いました。完全に余談ですが。
◇
さてさて、今回のお知らせは以上です。今回のアプデの実装は、個人的にかなりワクワクしました。どんどんSF的な未来が近づいていますよね!
Exevalator は今後も対応言語を増やしていく予定で、恐らく次のメジャーアプデの Ver.2.5 では、 Go を新規サポートしようかなと思っています。が、正式には一応まだ未定です。
Exevalator に関する情報は、今後もこのコーナーにてお知らせしていきます。お楽しみに!
参考文献, 謝辞
なお、今回の機能実装は、以下の書籍でMCPを学ぶ所からスタートしましたが、かなり実践的な良書で、この場をお借りして厚く御礼申し上げます:
既に Python で何らかのコマンドラインツールやライブラリ等を書かれている方なら、上記書籍などで学んでちょっと手を動かすだけで、すぐにAI用ツールに昇格させる事ができるのでは? と感じました。今後、色々なツールやライブラリがAI対応していくと面白そうですよね。一緒にAI時代の波を盛り上げましょう!