Jupyter AI:現役データサイエンティストによる正直な評価
私はJupyter AIを約6ヶ月間、Jupyter Labとクラシックノートブックの両方で使用してきました。これはオープンソースの拡張機能で、LLMを活用したアシスタンスをノートブック環境に直接もたらします。ツールの外部に別のチャットウィンドウやAPIキーの管理は不要で、セル内にすべてが収まります。以下に、実際の機能、優れている点、そして不足している点を説明します。
得意なこと
中核機能は%%aiマジックコマンドです。セルに%%ai <モデル> <プロンプト>と書くと、コード、テキスト、説明を生成します。例:
%%ai openai-chat:gpt-4
CSVを読み込み、'region'でグループ化し、月ごとの平均売上を計算するpandasスニペットを書いてください。
すると動作するコードブロックが出力されます。私はこれを定型コードに頻繁に使っています:データクリーニング手順、matplotlibでのプロット、乱雑な日時列の変換など。ChatGPTからコピペするより高速です。なぜなら、コンテキストがすでにあなたのノートブックであり、変数名やデータフレームの列を認識してくれるからです。
もう一つの強みはインラインコード説明です。セルをハイライトして%ai explainを実行すると、複雑なラムダやリスト内包表記の平易な英語での解説が得られます。これは新しいチームメンバーのオンボーディングやレガシーノートブックのレビューに最適です。
主要ワークフロー
- 迅速なプロトタイピング:"このデータにランダムフォレストをフィットさせ、特徴量重要度を表示"のような曖昧なプロンプトを書き、出力を微調整します。AIがハイパーパラメータを正しく設定することは稀ですが、骨組みを提供してくれます。
- エラーデバッグ:セルが例外をスローした場合、エラーを
%%aiセルに貼り付け、「何が問題か?」と尋ねます。多くの場合、不足しているインポートやデータ型の不一致を特定してくれます。 - ドキュメント生成:書いたばかりの関数のドキュメント文字列を生成するのに使います。まあまあの出来で、ないよりはマシですが、公開できる品質ではありません。
制限(正直な部分)
まず、コンテキスト長が問題です。Jupyter AIはノートブック全体(または少なくとも最後の数セル)をモデルに送信します。大きなデータフレームを含む200セルのノートブックでは、これがすぐにトークン制限を消費します。コンテキストウィンドウに達すると、モデルは幻覚を起こしたり、以前の指示を忘れたりし始めます。
次に、モデルの選択が非常に重要です。OpenAI、Anthropic、Cohere、およびOllamaを介したローカルモデルをサポートしています。オープンソースモデル(Llama 3 8Bなど)は、ドメイン固有のタスクで著しく劣ります——構文的には正しいが論理的に間違ったコードを生成します。GPT-4は堅牢ですが、トークンごとにコストがかかります。ローカルモデルは無料ですが、複雑なタスクには遅くて賢くありません。
第三に、データを理解しません。AIは列名とデータ型を見ますが、実際の値やドメインの意味論については理解していません。日時列に対して文字列比較を使用する「日付フィルター」を生成させたことがあります——技術的には正しいですが、エッジケースで失敗します。出力はすべて検証する必要があります。
第四に、リアルタイムコラボレーションがありません。ペアプログラミングの場合、AIはその特定のノートブックで入力している人にのみ応答します。Jupyterのリアルタイムコラボレーション機能とは統合されていません。
価格の現実
オープンソースなので、拡張機能自体は無料です。モデルAPI呼び出しの費用を支払います。OpenAIのGPT-4を使用する場合、典型的なセッション(おそらく50-100プロンプト)で約2~5ドルかかります。毎日大量に使用すると、積み重なります。Ollama経由のローカルモデルは無料ですが、適切なGPU(7Bモデルには少なくとも16GB VRAM)が必要です。私は簡単なタスクにはローカルでMistral 7Bを実行し、複雑なタスクにはGPT-4に切り替えています。
誰が使うべきか
- 大量の定型コードを書くデータサイエンティスト(読み込み、マージ、プロット)。反復タスクでキーストロークを30-40%節約できます。
- ライブコーディングセッションで素早く例を生成したい教育者。
- すでにLLM APIに支払いをしていて、毎日Jupyterを使っている人。
誰が避けるべきか
- 信頼性が高く決定論的なコードを必要とする本番MLエンジニア。AIは微妙なバグを導入します。
- インターネットが遅い人(すべてのプロンプトでAPIへのラウンドトリップが必要)。
- データプライバシーに厳しい要件があるユーザー(ローカルモデルを使用しない限り、プロンプト内容が外部APIに送信されます)。