Show HN: Jupyter Notebook में Mistral Codestral और GPT-4o जोड़े गए
(github.com/pretzelai)- Pretzel Jupyter का एक fork है, जो AI code generation/editing, inline tab completion, sidebar chat और error fixing जोड़ता है। इसे इस तरह design किया गया है कि मौजूदा Jupyter config, settings, keybindings और extensions आसानी से वैसे ही इस्तेमाल किए जा सकें
- शुरू करने के लिए
pip install pretzelaiके बादpretzel labचलाना काफी है। अगर installation मुश्किल लगे, तो मुफ्त hosted version pretzelai.app इस्तेमाल किया जा सकता है - cell के अंदर Ask AI,
Cmd+K/Ctrl+K, AI Sidebar,@variable references, selected-region editing और error-fix button, notebook code और session variables को AI context के रूप में इस्तेमाल करते हैं - FAQ के अनुसार default model GPT-4o है, inline completion Mistral Codestral से होती है, और OpenAI, Anthropic/Claude, Ollama, Groq, Azure जैसे external/local models भी settings से connect किए जा सकते हैं
- व्यक्तिगत जानकारी collect नहीं की जाती, लेकिन AI feature telemetry और prompts collect किए जा सकते हैं। code और responses store नहीं किए जाते, और नया code AGPLv3 के तहत release होता है
Pretzel का लक्ष्य और Jupyter compatibility
- Pretzel Jupyter के user experience को बेहतर बनाने के लिए बनाया गया fork है
- इसमें AI code generation/editing, inline tab completion, sidebar chat और error fixing features जोड़े गए हैं
- Jupyter से Pretzel पर आने के बाद भी मौजूदा config, settings, keybindings और extensions आम तौर पर काम करते हैं
- मुख्य लक्ष्य यह है कि Jupyter users लगभग बिना switching cost महसूस किए AI features इस्तेमाल कर सकें
Quick start और installation
- basic installation
pip install pretzelaiसे किया जाता है - web interface इस command से चलाया जाता है
pretzel lab
- मुफ्त hosted version pretzelai.app पर उपलब्ध है
- conda environment में पहले
conda install pipचलाएँ, फिरpip install pretzelaiइस्तेमाल करें - अगर installation मुश्किल हो, तो Docker container से चला सकते हैं
- Windows आदि में local installation blocked हो तो Docker इस्तेमाल करने की सलाह दी जाती है
- container
8888port expose करता है औरpretzel lab --ip=0.0.0.0के रूप में चलता है - अगर local folder access चाहिए, तो
-v $(pwd):/root/pretzelसे current directory को container में map करें - latest version में update करने के लिए
docker build --no-cache -t pretzel .से image फिर से build करें
- Bleeding edge version repository के Dockerfile का उपयोग करके build किया जा सकता है
Installation errors और build tools
Failed to build installable wheels for some pyproject.toml based projects (pystemmer)error का मतलबPyStemmerdependency install होने में failure है- आम वजह जरूरी build tools का न होना है
- operating system के हिसाब से उपाय अलग हैं
- Windows: Microsoft Build Tools install करें
- Ubuntu और Debian-based systems:
sudo apt-get update && sudo apt-get install build-essential python3-dev - macOS:
brew install gcc, जरूरत हो तोxcode-select --install
- build tools install करने के बाद
pip install pretzelaiफिर से चलाएँ
Notebook के अंदर AI features
-
Inline tab completion
- cell में typing शुरू करने पर inline tab completion मिल सकती है
- completion 1 second wait के बाद trigger होती है, और cell के blue Ask AI button से पहले छोटा spinner दिखता है
- default Pretzel AI Server inline completion के लिए Mistral Codestral इस्तेमाल करता है
- inline completion model Pretzel AI Settings में बदला जा सकता है
-
Code generation और editing
- cell में
Cmd+KयाCtrl+Kदबाने या Ask AI क्लिक करने पर AI prompt input box खुलता है @type करने पर current session के variables की dropdown list दिखाई देती है- prompt में
@variableडालने पर उस variable की value AI को भेजी जाती है - current notebook का relevant code अपने-आप AI context में शामिल हो जाता है
- जिस cell में existing code है, वहाँ prompt उस code को edit करता है
- code का कोई हिस्सा select करने पर सिर्फ selected code edit target बनता है
- response accept या reject किया जा सकता है, और prompt edit करके फिर submit किया जा सकता है
↑और↓से prompt history में cycle कर सकते हैं
- cell में
-
AI Sidebar
Ctrl+Cmd+BयाCtrl+Alt+B, या right sidebar में Pretzel icon से AI Sidebar खोली जा सकती है- यह questions, code generation और existing code search करता है
- AI हमेशा active cell के code को context के रूप में इस्तेमाल करता है
- active cell में code select करने पर सिर्फ selected code context में जाता है
@syntax से memory में मौजूद variables और dataframes को reference किया जा सकता है- example tasks में function efficiency सुधारना, outliers remove करने वाला code खोजना, current cell code समझाना,
@dfका age histogram बनाना, औरsales_datadataframe में product type के अनुसार average sales calculate करना शामिल है
-
Existing code के बीच में code insert करना
- cursor को empty line या existing code line पर रखकर
Cmd+Kसे AI prompt खोलें - prompt को
injectयाijसे शुरू करने पर existing code edit किए बिना सिर्फ नया code जोड़ा जाता है - नया code cursor position से एक line नीचे जोड़ा जाता है
- cursor को empty line या existing code line पर रखकर
-
Error fixing
- error आने पर top right में Fix Error with AI button दिखाई देता है
- button click करके AI से error fix करने की कोशिश की जा सकती है
AI models और settings
- Pretzel बिना अलग settings के तुरंत काम करता है
- default Pretzel AI Server को भेजे गए code या data को store नहीं किया जाता
- दूसरे AI models इस्तेमाल करने के लिए settings में कई vendors और local models connect किए जा सकते हैं
- OpenAI
- Anthropic/Claude
- Ollama
- Groq
- Azure
- settings path top menu में
Settings→Pretzel AI Settingsहै - AI Settings में chat के लिए model और inline completion के लिए model अलग-अलग select किए जा सकते हैं
- performance के लिए GPT-4-class models इस्तेमाल करने की सलाह दी जाती है
- GPT-4 Turbo
- GPT-4o
- Claude-3.5 Sonnet
- Claude-3 Opus
- Llama-3.1 405B
- Configure AI Services में AI services enable/disable करना, API key या URL enter करना संभाला जाता है
- Azure और Ollama default रूप से disabled हैं, लेकिन user उन्हें enable कर सकता है
- settings बदलने के बाद save करना जरूरी है और Pretzel settings की correctness validate करता है
- Azure Enterprise OpenAI model अभी test नहीं हुआ है, और bugs GitHub issues में report किए जा सकते हैं
FAQ में summarized model behavior
- Pretzel task के अनुसार कई AI models इस्तेमाल करता है
- default model GPT-4o है
- इसे speed और quality के अच्छे balance वाला माना गया है
- अपनी API key इस्तेमाल करते समय Pretzel Settings में बदला जा सकता है
- inline completion Mistral Codestral इस्तेमाल करती है
- इसे code completion के लिए उपयुक्त model के रूप में इस्तेमाल किया जाता है
- यह 22B-parameter model है और fast performance देता है
- अगर अपनी API key इस्तेमाल करते हुए Mistral API key नहीं दी जाती, तो inline completion के लिए भी GPT-4o इस्तेमाल होता है
- local model support और Anthropic Claude support पर experiments जारी हैं, और Claude priority list में सबसे ऊपर है
Roadmap
- Pretzel के roadmap में ये features शामिल हैं
- Cursor जैसी native AI code generation/understanding capabilities
- pair programming, comments और version history सहित real-time collaboration
- code cells और independent SQL IDE, दोनों में SQL support
- pretzelai_visual पर आधारित visual analysis builder
- Monaco का उपयोग करके VSCode जैसा code-writing experience
- Jupyter notebooks से dashboards को 1-click में create और share करने की capability
- feature requests GitHub issues या email से लिए जा सकते हैं
- team में दो लोग हैं और वे feedback के आधार पर roadmap priorities तय करना चाहते हैं
Privacy, data collection और storage
- Pretzel personal information collect नहीं करता
- सिर्फ AI features के लिए basic telemetry इस्तेमाल होती है
- उदाहरण के तौर पर, किसी ने Ask AI click किया—ऐसा event
- user सिर्फ anonymous ID से जुड़ा होता है
- cookies allow करने पर कई browser sessions में same anonymous user के रूप में पहचानने में मदद मिलती है
- cookies allow न करने पर हर बार browser खोलने पर नया anonymous user माना जाता है
- AI feature prompts collect किए जाते हैं, लेकिन responses collect नहीं किए जाते
- prompt telemetry
Settings > Pretzel AI > Uncheck Prompt Telemetryसे बंद की जा सकती है - code किसी भी स्थिति में collect नहीं किया जाता
- completion के लिए Pretzel के cloud AI server का इस्तेमाल करने पर भी code store नहीं किया जाता
- hosted version pretzelai.app इस्तेमाल करने पर email address-based user बनाया जाता है
- user login करके hosted server पर stored data delete कर सकता है
- hosted server backups या copies नहीं बनाता
- hosted server free है, लेकिन last login के 30 दिन बाद data और account delete कर देता है
- account जल्दी delete करवाना हो तो
founders@withpretzel.comपर subjectAccount Deletionके साथ email भेजने पर तुरंत delete किया जाता है
License और Jupyter fork करने का फैसला
- Pretzel का नया code AGPLv3 license का उपयोग करता है
- Jupyter code BSD-3 license वाला है
- AGPLv3 इसलिए चुना गया कि कोई third party Pretzel code लेकर hosted version बेचते हुए community को वापस contribute न करे, ऐसी स्थिति रोकी जा सके
- Pretzel code लेकर SaaS आदि के रूप में बेचना हो, तो modifications भी AGPLv3 के तहत open source करनी होंगी
- अगर company के अंदर सिर्फ tool के रूप में इस्तेमाल किया जाता है, तो modifications होने पर भी AGPL code disclosure की मांग नहीं करता, ऐसा बताया गया है
- Jupyter में सीधे contribute न करके fork करने की वजह switching cost को लगभग zero के करीब बनाना था
- शुरुआत में वे नया tool बनाना चाहते थे, लेकिन data professionals से बात करने के बाद उन्हें लगा कि नए tool पर switch करना मुश्किल है
- Jupyter एक mature product है और Pretzel team तेज़ी से features release कर रही है
- fork के नुकसान के रूप में उन्होंने बताया कि Jupyter ecosystem, कई codebases, complex release process और अलग-अलग APIs को समझने में काफी समय लगा
पुराना Pretzel AI और monetization plan
- पुराना Pretzel AI, जो visual in-browser data manipulation tool था,
pretzelai_visualfolder में है - संबंधित जानकारी PR #76 में है
- monetization enterprise hosted version बेचकर करने की योजना है
- enterprise hosted version में company-specific features शामिल हो सकते हैं जिनकी individual users को जरूरत नहीं होती
- data access control
- data source connectors
- GitHub integration
- hosted/shareable dashboards
- large-scale data work के लिए scalable on-demand compute
- उन्होंने कहा है कि personal Pretzel version को बाद में retroactively paid नहीं बनाया जाएगा
1 टिप्पणियां
Hacker News की राय
AI-इंटीग्रेटेड Jupyter notebooks पहले से ही काफ़ी हैं। वे कम open source हैं या बिल्कुल नहीं हैं, लेकिन 1 साल से ज़्यादा समय से बार-बार सुधारे गए हैं, इसलिए कुछ मायनों में ज़्यादा mature हैं
https://noteable.io/ काफ़ी अच्छा था, लेकिन acqui-hire के बाद गायब हो गया, और https://deepnote.com AI integration और real-time collaboration में मज़बूत है
https://github.com/jupyterlab/jupyter-ai Amazon की तरफ़ से बनाया गया Jupyter के लिए generative AI standard open source extension है, और अच्छा है; JupyterLab खुद भी अब real-time collaboration में काफ़ी mature है
https://colab.google/ में AI integration शानदार है, लेकिन इसमें सिर्फ़ Google-hosted models ही इस्तेमाल किए जा सकते हैं
https://cocalc.com में बड़े hosting models के लिए व्यापक AI integration और real-time collaboration है, और ज़्यादातर चीज़ें free हैं या usage-based pricing पर हैं। मैं इसका सह-विकासकर्ता हूँ
VS Code भी, जैसा दूसरों ने कहा, built-in Jupyter notebook के मामले में शानदार है — क्या और कुछ छूट गया है?
https://deepnote.com दुर्भाग्य से closed source है, इसलिए इसे local पर चलाना या modify करना संभव नहीं, और migrate करने के लिए नया interface सीखना पड़ता है
https://github.com/jupyterlab/jupyter-ai का ज़िक्र लेख में भी किया गया था, लेकिन मेरे अनुभव में इसका user experience और features हमारी बनाई हुई चीज़ से काफ़ी पीछे हैं। हालाँकि, यह ज़्यादा models support करता है और इसका codebase modify करना कहीं आसान है — यह इसका फ़ायदा है
https://colab.google/ भी Deepnote की तरह closed source है, और कंपनी में इस्तेमाल करने के लिए data connectors और support guarantees की वजह से शायद enterprise version चाहिए होगा; साथ ही यह सिर्फ़ GCP पर चलता है, जो AWS-केंद्रित संगठनों के लिए घातक हो सकता है
https://cocalc.com मैंने अभी तक इस्तेमाल नहीं किया, लेकिन यह शानदार project लगता है और मैं इसे देखूँगा। पहली नज़र में इसका interface Jupyter से काफ़ी अलग लगता है, और यही बड़ा फ़र्क़ है कि हमारा लक्ष्य users को वहीं मिलना था जहाँ वे पहले से हैं — यानी Jupyter में
VSCode के बारे में, जैसा मैंने दूसरी जगह भी कहा, हम जो बना रहे हैं वह analysis workflow पर ज़्यादा फ़ोकस करता है। VSCode में भी AI features हैं, लेकिन roadmap वाले features जुड़ने पर यह काफ़ी अलग रूप लेगा
VS Code और Cursor में Jupyter support इतना अच्छा है कि मेरी workflow के लिए यह Jupyter Notebook-समर्पित solutions से कहीं बेहतर लगता है
https://github.com/marimo-team/marimo
टीम और contributors ने शानदार implementation बनाया है। यह simple है लेकिन effective है, और दूसरे Show HN पोस्ट्स के उलट — जो open source काम को लेकर उसे बंद कर देते हैं, थोड़ा बदलते हैं, और फिर दावा करते हैं कि उन्होंने कुछ महान बना दिया — इसे open source बनाए रखना भी अच्छी बात है
आगे चलकर क्या आप दूसरे features भी expand करते रहेंगे, यह जानने की उत्सुकता है। Copilot, chat जैसी सुविधाएँ अच्छी हैं, लेकिन आजकल users शायद उम्मीद करते हैं कि ऐसे features IDE में built-in हों या extensions के रूप में मिलें
अगर सामने कोई बहुत बड़ी और जानी-मानी company न हो, तो मैं company data किसी closed source Jupyter alternative को नहीं सौंपता
मैं सहमत हूँ कि IDEs को ऐसे features देने चाहिए। लेकिन Jupyter Notebook को support करने वाले IDEs सिर्फ़ VSCode और PyCharm हैं, और VSCode के ज़्यादातर AI extensions notebook work के लिए optimized नहीं हैं। उदाहरण के लिए, एक दोस्त के मुताबिक GitHub Copilot अलग-अलग cells के बीच code completion देने में कठिनाई झेलता है
यह तो बस शुरुआत है, और हम आगे data analysis-specific features ज़्यादा बनाएँगे जो किसी भी IDE में नहीं हैं, इसलिए मुझे लगता है कि ऐसे tools के लिए काफ़ी जगह है
Pretzel के दूसरे सह-संस्थापक Ramon हैं। शुरुआती फ़ीडबैक के आधार पर हम पहले से ही local LLM और Claude Sonnet 3.5 सपोर्ट जोड़ने पर काम कर रहे हैं, और कोई सवाल हो तो मैं जवाब दूँगा
LocalAI: https://github.com/mudler/LocalAI
उदाहरण के लिए promptfoo और chainforge multi-LLM workflow प्रदान करते हैं
Promptfoo में prompts और provider settings के लिए YAML configuration है: https://www.promptfoo.dev/docs/configuration/guide/
यह भी देखना चाहिए कि system prompt क्या है, और system prompt analysis को कैसे bias करता है
/? "system prompt" https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
Github Copilot लंबे समय बाद मिला सबसे उपयोगी टूल है, और इसे Jupyter Notebooks में इस्तेमाल कर पाना वाकई शानदार है। यह ऐसा फीचर है जिसका काफ़ी समय से इंतज़ार था, इसलिए बहुत बढ़िया काम
मैंने neovim GH Copilot extension [1] और Zed [2] को देखकर implementation को reverse-engineer करने में समय लगाया, लेकिन अंत में यह बहुत unstable और झंझटभरा निकला
इस दौरान मुझे यह भी पता चला कि Codestral के पास सामान्य LLMs से अलग fill-in-the-middle version है, इसलिए speed और quality का balance बेहतर मिलता है, और इसी वजह से हमने Codestral चुना। continue.dev द्वारा tab completion के लिए Codestral इस्तेमाल करने से प्रेरणा मिली
[1] https://github.com/github/copilot.vim
[2] https://zed.dev/blog/copilot
मैं जानना चाहता हूँ कि extension की तरह बनाने के बजाय fork करना क्यों ज़रूरी था
शुरुआत में हमने सोचा था कि एक नया टूल बिल्कुल शुरू से बनाया जाए, लेकिन लोगों को migrate कराना बहुत मुश्किल है, इसलिए हमें वहीं जाना पड़ा जहाँ users पहले से हैं, यानी Jupyter
सिर्फ़ इस एक फीचर के लिए देखें तो मुश्किल होने के बावजूद extension के रूप में बनाना संभव था, और शुरुआती experiments भी extension से ही शुरू हुए थे। लेकिन अभी की तरह hidden folders बनाकर files save करना जैसी कुछ core Jupyter behaviors को बारीकी से control करना मुश्किल होता। फिर भी लगता है कि Pretzel का 95% काम करने वाला version Jupyter extension के रूप में बनाया जा सकता था
इससे भी बड़ा कारण यह है कि आगे चलकर हम code execution model को पूरी तरह DAG-based बनाना चाहते हैं ताकि reproducible notebooks बन सकें। उदाहरण के लिए https://plutojl.org/ जैसा
इसी तरह हम CodeMirror को पूरी तरह हटाकर उसकी जगह VSCode के core editor engine Monaco को लगाना चाहते हैं, ताकि Jupyter के भीतर IDE जैसा अनुभव दिया जा सके, और इस तरह का काम extension से संभव नहीं है
“GitHub Copilot अभी Jupyter में supported नहीं है” से क्या मतलब है, यह समझ नहीं आ रहा। मैं एक साल से ज़्यादा समय से VS Code .ipynb files में Copilot इस्तेमाल कर रहा हूँ
Codestral आज़माने पर लगा कि Copilot जैसी अच्छी completions, और कभी-कभी उससे भी बेहतर, कहीं बेहतर speed और cost पर मिल सकती हैं
ये editors सब programming पर focused हैं, लेकिन क्या ज़्यादा सामान्य note-taking के लिए कोई recommendation है?
मैं ऐसे काम करना चाहता हूँ जैसे बहुत बिखरे हुए notes को व्यवस्थित करना, किसी सामान्य template के मुताबिक फिर से format करना, prompts के आधार पर बदलाव लागू करना, और notes के collection पर सवाल पूछना
मुझे समझ नहीं आता कि यह इतना आकर्षक क्यों है। अगर सच में AI integration चाहिए, तो VSCode और Jupyter का इस्तेमाल करके पूरे extension ecosystem तक पहुँचा जा सकता है। आइडिया बुरा नहीं है, लेकिन इसमें purpose की कमी लगती है
यह काम असल में एक Jupyter extension (https://github.com/pretzelai/pretzelai/tree/main/packages/pr...) ही है, तो यह जानने की उत्सुकता है कि JupyterLab को hard fork करने के बजाय इसे https://github.com/jupyterlab-contrib में मौजूद बाकी चीज़ों की तरह एक extension के रूप में क्यों नहीं बनाया गया
संक्षेप में कहें तो, मौजूदा फीचर्स को extension के रूप में भी लागू किया जा सकता था। बेशक, core Jupyter behavior में पहले से कई बदलाव किए जा चुके हैं
लेकिन roadmap में code execution model को ही कहीं बड़े स्तर पर बदलने की योजना शामिल है, और वह extension से संभव नहीं है