3 पॉइंट द्वारा GN⁺ 2024-07-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 8888 port 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 का मतलब PyStemmer dependency 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 कर सकते हैं
  • 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_data dataframe में 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 नीचे जोड़ा जाता है
  • 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 में SettingsPretzel 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 पर subject Account 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_visual folder में है
  • संबंधित जानकारी 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 टिप्पणियां

 
GN⁺ 2024-07-04
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://noteable.io/ जैसा कहा गया, अब मौजूद नहीं है
      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 जुड़ने पर यह काफ़ी अलग रूप लेगा
    • https://www.cursor.com/ एक AI-first VS Code clone है
      VS Code और Cursor में Jupyter support इतना अच्छा है कि मेरी workflow के लिए यह Jupyter Notebook-समर्पित solutions से कहीं बेहतर लगता है
    • marimo बहुत अच्छा है। मैं इसे कई महीनों से इस्तेमाल कर रहा हूँ और notebook-संबंधित ज़्यादातर काम इसी पर शिफ्ट कर चुका हूँ। Copilot support भी built-in आता है
      https://github.com/marimo-team/marimo
    • पक्का नहीं कि https://hex.tech भी इसमें शामिल किया जा सकता है या नहीं
    • जो छूट गया, उसमें DataSpell भी है: https://www.jetbrains.com/dataspell
  • टीम और contributors ने शानदार implementation बनाया है। यह simple है लेकिन effective है, और दूसरे Show HN पोस्ट्स के उलट — जो open source काम को लेकर उसे बंद कर देते हैं, थोड़ा बदलते हैं, और फिर दावा करते हैं कि उन्होंने कुछ महान बना दिया — इसे open source बनाए रखना भी अच्छी बात है
    आगे चलकर क्या आप दूसरे features भी expand करते रहेंगे, यह जानने की उत्सुकता है। Copilot, chat जैसी सुविधाएँ अच्छी हैं, लेकिन आजकल users शायद उम्मीद करते हैं कि ऐसे features IDE में built-in हों या extensions के रूप में मिलें

    • Pretzel को open source बनाए रखना ज़रूरी था, ख़ासकर trust की वजह से। Jupyter इस्तेमाल करने वाले बहुत से लोग sensitive data संभालते हैं, इसलिए closed source tools को अपनाना मुश्किल होता है
      अगर सामने कोई बहुत बड़ी और जानी-मानी 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 के लिए काफ़ी जगह है
    • लगता है कि BSD-3-Clause license वाले project को लेकर उसे AGPLv3 license में बदल दिया गया है। यह बिल्कुल वही बात नहीं है, लेकिन जिस चिंता का ज़िक्र हुआ था, उससे कुछ हद तक मिलता-जुलता है
  • Pretzel के दूसरे सह-संस्थापक Ramon हैं। शुरुआती फ़ीडबैक के आधार पर हम पहले से ही local LLM और Claude Sonnet 3.5 सपोर्ट जोड़ने पर काम कर रहे हैं, और कोई सवाल हो तो मैं जवाब दूँगा

  • Github Copilot लंबे समय बाद मिला सबसे उपयोगी टूल है, और इसे Jupyter Notebooks में इस्तेमाल कर पाना वाकई शानदार है। यह ऐसा फीचर है जिसका काफ़ी समय से इंतज़ार था, इसलिए बहुत बढ़िया काम

    • आप Jupyter notebook files को VS Code में भी खोल सकते हैं, और तब AI autocomplete इस्तेमाल करने का एक और तरीका मिल जाता है। मैं Jupyter का इतना ज़्यादा उपयोग नहीं करता कि कह सकूँ VS Code हमेशा इस्तेमाल करना सही है या नहीं
    • सहमत हूँ। मैंने वास्तव में GitHub Copilot को Jupyter में चलाने की कोशिश की थी, लेकिन GH के पास कोई official API नहीं है
      मैंने 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 करना क्यों ज़रूरी था

    • FAQ में इसे संक्षेप में छुआ गया था, लेकिन थोड़ा विस्तार से कहूँ तो लक्ष्य एक modern literate programming tool बनाना है। ऊपर से देखने पर यह Jupyter जैसा ही लगेगा, लेकिन बेहतर capabilities वाला टूल होगा
      शुरुआत में हमने सोचा था कि एक नया टूल बिल्कुल शुरू से बनाया जाए, लेकिन लोगों को 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 इस्तेमाल कर रहा हूँ

    • जैसा कि दूसरों ने कहा, VSCode में Copilot support है, लेकिन data scientists और खासकर analysts, जो अपना ज़्यादातर दिन text editor में नहीं बिताते, अब भी Jupyter Lab या Notebook application इस्तेमाल करते हैं
      Codestral आज़माने पर लगा कि Copilot जैसी अच्छी completions, और कभी-कभी उससे भी बेहतर, कहीं बेहतर speed और cost पर मिल सकती हैं
    • शायद बात Jupyter Notebook या Lab की हो रही है, न कि VS Code में चलाने की
    • शायद वे notebook file format की नहीं, बल्कि Jupyter Notebook application की बात कर रहे हैं
  • ये editors सब programming पर focused हैं, लेकिन क्या ज़्यादा सामान्य note-taking के लिए कोई recommendation है?
    मैं ऐसे काम करना चाहता हूँ जैसे बहुत बिखरे हुए notes को व्यवस्थित करना, किसी सामान्य template के मुताबिक फिर से format करना, prompts के आधार पर बदलाव लागू करना, और notes के collection पर सवाल पूछना

  • मुझे समझ नहीं आता कि यह इतना आकर्षक क्यों है। अगर सच में AI integration चाहिए, तो VSCode और Jupyter का इस्तेमाल करके पूरे extension ecosystem तक पहुँचा जा सकता है। आइडिया बुरा नहीं है, लेकिन इसमें purpose की कमी लगती है

    • हममें से कुछ लोग Jupyter को पसंद करते हैं या उसके बिना काम नहीं चला सकते
  • यह काम असल में एक Jupyter extension (https://github.com/pretzelai/pretzelai/tree/main/packages/pr...) ही है, तो यह जानने की उत्सुकता है कि JupyterLab को hard fork करने के बजाय इसे https://github.com/jupyterlab-contrib में मौजूद बाकी चीज़ों की तरह एक extension के रूप में क्यों नहीं बनाया गया

    • यह वाजिब सवाल है। fork क्यों किया, इसका जवाब यहाँ पहले दिया गया था: https://news.ycombinator.com/item?id=40857807
      संक्षेप में कहें तो, मौजूदा फीचर्स को extension के रूप में भी लागू किया जा सकता था। बेशक, core Jupyter behavior में पहले से कई बदलाव किए जा चुके हैं
      लेकिन roadmap में code execution model को ही कहीं बड़े स्तर पर बदलने की योजना शामिल है, और वह extension से संभव नहीं है