Show HN: Jupyter NotebookにMistral CodestralとGPT-4oを追加
(github.com/pretzelai)- PretzelはJupyterをフォークし、AIコード生成・編集、インラインのタブ補完、サイドバーチャット、エラー修正を加えたノートブック環境で、既存のJupyter設定・キーバインド・拡張をそのまま使いやすいよう設計されている
- 開始は
pip install pretzelaiの後にpretzel labを実行するだけで十分で、インストールが負担なら無料ホスティング版のpretzelai.appを利用できる - セル内のAsk AI、
Cmd+K/Ctrl+K、AI Sidebar、@変数参照、選択範囲編集、エラー修正ボタンが、ノートブックコードとセッション変数をAIのコンテキストとして活用する - デフォルトモデルはFAQ基準でGPT-4o、インライン補完はMistral Codestralで、OpenAI、Anthropic/Claude、Ollama、Groq、Azureのような外部・ローカルモデルも設定から接続できる
- 個人情報は収集しないが、AI機能のテレメトリとプロンプトは収集される場合があり、コードと応答は保存せず、新しいコードはAGPLv3で配布される
Pretzelの目的とJupyter互換性
- PretzelはJupyterの利用体験を改善するためのフォーク
- AIコード生成・編集、インラインのタブ補完、サイドバーチャット、エラー修正機能を追加
- JupyterからPretzelへ移っても、既存のconfig、設定、キーバインド、拡張は基本的に動作する
- 中核目標は、Jupyterユーザーが移行コストをほとんど感じずにAI機能を使えるようにすること
クイックスタートとインストール
- 基本インストールは
pip install pretzelaiで行う - Webインターフェースは次のコマンドで起動する
pretzel lab
- 無料ホスティング版はpretzelai.appで利用できる
- conda環境では、まず
conda install pipを実行してからpip install pretzelaiを使う - インストールが難しい場合はDockerコンテナで実行できる
- Windowsなどでローカルインストールが難しいときはDockerの利用を案内
- コンテナは
8888ポートを公開し、pretzel lab --ip=0.0.0.0の形で実行する - ローカルフォルダへのアクセスが必要なら
-v $(pwd):/root/pretzelで現在のディレクトリをコンテナにマッピングする - 最新版へ更新するには
docker build --no-cache -t pretzel .でイメージを再ビルドする
- Bleeding edge版はリポジトリのDockerfileを使ってビルドできる
インストールエラーとビルドツール
Failed to build installable wheels for some pyproject.toml based projects (pystemmer)エラーは、PyStemmer依存関係のインストール失敗を意味する- よくある原因は必要なビルドツールがないこと
- OSごとに対処が分かれる
- Windows: Microsoft Build Toolsをインストール
- UbuntuおよびDebian系:
sudo apt-get update && sudo apt-get install build-essential python3-dev - macOS:
brew install gcc、必要ならxcode-select --install
- ビルドツールを入れた後、
pip install pretzelaiを再実行する
ノートブック内のAI機能
-
インラインのタブ補完
- セルで入力を始めるとインラインのタブ補完を受けられる
- 補完は1秒待機後にトリガーされ、セルの青いAsk AIボタンの前に小さなスピナーが表示される
- デフォルトのPretzel AI Serverはインライン補完にMistral Codestralを使用する
- インライン補完モデルはPretzel AI Settingsで変更できる
-
コード生成と編集
- セルで
Cmd+KまたはCtrl+Kを押すかAsk AIをクリックすると、AIプロンプト入力ボックスが開く @を入力すると現在のセッションの変数一覧ドロップダウンが表示される- プロンプトに
@variableを入れると、その変数の値がAIに渡される - 現在のノートブックの関連コードが自動的にAIコンテキストに含まれる
- 既存コードがあるセルでは、プロンプトがそのコードを編集する
- コードの一部を選択すると、選択したコードだけが編集対象になる
- 応答は承認・拒否でき、プロンプトを修正して再送信できる
↑と↓でプロンプト履歴を巡回できる
- セルで
-
AI Sidebar
Ctrl+Cmd+BまたはCtrl+Alt+B、あるいは右サイドバーのPretzelアイコンからAI Sidebarを開ける- 質問、コード生成、既存コードの検索を行う
- AIは常にアクティブセルのコードをコンテキストとして使う
- アクティブセルでコードを選択すると、選択したコードだけがコンテキストに入る
@構文でメモリ上の変数やデータフレームを参照できる- 例として、関数の効率化、外れ値除去コードの検索、現在セルのコード説明、
@dfのageヒストグラム生成、sales_dataデータフレームの製品タイプ別平均売上計算などが含まれる
-
既存コードの途中へのコード挿入
- カーソルを空行または既存コード行に置いて
Cmd+KでAIプロンプトを開く - プロンプトを
injectまたはijで始めると、既存コードを編集せず新しいコードだけを追加する - 新しいコードはカーソル位置の1行下に追加される
- カーソルを空行または既存コード行に置いて
-
エラー修正
- エラーが発生すると右上にFix Error with AIボタンが表示される
- ボタンをクリックしてAIでエラー修正を試せる
AIモデルと設定
- Pretzelは追加設定なしですぐに動作する
- デフォルトのPretzel AI Serverへ送られたコードやデータは保存しない
- 別のAIモデルを使うには、設定で複数ベンダーやローカルモデルを接続できる
- OpenAI
- Anthropic/Claude
- Ollama
- Groq
- Azure
- 設定パスは上部メニューの
Settings→Pretzel AI Settings - AI Settingsではチャット用モデルとインライン補完用モデルをそれぞれ選べる
- 性能のためGPT-4級モデルの利用を推奨
- GPT-4 Turbo
- GPT-4o
- Claude-3.5 Sonnet
- Claude-3 Opus
- Llama-3.1 405B
- Configure AI ServicesではAIサービスの有効化・無効化、APIキーまたはURL入力を行う
- AzureとOllamaはデフォルトで無効だが、ユーザーが有効化できる
- 設定変更後は保存が必要で、Pretzelは設定が正しいかを検証する
- Azure Enterprise OpenAIモデルはまだテストされておらず、バグはGitHub issuesに報告できる
FAQにまとめられたモデル動作
- Pretzelは作業に応じて複数のAIモデルを使う
- デフォルトモデルはGPT-4o
- 速度と品質のバランスが良いと評価されている
- 自前のAPIキーを使う場合はPretzel Settingsで変更できる
- インライン補完はMistral Codestralを使用する
- コード補完に適したモデルとして使われる
- 22Bパラメータモデルで、高速な性能を提供する
- 自前のAPIキーを使っていてMistral APIキーを提供しない場合、インライン補完にもGPT-4oを使う
- ローカルモデル対応とAnthropic Claude対応は引き続き実験中で、Claudeが優先リストの上位にある
ロードマップ
- Pretzelのロードマップには次の機能が含まれる
- Cursorに似たネイティブAIコード生成・理解機能
- ペアプログラミング、コメント、バージョン履歴を含むリアルタイム共同作業
- コードセルと独立SQL IDEの両方でのSQL対応
- pretzelai_visualベースの視覚的分析ビルダー
- Monacoを使ったVSCodeのようなコーディング体験
- Jupyterノートブックからダッシュボードを1クリックで生成・共有する機能
- 機能要望はGitHub issuesまたはメールで受け付けている
- チームは2人で、フィードバックをもとにロードマップの優先順位を決めたいとしている
個人情報、データ収集、保管
- Pretzelは個人情報を収集しない
- AI機能についてのみデフォルトのテレメトリを使う
- 例として、誰かがAsk AIをクリックしたというイベントがある
- ユーザーは匿名IDとのみ紐づけられる
- Cookieを許可すると、複数ブラウザセッションでも同じ匿名ユーザーとして認識しやすくなる
- Cookieを許可しない場合、ブラウザを開くたびに新しい匿名ユーザーとして扱われる
- AI機能のプロンプトは収集するが、応答は収集しない
- プロンプトのテレメトリは
Settings > Pretzel AI > Uncheck Prompt Telemetryで無効化できる - コードはいかなる場合も収集しない
- PretzelのクラウドAIサーバーを補完に使ってもコードは保存しない
- ホスティング版のpretzelai.appを使うと、メールアドレスベースのユーザーが作成される
- ユーザーはログインしてホスティングサーバーに保存したデータを削除できる
- ホスティングサーバーはバックアップやコピーを作成しない
- ホスティングサーバーは無料だが、最後のログインから30日が過ぎるとデータとアカウントを削除する
- より早くアカウントを削除したい場合は、件名を
Account Deletionとしてfounders@withpretzel.comへ送れば即時削除する
ライセンスとJupyterフォークの判断
- Pretzelの新しいコードはAGPLv3ライセンスを採用
- JupyterコードはBSD-3ライセンス
- AGPLv3は、第三者がPretzelコードを持ち出してホスティング版を販売しながらコミュニティへ還元しない状況を防ぐために選ばれた
- Pretzelコードを持ち出してSaaSなどとして販売するなら、変更点もAGPLv3でオープンソース化する必要がある
- 会社内部でツールとしてのみ使う場合は、修正があってもAGPLがコード公開を要求しないと案内している
- Jupyterに直接貢献せずフォークした理由は、移行コストをほぼ0に近づけるため
- 当初は新規に作りたかったが、データ専門家たちと話した結果、新しいツールへの移行は難しいと判断した
- Jupyterは成熟した製品であり、Pretzelチームは速いペースで機能をリリースしている
- フォークの欠点として、Jupyterエコシステム、複数コードベース、複雑なリリース手順、多様なAPIを理解するのにかなり時間がかかったと述べている
以前のPretzel AIと収益化計画
- 以前のPretzel AIだった視覚的なインブラウザデータ操作ツールは
pretzelai_visualフォルダにある - 関連情報はPR #76にある
- 収益化は企業向けホスティング版の販売で行う計画
- 企業向けホスティング版には、個人ユーザーには不要な企業特化機能が含まれる可能性がある
- データアクセス制御
- データソースコネクタ
- GitHub統合
- ホスティング・共有可能なダッシュボード
- 大規模データ作業向けのスケーラブルなオンデマンドコンピュート
- 個人向けPretzel版を後からさかのぼって有料化することはないとしている
1件のコメント
Hacker News のコメント
AI 統合 Jupyter Notebookはすでにかなり多い。オープンソース性が低い、またはないものの、1年以上反復改善されてきたため、ある面ではより成熟している
https://noteable.io/ はかなり良かったが、アクハイア(acqui-hire)後に消えてしまい、https://deepnote.com は AI 統合とリアルタイム共同編集が強い
https://github.com/jupyterlab/jupyter-ai は Amazon 側が作った Jupyter 向け生成 AI の標準的なオープンソース拡張として良く、JupyterLab 自体も今ではリアルタイム共同編集がかなり成熟している
https://colab.google/ は AI 統合が優れているが、Google ホスティングのモデルしか使えない
https://cocalc.com は主要なホスティングモデル全般をサポートする広範な AI 統合とリアルタイム共同編集があり、ほとんどが無料または従量課金だ。私は共同開発者の一人
VS Code も他の人が言っているように内蔵 Jupyter Notebook が優秀だが、ほかに抜けているものはあるだろうか?
https://deepnote.com は残念ながらクローズドソースなのでローカル実行や修正ができず、新しいインターフェースを覚えて移行する必要がある
https://github.com/jupyterlab/jupyter-ai は記事でも触れたが、私の経験ではユーザー体験と機能が、私たちがすでに作ったものよりかなり遅れている。ただし、より多くのモデルをサポートしていて、コードベースがはるかに修正しやすい点は利点だ
https://colab.google/ も Deepnote と同様にクローズドソースで、会社で使うにはデータコネクタとサポート保証のためにエンタープライズ版が必要に見えるが、GCP 上でしか動かないので AWS 中心の組織には致命的になり得る
https://cocalc.com はまだ使ったことがないが、素晴らしいプロジェクトに見えるので確認するつもりだ。第一印象では Jupyter とはかなり違うインターフェースに見え、私たちはユーザーがすでにいる場所である Jupyter に向かうことを目標にしていた点が大きな違いだ
VSCode については他のところでも述べたように、私たちが作っている機能は分析ワークフローにより焦点を当てている。VSCode にも AI 機能はあるが、ロードマップ上の機能がさらに加われば、かなり違う姿になるはずだ
VS Code と Cursor の Jupyter サポートはとても良いので、Jupyter Notebook 専用ソリューションよりも、自分のワークフローにはこちらのほうがずっと良いと感じている
https://github.com/marimo-team/marimo
チームとコントリビューターたちが作った実装は素晴らしい。シンプルだが効果的で、オープンソースの成果を持ってきて閉じてしまい、少し変えてすごいものを作ったと主張する他の Show HN と違い、オープンソースのまま維持している点も良い
今後ほかの機能も継続的に拡張していくのか気になる。Copilot やチャットのような機能は良いが、最近のユーザーはこうした機能が IDE に標準搭載されているか、拡張として提供されることを期待しそうだ
相手が非常に大きく有名な会社でない限り、会社のデータをクローズドソースの Jupyter 代替に預けることはなかっただろう
IDE がこうした機能を提供すべきだという点には同意する。ただし Jupyter Notebook をサポートする IDE は VSCode と PyCharm だけで、VSCode 向け AI 拡張の多くは Notebook 作業に最適化されていない。例えば友人によると、GitHub Copilot は異なるセルをまたいだコード補完に苦労するという
これは始まりにすぎず、どの IDE にもないデータ分析特化機能をさらに多く作る予定なので、こうしたツールが入る余地は十分にあると思う
Pretzelのもう一人の共同創業者、Ramonです。初期のフィードバックをもとに、すでにローカルLLMとClaude Sonnet 3.5のサポート追加に取り組んでいます。質問があれば答えます
LocalAI: https://github.com/mudler/LocalAI
例えばpromptfooとchainforgeは、複数LLMのワークフローを提供しています
Promptfooには、プロンプトとプロバイダー設定のためのYAML構成があります: https://www.promptfoo.dev/docs/configuration/guide/
システムプロンプトとは何か、またシステムプロンプトが分析をどのように偏らせるかも見る必要があります
/? "system prompt" https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
Github Copilotは久しぶりに見つけた最も便利なツールで、これをJupyter Notebooksで使えるなんて本当に良いです。かなり長く待っていた機能なので、素晴らしい仕事です
neovim GH Copilot拡張 [1] とZed [2] を参考に実装をリバースエンジニアリングするのに時間を使いましたが、結局あまりに不安定で面倒でした
その間に、Codestralは一般的なLLMと違って**fill-in-the-middle(中間補完)**版を持っており、速度と品質のバランスがより良いことも分かりました。それでCodestralを使うことにしました。continue.devがタブ補完にCodestralを使っていることに着想を得ました
[1] https://github.com/github/copilot.vim
[2] https://zed.dev/blog/copilot
拡張として作らずにフォークしなければならなかった制約が何だったのか気になります
当初はゼロから新しいツールを作るつもりでしたが、人々に移行してもらうのは非常に難しいため、ユーザーがすでにいる場所であるJupyterに行く必要がありました
この機能単体で見れば、難しくても拡張として作ることはできましたし、初期の実験も拡張から始めました。ただ、今のように隠しフォルダを作ってファイルを保存するなど、一部のJupyterの中核的な動作を細かく制御するのは難しかったでしょう。それでもPretzelの95%動作するバージョンは、Jupyter拡張として作れたと思います
より大きな理由は、今後コード実行モデルをDAGベースに完全に変えて、再現可能なノートブックを作りたいからです。例えば https://plutojl.org/ のようなものです
同様に、CodeMirrorを完全に取り除き、VSCodeの中核エディタエンジンであるMonacoに置き換えて、Jupyter内でIDEのような体験を提供したいのですが、こうしたことは拡張では不可能です
「GitHub CopilotはまだJupyterでサポートされていない」とはどういう意味なのか分かりません。1年以上、VS Codeの.ipynbファイルでCopilotを使っています
Codestralを試したところ、Copilotと同じくらい良い補完、ときにはより良い補完を、はるかに良い速度とコストで得られました
こういうエディタはどれもプログラミングに焦点を当てていますが、もっと一般的なノート作成用のおすすめはありますか?
とてもラフなメモを整理し、一般的なテンプレートに合わせて再フォーマットし、プロンプトに従って変更を適用し、メモの集合について質問する、といった作業をしたいです
これがなぜ魅力的なのかよく分かりません。本当にAI統合が必要なら、VSCodeとJupyterを使えば拡張エコシステム全体にアクセスできます。アイデアは悪くありませんが、目的が不足しているように見えます
成果物は実質的に Jupyter 拡張(https://github.com/pretzelai/pretzelai/tree/main/packages/pr...)なのに、なぜ JupyterLab をハードフォークせず、https://github.com/jupyterlab-contrib にある他のもののように拡張として作らなかったのか気になる
短く言うと、今の機能は拡張として実装することもできたはずです。もちろん、Jupyter の中核的な動作にもすでにいくつか変更を加えています
しかしロードマップには、コード実行モデル自体をはるかに大きく変える作業が含まれており、それは拡張では不可能です