Jupyter AI

2025年7月22日

はじめに

JupyterLab で生成 AI を使う Jupyter AI について。

環境

  • Ubuntu 22.04 LTS
  • Python 3.11.13
  • uv 使用
  • JupyterLab 4.4.5
  • Ollama セットアップ済み

セットアップ

ここ に従う。

$ uv pip install "jupyter-ai[all]"

JupyterLab を起動。

$ jupyter lab

左に Jupyter AI Chat というアイコンが出ている。それを選んで、[Start Here] をクリック。"Completion model" で "Ollama :: *" を選択。"Local model ID" で "devstral" などのモデル名を入力する。[Save Changes]。チャットに戻って適当に話しかけて、応答が返ってくれば OK。

使い方

チャット

ふつうにチャットとして使える。

セルや選択範囲の質問

メッセージの送信ボタンの横を押すと、"Send message with selection" とあるので、これでセルの内容を質問できる。

セルの内容

s = 0
for i in range(11):
    s += i
print(s)

質問

これは何をしている?

回答

このコードは、0から10までの整数の合計を計算して表示するものです。以下に各行の説明を行います:...

コードの置き換えもできる。

質問

0から10までの偶数の和に書き換えて

回答

このコードを0から10までの偶数の和を計算するように修正したものを示します。以下がその例です:...

ここで、コードの左下のボタンに "Replace Selection" というのがあるので、これを押すとコードが置き換えられる。ただ、コードが正しいとは限らないので、"Insert blow active cell" で新たにセルを追加したほうがよいかもしれない。

修正

/fix でセルを指定して送信すると、エラーを分析してくれる。

セル

s = 0
for i in range(11)
    s += i
print(s)

実行結果

  Cell In[1], line 2
    for i in range(11)
                      ^
SyntaxError: expected ':'

質問

/fix

s = 0
for i in range(11)
    s += i
print(s)

回答

Sure! The error you're encountering is because the for loop statement is missing a colon (:) at the end. Let's fix that in your code.

Here's the corrected version of your notebook cell:

s = 0
for i in range(11):  # Added colon here
    s += i
print(s)

ノートブックの生成

/generate でノートブックを生成できる。

質問

/generate マンデルブロ集合をmatplotlibで描画する例を作って

実行したらエラーが出た。

/fix で修正を提示してもらう。

自分で修正して再実行。

学習

埋め込みモデルが必要。

$ ollama pull kun432/cl-nagoya-ruri-large

設定の "Embedding model" で "Ollama :: *"、"kun432/cl-nagoya-ruri-large" と設定する。

/lean コマンドでディレクトリを指定する。

質問

/lean docs/

学習内容を忘れたかったら、/learn -d とする。

参考

質問

/ask で学習した内容について質問できる。

※以下の例では、OpenFOAM のマニュアルを学習させている。

質問

/ask OpenFOAMのfvSchemesの書式を教えて

回答

fvSchemesディクショナリーは、OpenFOAMで使用される有限体積法(Finite Volume Method)において、数値スキームを指定するためのファイルです。以下は、fvSchemesファイルの基本的な書式と構造についての説明です。...

マジックコマンド

準備

%load_ext jupyter_ai

指示

%%ai ollama:devstral
Write some Python code that prints "hello world" to the console.

結果

print("hello world")

数式もきれいに書いてくれる。

指示

%%ai ollama:devstral
What is the 2d Laplace equation and when is it used? Use LaTeX for equations delimited by `$`.