Jupyter AI 入門実践ガイド

data-sciencebeginner4分で読める2026/6/4

Jupyter AI入門:実践ガイド

私は長年Jupyterノートブックを使ってきましたが、壁にぶつかったのは複雑なデータクリーニングスクリプトを書く必要があった時です。その週に同じ正規表現パターンを5回も書いていたことに気づきました。そこで、コード生成とチャットをノートブック環境に直接もたらす拡張機能、Jupyter AIを試してみることにしました。1週間の徹底的なテストの後、学んだことをお伝えします。壊れた部分とその修正方法も含めて。

セットアップ:実際に必要なもの

まず、基本を押さえましょう。必要なのはJupyterLab 3.5以上(私は3.6.1を使用)とPython 3.8以上です。インストールは簡単ですが、注意点があります。開始前にAIプロバイダーを決める必要があります。

ステップ1:Jupyter AIのインストール

pip install jupyter-ai

これでコアパッケージがインストールされます。ただし、モデルプロバイダーも必要です。私は2つをテストしました。

  • OpenAI(APIキーが必要、GPT-4およびGPT-3.5で動作)
  • Hugging Face(無料ですが、低速)

ステップ2:プロバイダーの設定

OpenAIの場合:

export OPENAI_API_KEY="your-key-here"

Hugging Face(無料オプション)の場合:

pip install jupyter-ai-huggingface
export HUGGINGFACEHUB_API_TOKEN="your-token"

警告: APIコールが失敗する原因のデバッグに30分費やしました。環境変数名にタイポがあったのです。HUGGINGFACEHUB_API_TOKEN('HUB'に注意)を再確認してください。

インターフェース:魔法を見つける場所

JupyterLabを再起動すると、左側のサイドバーに新しいAIアイコン(キラキラしたもの)が表示されます。クリックするとチャットパネルが表示されます。しかし、最初に混乱したのは、ただチャットを始められないことです。最初にモデルを選択する必要があります。

