Show HN: Mistral Codestral und GPT-4o zu Jupyter Notebook hinzugefügt
(github.com/pretzelai)- Pretzel ist ein Fork von Jupyter, der eine Notebook-Umgebung mit KI-Codegenerierung und -Bearbeitung, Inline-Tab-Vervollständigung, Sidebar-Chat und Fehlerbehebung ergänzt und so konzipiert ist, dass bestehende Jupyter-Konfigurationen, Tastaturbelegungen und Erweiterungen weiterhin leicht nutzbar sind
- Für den Einstieg reichen
pip install pretzelaiund anschließendpretzel lab; wer nichts installieren möchte, kann die kostenlos gehostete Version pretzelai.app verwenden - Ask AI in der Zelle,
Cmd+K/Ctrl+K, die AI Sidebar,@-Variablenreferenzen, Bearbeitung von Auswahlen und der Button zur Fehlerbehebung nutzen Notebook-Code und Sitzungsvariablen als KI-Kontext - Laut FAQ ist das Standardmodell GPT-4o, für Inline-Vervollständigung wird Mistral Codestral verwendet; außerdem lassen sich externe und lokale Modelle wie OpenAI, Anthropic/Claude, Ollama, Groq und Azure in den Einstellungen anbinden
- Es werden keine personenbezogenen Daten erfasst, aber Telemetrie für KI-Funktionen und Prompts können gesammelt werden; Code und Antworten werden nicht gespeichert, und neuer Code wird unter AGPLv3 veröffentlicht
Pretzels Ziel und Jupyter-Kompatibilität
- Pretzel ist ein Fork, der die Nutzung von Jupyter verbessern soll
- Es fügt Funktionen für KI-Codegenerierung und -Bearbeitung, Inline-Tab-Vervollständigung, Sidebar-Chat und Fehlerbehebung hinzu
- Beim Wechsel von Jupyter zu Pretzel funktionieren bestehende configs, Einstellungen, Tastaturbelegungen und Erweiterungen grundsätzlich weiter
- Das zentrale Ziel ist, Jupyter-Nutzern KI-Funktionen nahezu ohne Umstiegskosten zugänglich zu machen
Schnellstart und Installation
- Die Grundinstallation erfolgt mit
pip install pretzelai - Die Weboberfläche wird mit folgendem Befehl gestartet
pretzel lab
- Die kostenlos gehostete Version ist unter pretzelai.app verfügbar
- In einer conda-Umgebung sollte zuerst
conda install pipund danachpip install pretzelaiausgeführt werden - Wenn die Installation schwierig ist, kann die Ausführung in einem Docker-Container erfolgen
- Besonders unter Windows oder wenn eine lokale Installation blockiert ist, wird Docker empfohlen
- Der Container exponiert Port
8888und wird in der Formpretzel lab --ip=0.0.0.0gestartet - Falls Zugriff auf einen lokalen Ordner nötig ist, kann mit
-v $(pwd):/root/pretzeldas aktuelle Verzeichnis in den Container eingebunden werden - Für ein Update auf die neueste Version muss das Image mit
docker build --no-cache -t pretzel .neu gebaut werden
- Die Bleeding-Edge-Version kann mit dem Dockerfile des Repositories gebaut werden
Installationsfehler und Build-Tools
- Der Fehler
Failed to build installable wheels for some pyproject.toml based projects (pystemmer)bedeutet, dass die Installation der AbhängigkeitPyStemmerfehlgeschlagen ist - Eine häufige Ursache sind fehlende Build-Tools
- Je nach Betriebssystem sind unterschiedliche Maßnahmen nötig
- Windows: Microsoft Build Tools installieren
- Ubuntu und Debian-basierte Systeme:
sudo apt-get update && sudo apt-get install build-essential python3-dev - macOS:
brew install gcc, falls nötig zusätzlichxcode-select --install
- Nach der Installation der Build-Tools sollte
pip install pretzelaierneut ausgeführt werden
KI-Funktionen im Notebook
-
Inline-Tab-Vervollständigung
- Wenn man in einer Zelle mit dem Tippen beginnt, ist Inline-Tab-Vervollständigung verfügbar
- Sie wird nach 1 Sekunde Wartezeit ausgelöst; vor dem blauen Ask-AI-Button der Zelle erscheint dabei ein kleiner Spinner
- Der standardmäßige Pretzel AI Server verwendet für Inline-Vervollständigung Mistral Codestral
- Das Modell für Inline-Vervollständigung kann in den Pretzel AI Settings geändert werden
-
Codegenerierung und -bearbeitung
- In einer Zelle öffnet
Cmd+KoderCtrl+Kbzw. ein Klick auf Ask AI ein Eingabefeld für KI-Prompts - Bei Eingabe von
@erscheint ein Dropdown mit den Variablen der aktuellen Sitzung - Wenn
@variableim Prompt verwendet wird, wird der Wert dieser Variablen an die KI übergeben - Relevanter Code aus dem aktuellen Notebook wird automatisch in den KI-Kontext aufgenommen
- In Zellen mit vorhandenem Code bearbeitet der Prompt genau diesen Code
- Wird nur ein Teil des Codes markiert, wird auch nur dieser Teil bearbeitet
- Antworten können akzeptiert oder verworfen werden, und der Prompt kann bearbeitet und erneut gesendet werden
- Mit
↑und↓lässt sich durch die Prompt-Historie navigieren
- In einer Zelle öffnet
-
AI Sidebar
- Die AI Sidebar lässt sich mit
Ctrl+Cmd+BoderCtrl+Alt+Boder über das Pretzel-Symbol in der rechten Seitenleiste öffnen - Sie dient zum Stellen von Fragen, zum Generieren von Code und zum Durchsuchen vorhandenen Codes
- Die KI verwendet dabei immer den Code der aktiven Zelle als Kontext
- Wenn in der aktiven Zelle Code markiert ist, wird nur die Auswahl als Kontext verwendet
- Über die
@-Syntax lassen sich Variablen und DataFrames im Speicher referenzieren - Beispiele sind die Optimierung einer Funktion, das Finden von Code zum Entfernen von Ausreißern, das Erklären des aktuellen Zellcodes, das Erstellen eines age-Histogramms aus
@dfoder die Berechnung des durchschnittlichen Umsatzes nach Produkttyp im DataFramesales_data
- Die AI Sidebar lässt sich mit
-
Code mitten in bestehenden Code einfügen
- Den Cursor in eine leere Zeile oder auf eine bestehende Codezeile setzen und dann mit
Cmd+Kden KI-Prompt öffnen - Beginnt der Prompt mit
injectoderij, wird bestehender Code nicht bearbeitet, sondern nur neuer Code ergänzt - Der neue Code wird eine Zeile unterhalb der Cursorposition eingefügt
- Den Cursor in eine leere Zeile oder auf eine bestehende Codezeile setzen und dann mit
-
Fehlerbehebung
- Tritt ein Fehler auf, erscheint oben rechts der Button Fix Error with AI
- Mit einem Klick darauf kann eine Fehlerkorrektur durch die KI versucht werden
KI-Modelle und Einstellungen
- Pretzel funktioniert direkt ohne separate Konfiguration
- Code oder Daten, die an den standardmäßigen Pretzel AI Server gesendet werden, werden nicht gespeichert
- Für andere KI-Modelle lassen sich in den Einstellungen mehrere Anbieter und lokale Modelle anbinden
- OpenAI
- Anthropic/Claude
- Ollama
- Groq
- Azure
- Der Pfad in den Einstellungen ist im oberen Menü
Settings→Pretzel AI Settings - In den AI Settings können jeweils ein Modell für Chat und eines für Inline-Vervollständigung gewählt werden
- Für gute Leistung werden Modelle auf GPT-4-Niveau empfohlen
- GPT-4 Turbo
- GPT-4o
- Claude-3.5 Sonnet
- Claude-3 Opus
- Llama-3.1 405B
- Unter Configure AI Services werden KI-Dienste aktiviert oder deaktiviert und API-Schlüssel oder URLs eingetragen
- Azure und Ollama sind standardmäßig deaktiviert, können aber vom Nutzer aktiviert werden
- Änderungen müssen gespeichert werden; Pretzel prüft dabei, ob die Konfiguration korrekt ist
- Azure Enterprise OpenAI-Modelle wurden noch nicht getestet; Bugs können unter GitHub issues gemeldet werden
Modellverhalten laut FAQ
- Pretzel verwendet je nach Aufgabe mehrere KI-Modelle
- Das Standardmodell ist GPT-4o
- Es wird als guter Kompromiss zwischen Geschwindigkeit und Qualität bewertet
- Bei Verwendung eines eigenen API-Schlüssels kann es in den Pretzel Settings geändert werden
- Für Inline-Vervollständigung wird Mistral Codestral genutzt
- Es wird als gut geeignetes Modell für Code-Vervollständigung eingesetzt
- Es ist ein Modell mit 22B Parametern und bietet hohe Geschwindigkeit
- Wenn man einen eigenen API-Schlüssel nutzt, aber keinen Mistral-API-Schlüssel angibt, wird auch für Inline-Vervollständigung GPT-4o verwendet
- Unterstützung für lokale Modelle und Anthropic Claude befindet sich weiter in Erprobung, wobei Claude auf der Prioritätenliste weit oben steht
Roadmap
- Die Roadmap von Pretzel umfasst unter anderem folgende Funktionen
- Native KI-Funktionen für Codegenerierung und -verständnis ähnlich wie Cursor
- Echtzeit-Zusammenarbeit mit Pair Programming, Kommentaren und Versionsverlauf
- SQL-Unterstützung sowohl in Codezellen als auch in einer eigenständigen SQL-IDE
- Ein Builder für visuelle Analysen auf Basis von pretzelai_visual
- Ein VSCode-ähnliches Schreibgefühl mit Monaco
- Dashboards mit einem Klick aus Jupyter-Notebooks erzeugen und teilen
- Feature-Wünsche können über GitHub issues oder per E-Mail eingereicht werden
- Das Team besteht aus zwei Personen und möchte die Prioritäten der Roadmap anhand von Feedback festlegen
Datenschutz, Datenerfassung und Aufbewahrung
- Pretzel erfasst keine personenbezogenen Daten
- Nur für KI-Funktionen wird standardmäßig Telemetrie verwendet
- Ein Beispiel ist das Ereignis, dass jemand auf Ask AI geklickt hat
- Nutzer werden nur mit einer anonymen ID verknüpft
- Wenn Cookies erlaubt sind, hilft das dabei, dieselbe anonyme Person über mehrere Browser-Sitzungen hinweg wiederzuerkennen
- Wenn Cookies nicht erlaubt sind, wird beim Öffnen des Browsers jedes Mal ein neuer anonymer Nutzer erzeugt
- Prompts für KI-Funktionen werden erfasst, Antworten jedoch nicht
- Prompt-Telemetrie kann unter
Settings > Pretzel AI > Uncheck Prompt Telemetrydeaktiviert werden - Code wird unter keinen Umständen erfasst
- Auch wenn der Cloud-AI-Server von Pretzel für Vervollständigung genutzt wird, wird der Code nicht gespeichert
- Bei Nutzung der gehosteten Version pretzelai.app wird ein Nutzer auf Basis der E-Mail-Adresse angelegt
- Nutzer können sich anmelden und auf dem Hosting-Server gespeicherte Daten löschen
- Der Hosting-Server erstellt keine Backups oder Kopien
- Der Hosting-Server ist kostenlos, löscht aber Daten und Konten 30 Tage nach dem letzten Login
- Wer das Konto schneller löschen möchte, kann eine E-Mail an
founders@withpretzel.commit dem BetreffAccount Deletionsenden; dann erfolgt die Löschung sofort
Lizenz und Entscheidung für einen Jupyter-Fork
- Neuer Code von Pretzel steht unter der Lizenz AGPLv3
- Der Jupyter-Code steht unter der BSD-3-Lizenz
- AGPLv3 wurde gewählt, um zu verhindern, dass Dritte den Pretzel-Code übernehmen, eine gehostete Version verkaufen und nichts an die Community zurückgeben
- Wer Pretzel-Code übernimmt und etwa als SaaS verkauft, muss Änderungen ebenfalls unter AGPLv3 als Open Source veröffentlichen
- Wird das Tool nur intern im Unternehmen genutzt, verlangt die AGPL laut Angabe selbst bei Änderungen keine Offenlegung des Codes
- Der Grund für den Fork statt direkter Beiträge an Jupyter war, die Umstiegskosten möglichst nahe null zu halten
- Anfangs wollte das Team etwas völlig Neues bauen, kam nach Gesprächen mit Datenexperten aber zu dem Schluss, dass der Wechsel auf ein neues Tool schwierig ist
- Jupyter ist ein ausgereiftes Produkt, und das Pretzel-Team veröffentlicht Funktionen in hohem Tempo
- Als Nachteile des Forks nennt das Team den hohen Zeitaufwand für das Verständnis des Jupyter-Ökosystems, mehrerer Codebasen, komplexer Release-Prozesse und verschiedener APIs
Frühere Pretzel AI und Monetarisierungspläne
- Das frühere Pretzel AI, ein visuelles In-Browser-Tool zur Datenmanipulation, befindet sich im Ordner
pretzelai_visual - Weitere Informationen dazu stehen in PR #76
- Monetarisiert werden soll über den Verkauf einer gehosteten Enterprise-Version
- Diese gehostete Enterprise-Version kann unternehmensspezifische Funktionen enthalten, die Einzelanwender nicht benötigen
- Datenzugriffskontrolle
- Datenquellen-Konnektoren
- GitHub-Integration
- Gehostete und teilbare Dashboards
- Skalierbare On-Demand-Compute-Ressourcen für große Datenaufgaben
- Es wird ausdrücklich gesagt, dass die persönliche Pretzel-Version später nicht rückwirkend kostenpflichtig gemacht wird
1 Kommentare
Meinungen auf Hacker News
KI-integrierte Jupyter-Notebooks gibt es bereits ziemlich viele. Sie sind wenig oder gar nicht Open Source, wurden aber über mehr als ein Jahr hinweg iterativ verbessert und sind in mancher Hinsicht ausgereifter.
https://noteable.io/ war ziemlich ordentlich, ist aber nach einem Acqui-Hire verschwunden, und https://deepnote.com ist stark bei KI-Integration und Echtzeit-Kollaboration.
https://github.com/jupyterlab/jupyter-ai ist eine gute, von der Amazon-Seite entwickelte generative KI-Standard-Open-Source-Erweiterung für Jupyter, und auch JupyterLab selbst ist bei Echtzeit-Kollaboration inzwischen ziemlich ausgereift.
https://colab.google/ hat eine hervorragende KI-Integration, aber man kann nur von Google gehostete Modelle verwenden.
https://cocalc.com bietet eine breite KI-Integration über die wichtigsten gehosteten Modelle hinweg sowie Echtzeit-Kollaboration und ist größtenteils kostenlos oder nutzungsbasiert abgerechnet. Ich habe daran mitentwickelt.
VS Code hat, wie andere gesagt haben, ebenfalls hervorragende integrierte Jupyter-Notebooks – fehlt noch etwas?
https://deepnote.com ist leider Closed Source, lässt sich also nicht lokal ausführen oder anpassen, und man muss eine neue Oberfläche lernen und umsteigen.
https://github.com/jupyterlab/jupyter-ai habe ich auch im Artikel erwähnt, aber meiner Erfahrung nach liegen User Experience und Funktionsumfang deutlich hinter dem zurück, was wir bereits gebaut haben. Ein Vorteil ist allerdings, dass es mehr Modelle unterstützt und die Codebasis viel leichter zu ändern ist.
https://colab.google/ ist ähnlich wie Deepnote Closed Source, und für den Einsatz im Unternehmen scheint wegen Daten-Connectors und Support-Garantien die Enterprise-Version nötig zu sein; da es nur auf GCP läuft, kann das für AWS-zentrierte Organisationen ein K.-o.-Kriterium sein.
https://cocalc.com habe ich noch nicht ausprobiert, aber es sieht nach einem hervorragenden Projekt aus und ich werde es mir ansehen. Mein erster Eindruck ist, dass die Oberfläche sich ziemlich stark von Jupyter unterscheidet; ein großer Unterschied ist, dass unser Ziel war, dorthin zu gehen, wo die Nutzer bereits sind: zu Jupyter.
Wie an anderer Stelle gesagt, konzentrieren sich die Funktionen, die wir bauen, bei VSCode stärker auf Analyse-Workflows. VSCode hat zwar KI-Funktionen, aber wenn weitere Roadmap-Funktionen dazukommen, wird es ziemlich anders aussehen.
Die Jupyter-Unterstützung von VS Code und Cursor ist so gut, dass ich das für meinen Workflow deutlich besser finde als eine reine Lösung für Jupyter Notebooks.
https://github.com/marimo-team/marimo
Die Implementierung, die das Team und die Beitragenden gebaut haben, ist hervorragend. Einfach, aber effektiv, und mir gefällt auch, dass sie es Open Source gehalten haben – anders als andere Show-HN-Beiträge, die Open-Source-Arbeit nehmen, schließen, ein wenig verändern und dann behaupten, etwas Großartiges geschaffen zu haben.
Ich bin gespannt, ob sie künftig auch weitere Funktionen ausbauen. Funktionen wie Copilot und Chat sind gut, aber heutige Nutzer erwarten wohl, dass solche Funktionen in der IDE standardmäßig vorhanden sind oder als Erweiterung angeboten werden.
Wenn die andere Seite nicht ein sehr großes und bekanntes Unternehmen wäre, hätte man Unternehmensdaten wohl keiner Closed-Source-Jupyter-Alternative anvertraut.
Ich stimme zu, dass IDEs solche Funktionen bereitstellen sollten. Allerdings sind VSCode und PyCharm die einzigen IDEs, die Jupyter Notebooks unterstützen, und die meisten KI-Erweiterungen für VSCode sind nicht für die Arbeit mit Notebooks optimiert. Ein Freund sagt zum Beispiel, dass GitHub Copilot Schwierigkeiten mit Code-Vervollständigung über verschiedene Zellen hinweg hat.
Das ist erst der Anfang, und wir planen, mehr datenanalyse-spezifische Funktionen zu entwickeln, die es in keiner IDE gibt; daher sehe ich ausreichend Raum für solche Tools.
Ich bin Ramon, ein weiterer Mitgründer von Pretzel. Auf Grundlage des frühen Feedbacks arbeiten wir bereits daran, Unterstützung für lokale LLMs und Claude Sonnet 3.5 hinzuzufügen; wenn es Fragen gibt, beantworte ich sie gern.
LocalAI: https://github.com/mudler/LocalAI
Zum Beispiel bieten promptfoo und chainforge Workflows für mehrere LLMs an.
Promptfoo hat eine YAML-Konfiguration für Prompts und Provider-Einstellungen: https://www.promptfoo.dev/docs/configuration/guide/
Man sollte sich auch ansehen, was ein System-Prompt ist und wie System-Prompts eine Analyse verzerren.
/? "system prompt" https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
Github Copilot ist das nützlichste Tool, das ich seit Langem gefunden habe, und es ist wirklich schön, es in Jupyter Notebooks nutzen zu können. Darauf habe ich ziemlich lange gewartet — gute Arbeit.
Wir haben uns Zeit genommen, die Implementierung anhand der neovim-GH-Copilot-Erweiterung [1] und Zed [2] per Reverse Engineering nachzuvollziehen, aber am Ende war es zu instabil und umständlich.
Währenddessen haben wir auch festgestellt, dass Codestral im Gegensatz zu normalen LLMs eine Fill-in-the-Middle-Version hat, die ein besseres Verhältnis aus Geschwindigkeit und Qualität bietet. Deshalb haben wir uns für Codestral entschieden. Inspiriert wurden wir davon, dass continue.dev Codestral für Tab-Completion nutzt.
[1] https://github.com/github/copilot.vim
[2] https://zed.dev/blog/copilot
Ich frage mich, welche Einschränkungen dazu geführt haben, dass ihr einen Fork machen musstet, statt es als Erweiterung umzusetzen.
Anfangs wollten wir ein neues Tool von Grund auf bauen, aber weil es sehr schwierig ist, Leute zum Wechseln zu bewegen, mussten wir dorthin gehen, wo die Nutzer bereits sind: zu Jupyter.
Betrachtet man nur diese eine Funktion, hätte man sie, auch wenn es schwierig gewesen wäre, als Erweiterung bauen können; unsere ersten Experimente begannen ebenfalls als Erweiterung. Allerdings wäre es schwierig gewesen, einige zentrale Jupyter-Verhaltensweisen fein zu steuern, etwa wie jetzt versteckte Ordner anzulegen, um Dateien zu speichern. Trotzdem hätten wir vermutlich eine zu 95 % funktionierende Version von Pretzel als Jupyter-Erweiterung bauen können.
Der wichtigere Grund ist, dass wir künftig das Code-Ausführungsmodell komplett auf DAG-basiert umstellen wollen, um reproduzierbare Notebooks zu ermöglichen. Das wäre zum Beispiel ähnlich wie https://plutojl.org/.
Ebenso möchten wir CodeMirror vollständig entfernen und durch Monaco, die zentrale Editor-Engine von VSCode, ersetzen, um innerhalb von Jupyter ein IDE-ähnliches Erlebnis zu bieten; solche Dinge sind mit einer Erweiterung nicht möglich.
Ich verstehe nicht, was mit „GitHub Copilot wird in Jupyter noch nicht unterstützt“ gemeint ist. Ich nutze Copilot seit über einem Jahr in VS-Code-.ipynb-Dateien.
Beim Ausprobieren von Codestral konnten wir ähnlich gute, manchmal bessere Completions als bei Copilot bekommen — bei deutlich besserer Geschwindigkeit und niedrigeren Kosten.
Diese Editoren konzentrieren sich alle aufs Programmieren; gibt es Empfehlungen für allgemeinere Notizen?
Ich möchte sehr grobe Notizen ordnen, sie nach allgemeinen Templates neu formatieren, Änderungen gemäß Prompts anwenden und Fragen zu einer Sammlung von Notizen stellen.
Ich bin mir nicht sicher, warum das attraktiv sein soll. Wenn man wirklich AI-Integration braucht, kann man VSCode und Jupyter verwenden und bekommt Zugriff auf das gesamte Erweiterungs-Ökosystem. Die Idee ist nicht schlecht, aber ihr scheint ein klarer Zweck zu fehlen.
Die Arbeit ist praktisch eine Jupyter-Erweiterung (https://github.com/pretzelai/pretzelai/tree/main/packages/pr...); daher frage ich mich, warum ihr JupyterLab hart geforkt habt, statt sie wie die anderen Dinge unter https://github.com/jupyterlab-contrib als Erweiterung zu bauen.
Kurz gesagt: Die aktuelle Funktionalität hätte man wahrscheinlich auch als Erweiterung umsetzen können. Natürlich haben wir auch schon mehrere Änderungen am Kernverhalten von Jupyter vorgenommen.
Auf der Roadmap steht jedoch, das Modell der Code-Ausführung selbst deutlich umfassender zu verändern, und das ist mit einer Erweiterung nicht möglich.