Wolfram Notebook Assistant + LLM Kitを使ってみた

◼
  • 執筆者:技術部・降旗
  • ◼
  • 使用したバージョン:Mathematica14.3
  • はじめに
    2023年6月、Mathematicaにチャットノートブック( https://reference.wolfram.com/language/tutorial/ChatNotebooks.html.ja )の機能が組み込まれました。
    以前のバージョンでもWolfram|Alphaの機能を使うことにより自然言語での入力は可能でしたが、チャットノートブックの登場で、より一般的な自然言語での指示から、欲しいコードを入手することができるようになりました。
    そして2024年12月にはWolfram Notebook Assistantがリリースされました。
    今回は改めてこのNotebook Assistant を使ってみたいと思います。
    ※Notebook Assistantを使用するには別途サブスクリプションの購入とv14.1以上のMathematicaが必要です。Mathematica の最新版のトライアルを申し込むと、無料で15日間お試しいただくこともできます。
    Notebook Assistantの使い方
    Notebook Assistantを使うには、ツールバーの下記赤枠内にあるボタンをクリックします。
    そうするとノートブックアシスタントのウィンドウが新たに開かれます。
    このウィンドウにChatGPTなどと同じようにやりたいことや知りたいことなどを入力します。
    例えば作業用のノートブックに犬の画像が読み込まれている状態で、「この画像から犬の位置を求めたい」と入力して実行してみます。
    そうすると、それを行うためのコードが返されます。
    Notebook Assistantでは、Wolfram Function Repository (https://resources.wolframcloud.com/FunctionRepository) の関数についても学習が行われており、ここにある関数が使用されることもあります。
    ただし、これはLLMによる回答のため、毎回同じ結果が返されるとは限りません。
    また、今回は日本語で回答が返されましたが、英語で返される場合もあります。
    その時には次のチャットに「日本語で回答して」と入力すると、改めて日本語の回答を返してくれます。
    コードの下の「挿入して評価」をクリックすると、作業用ノートブックにコードが挿入され実行されます。
    チャットノートブックやチャットセルを使った方法では、ノートブック内にLLMに質問した内容や試行錯誤している様子も残ります。そのため、発表用や配布用の資料にするには、最終的にノートブック内を整理する必要がありました。しかし、ノートブックアシスタントを使用すると実行に必要なコードだけをノートブックに残せるため、その後のまとめが楽になります。
    実行例
    実行例をいくつか紹介します。
    ただし、必ずしもこの結果と同じ結果が返されるとは限りませんのでご注意ください。

    グラフの作成

    Mathematicaを使い慣れている方にとっては簡単にできると思いますが、初めてMathematicaを使い始めたばかりの方はグラフの作成にも手間取るかと思います。
    そんな時でもNotebook Assistantを使うことでグラフを効率的に作成できます。
    例えばシンプルに「sin関数をプロットして」と実行してみます。
    挿入して評価してみると、次のようにSinカーブを描画できます。
    In[]:=
    Plot[Sin[x],{x,-2*Pi,2*Pi},AxesLabel->{"x","sin(x)"}]
    Out[]=
    続いて線の色を赤色に変更し、さらに図に枠を付けてみます。
    図のサイズの指定も問題なく行えます。
    レポートなどに作成した図を使用するためにファイルに出力したいという場合も、Notebook Assistantにそのように伝えればExport関数を使用することを教えてくれます。

    富士山の地形をプロット

    Wolfram JapanのYouTubeチャンネルでは、2025年6月にNotebook Assistantの紹介動画が公開されています。(最新Wolframテクノロジーのご紹介 - Wolfram Notebook Assistant + LLM Kit : https://www.youtube.com/watch?v=JJuIpyHnMlk )
    その中でエベレストを中心とした地形を3Dで表示する例がありましたので、これを富士山に変えて実行してみます。
    それらしいコードが返されたので実行してみます。
    GeoElevationデータがエラーを出力し、GeoPlot3Dという関数が定義されていないことが分かりました。
    これをノートブックアシスタントに指摘してみます。
    新しいコードが生成されましたので、実行してみます。
    残念ながら、これもエラーを返しました。
    この後も同じようにエラーを指摘しましたが、正しく評価できるコードは返されませんでした。
    ただし、GeoElevationDataを使えば良いということは分かりましたので、ドキュメントを確認してみると、次の例が見つかりました。
    GeoRangeを使えばデータが取得できそうですので、コードを修正して実行してみます。
    今度はEntity[“Mountain”,”MountFuji”]の箇所が認識されていないようです。
    自由形式入力(挿入>インライン自由入力 もしくは ctrlキーを押しながら=を入力)を使って「富士山」と入力してみると、”MountFuji”ではなく、”FujiSan”と入力することが正しいことが分かりました。
    こちらも修正して実行してみます。
    今度はエラーが生じることなく実行することができました。
    LLMのため、実行できないコードが生成されることもありますが、コードを作成するための出発点として十分使えるのではないかと思います。
    なお、現在のバージョンではGeoElevationDataを使ってデータを取得すると、geos_c.dllに関するエラーが表示される場合があります。
    このエラーは今後のバージョンのリリースで修正される見込みとのことです。
    エラーが発生した場合には、カーネルもしくはMathematicaを再起動することでエラーが表示されなくなります。

    人口分布

    こちらも動画に含まれていた例ですが、「アジアの各国を総人口に応じた色で塗り分けた地図を表示して」として実行してみます。
    返されたコードを実行すると、問題なく実行できることが確認できます。
    せっかくですので日本の都道府県ごとの人口の分布も描画できないか試してみましたが、残念ながらヒントになるような結果は返ってきませんでした。
    各都道府県の人口はEntityValueを使って取得することが可能ですので、これらの情報も与えて実行してみましたが、コードの生成までには至りませんでした。
    この入力例では良い結果を得ることができませんでしたが、入力を改善することで結果が返される場合もあります。
    「各都道府県の総人口に応じた色で塗分けた日本地図を表示して」と入力を変更してみます。
    エラーが返されるので、エラー内容を指摘してみます。
    こちらでは求めていた図を作成することができました。
    良い結果が得られない場合、まずは入力を変えてみることをお勧めします。

    ばねの運動の可視化

    ばねの運動をアニメーションにできるかについて尋ねてみます。
    運動方程式を解くことができ、時間の変化に伴うおもりの位置の変化を確認できました。
    ただし、実際の動きが分かりづらいため、もう一度可視化してと実行してみます。
    なぜ円が表示されているのだろうといった疑問は浮かびますが、おもりの動きをアニメーションにすることができました。
    円の部分については自分で好みの形に変更するか、あるいはさらにNotebook Assistantに詳細な指示を加えることで、より分かりやすいアニメーションが作成できるのではないかと思います。
    おわりに
    今回はNotebook Assistantを触ってみました。
    Mathematica初心者の方にもおすすめできますし、使い慣れている方にとってもコードのプロトタイプの作成に使ったり、今まで知らなかった関数を探すために使うなど、様々な用途が考えられます。
    もし興味があればトライアルをお試しください。