Show HN : ajout de Mistral Codestral et GPT-4o à Jupyter Notebook
(github.com/pretzelai)- Pretzel est un environnement de notebook issu d’un fork de Jupyter, auquel il ajoute la génération et l’édition de code par IA, la complétion inline par tabulation, un chat en barre latérale et la correction d’erreurs ; il est conçu pour réutiliser facilement les réglages, raccourcis clavier et extensions Jupyter existants
- Pour démarrer, il suffit d’exécuter
pip install pretzelaipuispretzel lab; si l’installation est contraignante, une version hébergée gratuite, pretzelai.app, est disponible - Les fonctions Ask AI dans les cellules,
Cmd+K/Ctrl+K, AI Sidebar, les références de variables avec@, l’édition de sélection et le bouton de correction d’erreur utilisent le code du notebook et les variables de session comme contexte pour l’IA - Le modèle par défaut, selon la FAQ, est GPT-4o ; la complétion inline utilise Mistral Codestral, et des modèles externes ou locaux comme OpenAI, Anthropic/Claude, Ollama, Groq et Azure peuvent aussi être connectés dans les réglages
- Aucune information personnelle n’est collectée, mais la télémétrie des fonctions IA et les prompts peuvent l’être ; le code et les réponses ne sont pas stockés, et le nouveau code est distribué sous licence AGPLv3
Objectif de Pretzel et compatibilité avec Jupyter
- Pretzel est un fork destiné à améliorer l’expérience d’utilisation de Jupyter
- Il ajoute la génération et l’édition de code par IA, la complétion inline par tabulation, un chat en barre latérale et la correction d’erreurs
- En passant de Jupyter à Pretzel, les config, réglages, raccourcis clavier et extensions existants fonctionnent en principe tels quels
- L’objectif central est de permettre aux utilisateurs de Jupyter d’utiliser des fonctions IA avec un coût de transition quasi nul
Démarrage rapide et installation
- L’installation de base se fait avec
pip install pretzelai - L’interface web se lance avec la commande suivante
pretzel lab
- La version hébergée gratuite est disponible sur pretzelai.app
- Dans un environnement conda, exécutez d’abord
conda install pip, puis utilisezpip install pretzelai - Si l’installation est difficile, il est possible de l’exécuter dans un conteneur Docker
- Docker est recommandé lorsque l’installation locale est bloquée, par exemple sous Windows
- Le conteneur expose le port
8888et s’exécute sous une forme commepretzel lab --ip=0.0.0.0 - Si l’accès à un dossier local est nécessaire, mappez le répertoire courant dans le conteneur avec
-v $(pwd):/root/pretzel - Pour mettre à jour vers la dernière version, reconstruisez l’image avec
docker build --no-cache -t pretzel .
- La version bleeding edge peut être construite avec le Dockerfile du dépôt
Erreurs d’installation et outils de build
- L’erreur
Failed to build installable wheels for some pyproject.toml based projects (pystemmer)signifie que l’installation de la dépendancePyStemmera échoué - La cause fréquente est l’absence des outils de build nécessaires
- Les actions varient selon le système d’exploitation
- Windows : installer Microsoft Build Tools
- Ubuntu et dérivés de Debian :
sudo apt-get update && sudo apt-get install build-essential python3-dev - macOS :
brew install gcc, puisxcode-select --installsi nécessaire
- Après l’installation des outils de build, exécutez de nouveau
pip install pretzelai
Fonctions IA dans le notebook
-
Complétion inline par tabulation
- Lorsque vous commencez à taper dans une cellule, vous pouvez obtenir une complétion inline par tabulation
- La complétion se déclenche après une attente d’une seconde, et un petit spinner s’affiche avant le bouton bleu Ask AI de la cellule
- Le Pretzel AI Server par défaut utilise Mistral Codestral pour la complétion inline
- Le modèle de complétion inline peut être modifié dans Pretzel AI Settings
-
Génération et édition de code
- Dans une cellule, appuyez sur
Cmd+KouCtrl+K, ou cliquez sur Ask AI, pour ouvrir le champ de prompt IA - En saisissant
@, une liste déroulante des variables de la session actuelle apparaît - Si vous ajoutez
@variabledans le prompt, la valeur de cette variable est transmise à l’IA - Le code pertinent du notebook courant est automatiquement inclus dans le contexte de l’IA
- Dans une cellule contenant déjà du code, le prompt modifie ce code
- Si vous sélectionnez une partie du code, seul le code sélectionné est ciblé pour l’édition
- La réponse peut être acceptée ou refusée, et le prompt peut être modifié puis soumis de nouveau
↑et↓permettent de parcourir l’historique des prompts
- Dans une cellule, appuyez sur
-
AI Sidebar
Ctrl+Cmd+BouCtrl+Alt+B, ou l’icône Pretzel dans la barre latérale droite, permet d’ouvrir AI Sidebar- Elle permet de poser des questions, de générer du code et de rechercher dans le code existant
- L’IA utilise toujours le code de la cellule active comme contexte
- Si du code est sélectionné dans la cellule active, seul le code sélectionné est inclus dans le contexte
- La syntaxe
@permet de référencer des variables et des dataframes en mémoire - Les exemples de tâches incluent l’optimisation d’une fonction, la recherche de code de suppression des valeurs aberrantes, l’explication du code de la cellule courante, la génération d’un histogramme de l’âge pour
@df, et le calcul du chiffre d’affaires moyen par type de produit dans le dataframesales_data
-
Insertion de code au milieu du code existant
- Placez le curseur sur une ligne vide ou sur une ligne de code existante, puis ouvrez le prompt IA avec
Cmd+K - Si le prompt commence par
injectouij, seul du nouveau code est ajouté, sans modifier le code existant - Le nouveau code est ajouté une ligne sous la position du curseur
- Placez le curseur sur une ligne vide ou sur une ligne de code existante, puis ouvrez le prompt IA avec
-
Correction d’erreurs
- Lorsqu’une erreur survient, un bouton Fix Error with AI apparaît en haut à droite
- Cliquez sur ce bouton pour tenter de corriger l’erreur avec l’IA
Modèles IA et réglages
- Pretzel fonctionne immédiatement, sans configuration séparée
- Le code ou les données envoyés au Pretzel AI Server par défaut ne sont pas stockés
- Pour utiliser d’autres modèles IA, plusieurs fournisseurs et modèles locaux peuvent être connectés dans les réglages
- OpenAI
- Anthropic/Claude
- Ollama
- Groq
- Azure
- Le chemin des réglages est
Settings→Pretzel AI Settingsdans le menu supérieur - Dans AI Settings, il est possible de choisir séparément le modèle de chat et le modèle de complétion inline
- Pour les performances, l’utilisation de modèles de niveau GPT-4 est recommandée
- GPT-4 Turbo
- GPT-4o
- Claude-3.5 Sonnet
- Claude-3 Opus
- Llama-3.1 405B
- Configure AI Services permet d’activer ou de désactiver des services IA, ainsi que de saisir des clés API ou des URL
- Azure et Ollama sont désactivés par défaut, mais l’utilisateur peut les activer
- Après modification, les réglages doivent être enregistrés, et Pretzel vérifie qu’ils sont corrects
- Les modèles Azure Enterprise OpenAI n’ont pas encore été testés, et les bugs peuvent être signalés dans les GitHub issues
Comportement des modèles résumé dans la FAQ
- Pretzel utilise plusieurs modèles IA selon la tâche
- Le modèle par défaut est GPT-4o
- Il est jugé offrir un bon équilibre entre vitesse et qualité
- Si vous utilisez votre propre clé API, il peut être modifié dans Pretzel Settings
- La complétion inline utilise Mistral Codestral
- Il est utilisé comme modèle adapté à la complétion de code
- C’est un modèle de 22B paramètres qui offre de bonnes performances en vitesse
- Si vous utilisez votre propre clé API sans fournir de clé API Mistral, GPT-4o est aussi utilisé pour la complétion inline
- La prise en charge des modèles locaux et d’Anthropic Claude reste expérimentale, Claude figurant en haut de la liste des priorités
Roadmap
- La roadmap de Pretzel inclut les fonctions suivantes
- Des capacités natives de génération et de compréhension de code par IA, similaires à Cursor
- La collaboration en temps réel avec pair programming, commentaires et historique des versions
- La prise en charge de SQL à la fois dans les cellules de code et dans un IDE SQL indépendant
- Un builder d’analyse visuelle basé sur pretzelai_visual
- Une expérience d’écriture de code de type VSCode avec Monaco
- La création et le partage de dashboards en un clic depuis des notebooks Jupyter
- Les demandes de fonctionnalités peuvent être envoyées via les GitHub issues ou par e-mail
- L’équipe compte deux personnes et souhaite prioriser la roadmap à partir des retours
Confidentialité, collecte et conservation des données
- Pretzel ne collecte pas d’informations personnelles
- Une télémétrie de base n’est utilisée que pour les fonctions IA
- Un exemple est l’événement indiquant que quelqu’un a cliqué sur Ask AI
- L’utilisateur n’est associé qu’à un ID anonyme
- Si les cookies sont acceptés, cela aide à reconnaître le même utilisateur anonyme sur plusieurs sessions de navigateur
- Si les cookies ne sont pas acceptés, un nouvel utilisateur anonyme est créé à chaque ouverture du navigateur
- Les prompts des fonctions IA sont collectés, mais les réponses ne le sont pas
- La télémétrie des prompts peut être désactivée dans
Settings > Pretzel AI > Uncheck Prompt Telemetry - Le code n’est collecté dans aucun cas
- Même lorsque le serveur IA cloud de Pretzel est utilisé pour la complétion, le code n’est pas stocké
- Si vous utilisez la version hébergée pretzelai.app, un utilisateur est créé à partir de l’adresse e-mail
- L’utilisateur peut se connecter et supprimer les données stockées sur le serveur hébergé
- Le serveur hébergé ne crée ni sauvegarde ni copie
- Le serveur hébergé est gratuit, mais les données et le compte sont supprimés 30 jours après la dernière connexion
- Pour supprimer le compte plus rapidement, envoyez un e-mail à
founders@withpretzel.comavec l’objetAccount Deletion, et il sera supprimé immédiatement
Licence et décision de forker Jupyter
- Le nouveau code de Pretzel utilise la licence AGPLv3
- Le code de Jupyter est sous licence BSD-3
- AGPLv3 a été choisi pour éviter qu’un tiers prenne le code de Pretzel, vende une version hébergée et ne contribue rien en retour à la communauté
- Pour prendre le code de Pretzel et le vendre sous forme de SaaS ou autre, les modifications doivent aussi être publiées en open source sous AGPLv3
- Il est indiqué que, lorsqu’il est utilisé uniquement comme outil interne dans une entreprise, l’AGPL n’exige pas la publication du code, même en cas de modifications
- La raison du fork, plutôt qu’une contribution directe à Jupyter, est de rendre le coût de transition presque nul
- L’équipe voulait d’abord créer un nouvel outil, mais après avoir parlé avec des professionnels de la data, elle a conclu qu’il était difficile de migrer vers un nouvel outil
- Jupyter est un produit mature, et l’équipe Pretzel publie des fonctionnalités rapidement
- Parmi les inconvénients du fork, l’équipe indique avoir consacré beaucoup de temps à comprendre l’écosystème Jupyter, plusieurs bases de code, des procédures de release complexes et diverses API
Ancien Pretzel AI et projet de monétisation
- L’ancien Pretzel AI, un outil visuel de manipulation de données dans le navigateur, se trouve dans le dossier
pretzelai_visual - Les informations associées se trouvent dans la PR #76
- La monétisation est prévue via la vente d’une version hébergée pour les entreprises
- La version hébergée pour les entreprises pourra inclure des fonctionnalités propres aux entreprises, inutiles pour les utilisateurs individuels
- Contrôle d’accès aux données
- Connecteurs de sources de données
- Intégration GitHub
- Dashboards hébergeables et partageables
- Compute extensible à la demande pour le traitement de grands volumes de données
- L’équipe indique qu’elle ne rendra pas payante rétroactivement la version individuelle de Pretzel
1 commentaires
Avis de Hacker News
Les notebooks Jupyter avec intégration IA sont déjà assez nombreux. Ils sont peu, voire pas, open source, mais ils ont été améliorés de façon itérative pendant plus d’un an et sont, à certains égards, plus mûrs
https://noteable.io/ était plutôt correct, mais a disparu après un acqui-hire, et https://deepnote.com est solide en intégration IA et en collaboration en temps réel
https://github.com/jupyterlab/jupyter-ai est une bonne extension open source standard d’IA générative pour Jupyter, créée du côté d’Amazon, et JupyterLab lui-même dispose désormais d’une collaboration en temps réel assez mature
https://colab.google/ propose une excellente intégration IA, mais on ne peut utiliser que les modèles hébergés par Google
https://cocalc.com propose une large intégration IA prenant en charge l’ensemble des principaux modèles hébergés, ainsi que la collaboration en temps réel, et c’est en grande partie gratuit ou facturé à l’usage. J’en suis co-développeur
VS Code aussi, comme d’autres l’ont dit, propose d’excellents notebooks Jupyter intégrés ; y a-t-il d’autres oublis ?
https://deepnote.com est malheureusement closed source, donc impossible de l’exécuter localement ou de le modifier, et il faut apprendre une nouvelle interface et migrer
https://github.com/jupyterlab/jupyter-ai est mentionné dans l’article, mais d’après mon expérience son expérience utilisateur et ses fonctionnalités sont très en retrait par rapport à ce que nous avons déjà construit. En revanche, il a l’avantage de prendre en charge davantage de modèles et d’avoir une base de code bien plus facile à modifier
https://colab.google/ est également closed source, comme Deepnote, et pour l’utiliser en entreprise il semble falloir la version enterprise, à cause des connecteurs de données et des garanties de support ; or elle ne fonctionne que sur GCP, ce qui peut être rédhibitoire pour les organisations centrées sur AWS
Je n’ai pas encore essayé https://cocalc.com, mais cela semble être un excellent projet et je compte y jeter un œil. À première vue, l’interface paraît assez différente de Jupyter, et une grande différence est que notre objectif était d’aller là où les utilisateurs se trouvent déjà : dans Jupyter
VSCode, comme je l’ai dit ailleurs, les fonctionnalités que nous développons sont davantage centrées sur les workflows d’analyse. VSCode dispose aussi de fonctionnalités d’IA, mais avec l’ajout des fonctions prévues dans la roadmap, cela aura une apparence assez différente
Le support de Jupyter dans VS Code et Cursor est tellement bon que, pour mon workflow, cette approche me convient bien mieux qu’une solution dédiée aux Jupyter Notebook
https://github.com/marimo-team/marimo
L’implémentation réalisée par l’équipe et les contributeurs est excellente. Elle est simple mais efficace, et j’apprécie aussi qu’elle soit restée open source, contrairement à d’autres Show HN qui récupèrent du travail open source, le referment, le modifient un peu, puis prétendent avoir créé quelque chose d’exceptionnel
Je me demande si d’autres fonctionnalités continueront à être développées à l’avenir. Des fonctions comme Copilot ou le chat sont appréciables, mais aujourd’hui les utilisateurs s’attendent probablement à ce que ce genre de choses soit intégré de base à l’IDE ou disponible sous forme d’extension
À moins d’avoir affaire à une très grande entreprise très connue, je n’aurais pas confié des données d’entreprise à une alternative closed source à Jupyter
Je suis d’accord sur le fait que les IDE devraient proposer ce type de fonctionnalités. Cela dit, les seuls IDE qui prennent en charge Jupyter Notebook sont VSCode et PyCharm, et la plupart des extensions IA pour VSCode ne sont pas optimisées pour le travail dans des notebooks. Par exemple, d’après un ami, GitHub Copilot a du mal avec la complétion de code qui traverse plusieurs cellules
Ce n’est que le début, et nous prévoyons de créer beaucoup plus de fonctionnalités spécialisées pour l’analyse de données qui n’existent dans aucun IDE ; je pense donc qu’il y a largement de la place pour ce type d’outil
Je suis Ramon, l’autre cofondateur de Pretzel. Sur la base des premiers retours, nous travaillons déjà à ajouter la prise en charge des LLM locaux et de Claude Sonnet 3.5, et je répondrai volontiers aux questions.
LocalAI : https://github.com/mudler/LocalAI
Par exemple, promptfoo et chainforge proposent des flux de travail multi-LLM.
Promptfoo dispose d’une configuration YAML pour les prompts et les paramètres des fournisseurs : https://www.promptfoo.dev/docs/configuration/guide/
Il faudrait aussi regarder ce qu’est le prompt système, et comment il biaise l’analyse.
/? "system prompt" https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
Github Copilot est l’outil le plus utile que j’aie trouvé depuis longtemps, et c’est vraiment génial de pouvoir l’utiliser dans Jupyter Notebooks. C’est une fonctionnalité que j’attendais depuis un bon moment, excellent travail.
Nous avons passé du temps à rétro-ingénierer l’implémentation en nous appuyant sur l’extension GH Copilot pour neovim [1] et sur Zed [2], mais au final c’était trop instable et fastidieux.
Entre-temps, nous avons aussi constaté que Codestral, contrairement aux LLM généralistes, dispose d’une version fill-in-the-middle (complétion au milieu), ce qui offre un meilleur équilibre entre vitesse et qualité ; nous avons donc décidé d’utiliser Codestral. Nous nous sommes inspirés du fait que continue.dev utilise Codestral pour la complétion par tabulation.
[1] https://github.com/github/copilot.vim
[2] https://zed.dev/blog/copilot
Je me demande quelles contraintes vous ont obligés à faire un fork plutôt qu’une extension.
Au départ, nous pensions créer un nouvel outil de zéro, mais comme il est très difficile de faire migrer les gens, nous devions aller là où les utilisateurs se trouvent déjà : Jupyter.
Si l’on ne considère que cette fonctionnalité, il aurait été possible, quoique difficile, d’en faire une extension, et nos premières expérimentations ont d’ailleurs commencé par une extension. Cela dit, il aurait été difficile de contrôler finement certains comportements centraux de Jupyter, comme la création d’un dossier caché pour stocker des fichiers, comme nous le faisons actuellement. Malgré tout, je pense qu’il aurait été possible de créer sous forme d’extension Jupyter une version de Pretzel fonctionnelle à 95 %.
La raison la plus importante est qu’à l’avenir, nous voulons changer complètement le modèle d’exécution du code pour le rendre basé sur un DAG, afin de créer des notebooks reproductibles. Par exemple, quelque chose de similaire à https://plutojl.org/.
De même, nous voulons supprimer complètement CodeMirror et le remplacer par Monaco, le moteur d’éditeur au cœur de VSCode, afin d’offrir une expérience de type IDE dans Jupyter ; ce genre de chose est impossible avec une extension.
Je ne comprends pas ce que signifie « GitHub Copilot n’est pas encore pris en charge dans Jupyter ». J’utilise Copilot dans des fichiers .ipynb VS Code depuis plus d’un an.
En essayant Codestral, nous avons obtenu des complétions aussi bonnes que celles de Copilot, parfois meilleures, avec une vitesse et un coût nettement plus avantageux.
Tous ces éditeurs sont centrés sur la programmation ; auriez-vous une recommandation pour une prise de notes plus générale ?
J’aimerais pouvoir organiser des notes très brutes, les reformater selon des modèles génériques, appliquer des modifications à partir de prompts, et poser des questions sur un ensemble de notes.
Je ne vois pas bien en quoi c’est séduisant. Si l’on a vraiment besoin d’une intégration IA, on peut utiliser VSCode et Jupyter et accéder à tout l’écosystème d’extensions. L’idée n’est pas mauvaise, mais elle semble manquer d’objectif.
Le travail réalisé est en fait une extension Jupyter (https://github.com/pretzelai/pretzelai/tree/main/packages/pr...) ; je me demande donc pourquoi ils ont fait un hard fork de JupyterLab plutôt que d’en faire une extension, comme les autres projets sur https://github.com/jupyterlab-contrib
En bref, les fonctionnalités actuelles auraient probablement pu être implémentées sous forme d’extension. Bien sûr, nous avons déjà aussi apporté plusieurs changements au comportement central de Jupyter.
Mais notre roadmap prévoit des changements bien plus importants du modèle d’exécution du code lui-même, et cela n’est pas possible avec une extension.