チャットパネルで:

  1. 歯車アイコン(設定)をクリック
  2. ドロップダウンからプロバイダーを選択(例:GPT-4の場合はopenai-chat
  3. モデルを設定(複雑なタスクにはgpt-4、簡単な作業にはgpt-3.5-turboを使用)

プロのヒント: 予算が限られている場合は、無料のHugging Faceのmicrosoft/DialoGPT-mediumを使用してください。ただし、応答時間は5〜10秒かかります。

最初の実際のテスト:データクリーニングスクリプトの自動化

50,000行の顧客データを含む乱雑なCSVファイルがありました。チャットパネルに入力した内容は次のとおりです。

'email'、'phone'、'age'のカラムを持つDataFrameをクリーニングするPython関数を書いてください。
メールが欠落している行を削除し、電話番号を(XXX) XXX-XXXXの形式にフォーマットし、
年齢を整数に変換してください。

Jupyter AIが約3秒でこのコードを生成しました。

def clean_customer_data(df):
    # メールが欠落している行を削除
    df = df.dropna(subset=['email'])
    
    # 電話番号をフォーマット
    import re
    def format_phone(phone):
        digits = re.sub(r'\D', '', str(phone))
        if len(digits) == 10:
            return f"({digits[:3]}) {digits[3:6]}-{digits[6:]}"
        return phone
    
    df['phone'] = df['phone'].apply(format_phone)
    
    # 年齢を整数に変換
    df['age'] = pd.to_numeric(df['age'], errors='coerce').astype('Int64')
    
    return df

感心した点: errors='coerce'を指定したpd.to_numericを使用していたことです。まさに私が書くであろうコードでした。また、NaN値を適切に処理するInt64(nullable整数)を使用していました。

壊れた点: 電話番号のフォーマットが国コード(+1)を処理していませんでした。修正を依頼したところ、20行の正規表現ソリューションを生成しましたが、やりすぎでした。結局、自分でよりシンプルなバージョンを書きました。

真の力:%%aiマジックコマンド

チャットも便利ですが、Jupyter AIの真価はマジックコマンドにあります。セル内で%%aiを使用すると、コードをインラインで生成できます。

例:可視化スクリプトの生成

新しいセルに次のように入力します。

%%ai openai-chat
dfというDataFrameから'sales'対'profit'の散布図を作成するmatplotlibコードを書いてください。
'region'カラムに色を使用してください。

AIがセル内に直接コードを生成します。

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
for region in df['region'].unique():
    subset = df[df['region'] == region]
    plt.scatter(subset['sales'], subset['profit'], label=region, alpha=0.6)

plt.xlabel('Sales')
plt.ylabel('Profit')
plt.title('Sales vs Profit by Region')
plt.legend()
plt.show()

重要なヒント: %%aiコマンドはセル全体の内容を置き換えます。既存のコードがある場合、上書きされます。この方法で50行の関数を失いました。%%aiを実行する前に、必ずセルの内容をコピーしてください。

発見した欠点

1週間の集中的な使用後、次の点に不満を感じました。

  1. コンテキストウィンドウが小さい - AIは5分前の会話を覚えていません。DataFrameの構造を数クエリごとに再説明する必要がありました。

  2. コード実行のフィードバックがない - AIはコードを実行して動作を確認しません。実際のDataFrameに存在しないカラムを参照する関数が生成されました。

  3. Hugging Faceモデルが遅い - 無料モデルは応答に10〜15秒かかります。OpenAIのGPT-4はほぼ瞬時です。

  4. セキュリティ上の懸念 - %%aiを使用すると、セル全体の内容(機密データを含む)がAIプロバイダーに送信されます。誤って顧客メールを含むDataFrameをOpenAIのサーバーに送信してしまいました。

実際に機能する実用的なワークフロー

試行錯誤の結果、推奨するワークフローは次のとおりです。

  1. コード生成には%%aiを使用し、チャットは使わない - チャットパネルも使えますが、マジックコマンドの方が高速で焦点が絞られています。

  2. 常にモデルを指定する - デフォルトに依存しないでください。複雑なタスクには%%ai openai-chat -m gpt-4を使用します。

  3. 生成されたコードは別のセルでテストする - AIの出力を盲目的に信頼しないでください。生成されたコードを新しいセルにコピーし、小さなサンプルでテストします。

  4. /fixコマンドを使用する - 生成されたコードにエラーがある場合、/fixの後にエラーメッセージを入力します。デバッグに驚くほど優れています。

  5. コンテキストを2〜3メッセージに制限する - 3回のやり取りを超えると、AIは幻覚を起こし始めます。長い会話の後、存在しないpandas関数を提案することがわかりました。

実世界の例:ETLパイプラインの構築

完全な例を説明します。ログファイル用のETLパイプラインを構築する必要がありました。

ステップ1:データの読み込み

%%ai openai-chat
'logs/'というディレクトリからすべてのCSVファイルを読み取り、
1つのDataFrameに結合し、ファイル名を含む'source_file'カラムを追加するpandasコードを書いてください。

ステップ2:データのクリーニング

%%ai openai-chat
'timestamp'、'level'、'message'、'user_id'のカラムを持つDataFrameから:
- 'timestamp'をdatetimeとして解析
- 'level'が'DEBUG'の行をフィルタリング
- 'message'の重複エントリを削除

ステップ3:サマリーの生成

%%ai openai-chat
'level'と'message'のカラムを持つDataFrameを受け取り、
各ログレベルのカウントと上位10件のメッセージを含む辞書を返す関数を書いてください。

各ステップで生成されたコードを手動で組み合わせました。AIは定型作業の入力に約2時間の節約になりました。

結論:使用すべきか?

Jupyter AIは次のような場合に最適です。

  • 定型コードの生成(データ読み込み、基本的なクリーニング)
  • matplotlib/seabornの可視化の作成
  • 複雑なpandas操作の説明

次のような場合には苦手です。

  • ドメイン固有のロジック(例:財務計算)
  • 過去のコンテキストを記憶する必要がある複数ステップのワークフロー
  • データベースやAPIと連携するコード

最大の推奨事項: 最終的な解決策ではなく、出発点として使用してください。生成されたコードは下書きのように扱い、入力の手間を省いてくれますが、本番データで実行する前に必ずレビューとテストを行ってください。

次のステップ

読むだけでなく、今すぐ試してみてください。Jupyterノートブックを開き、jupyter-aiをインストールして、次のコマンドを実行してください。

%%ai openai-chat
'customer_id'、'name'、'email'、'signup_date'、'plan_type'のカラムを持つ
モック顧客データの10行をランダムに生成してください。

次に、生成されたコードを実行して動作を確認してください。その力と限界の両方をすぐに理解できるでしょう。そして、必ず何か間違ったものが生成された場合(必ずそうなります)、/fixを使用してデバッグしてください。そこで本当の学びが得られます。

関連エージェント

H

Hugging Face

A platform for sharing, training, and deploying machine learning models and datasets.

続きを読む →