Show HN: Adicionando Mistral Codestral e GPT-4o ao Jupyter Notebook
(github.com/pretzelai)- Pretzel é um fork do Jupyter que adiciona geração e edição de código com IA, autocomplete inline com Tab, chat na barra lateral e correção de erros em um ambiente de notebook, projetado para continuar usando facilmente as configurações, keybindings e extensões existentes do Jupyter
- Para começar, basta executar
pip install pretzelaie depoispretzel lab; se a instalação for inconveniente, é possível usar a versão hospedada gratuita em pretzelai.app - Ask AI dentro da célula,
Cmd+K/Ctrl+K, AI Sidebar, referência de variáveis com@, edição de área selecionada e o botão de correção de erros usam o código do notebook e as variáveis da sessão como contexto para a IA - Segundo o FAQ, o modelo padrão é GPT-4o, e o autocomplete inline usa Mistral Codestral; também é possível conectar, nas configurações, modelos externos e locais como OpenAI, Anthropic/Claude, Ollama, Groq e Azure
- Não coleta dados pessoais, mas pode coletar telemetria dos recursos de IA e prompts; não armazena código nem respostas, e o novo código é distribuído sob AGPLv3
Objetivo do Pretzel e compatibilidade com Jupyter
- Pretzel é um fork criado para melhorar a experiência de uso do Jupyter
- Adiciona geração e edição de código com IA, autocomplete inline com Tab, chat na barra lateral e correção de erros
- Ao migrar do Jupyter para o Pretzel, config, configurações, keybindings e extensões existentes continuam funcionando por padrão
- O objetivo central é permitir que usuários do Jupyter usem recursos de IA com custo de migração praticamente zero
Início rápido e instalação
- A instalação básica é feita com
pip install pretzelai - A interface web é iniciada com o comando abaixo
pretzel lab
- A versão hospedada gratuita pode ser usada em pretzelai.app
- Em ambientes conda, execute primeiro
conda install pipe depoispip install pretzelai - Se a instalação for difícil, é possível executar com um contêiner Docker
- O uso de Docker é recomendado quando a instalação local é bloqueada, como no Windows
- O contêiner expõe a porta
8888e é executado no formatopretzel lab --ip=0.0.0.0 - Se for necessário acessar uma pasta local, use
-v $(pwd):/root/pretzelpara mapear o diretório atual para o contêiner - Para atualizar para a versão mais recente, reconstrua a imagem com
docker build --no-cache -t pretzel .
- A versão bleeding edge pode ser compilada usando o Dockerfile do repositório
Erros de instalação e ferramentas de build
- O erro
Failed to build installable wheels for some pyproject.toml based projects (pystemmer)significa que houve falha ao instalar a dependênciaPyStemmer - Uma causa comum é a ausência das ferramentas de build necessárias
- As ações variam por sistema operacional
- Windows: instalar Microsoft Build Tools
- Ubuntu e derivados de Debian:
sudo apt-get update && sudo apt-get install build-essential python3-dev - macOS:
brew install gcc; se necessário,xcode-select --install
- Depois de instalar as ferramentas de build, execute
pip install pretzelainovamente
Recursos de IA dentro do notebook
-
Autocomplete inline com Tab
- Ao começar a digitar em uma célula, é possível receber autocomplete inline com Tab
- A sugestão é acionada após 1 segundo de espera, e um pequeno spinner aparece na frente do botão azul Ask AI da célula
- O Pretzel AI Server padrão usa Mistral Codestral para autocomplete inline
- O modelo de autocomplete inline pode ser alterado em Pretzel AI Settings
-
Geração e edição de código
- Em uma célula, pressione
Cmd+KouCtrl+K, ou clique em Ask AI, para abrir a caixa de prompt da IA - Ao digitar
@, aparece um dropdown com a lista de variáveis da sessão atual - Se o prompt incluir
@variable, o valor dessa variável será enviado para a IA - Código relevante do notebook atual é incluído automaticamente no contexto da IA
- Em células com código existente, o prompt edita esse código
- Se uma parte do código for selecionada, apenas a seleção será alvo da edição
- A resposta pode ser aceita ou rejeitada, e o prompt pode ser alterado e enviado de novo
↑e↓permitem navegar pelo histórico de prompts
- Em uma célula, pressione
-
AI Sidebar
- É possível abrir a AI Sidebar com
Ctrl+Cmd+BouCtrl+Alt+B, ou pelo ícone do Pretzel na barra lateral direita - Ela serve para fazer perguntas, gerar código e buscar código existente
- A IA sempre usa o código da célula ativa como contexto
- Se houver seleção de código na célula ativa, apenas a parte selecionada entra no contexto
- A sintaxe
@permite referenciar variáveis e dataframes em memória - Exemplos de tarefas incluem otimizar uma função, encontrar código para remover outliers, explicar o código da célula atual, criar um histograma de idade de
@dfe calcular a receita média por tipo de produto no dataframesales_data
- É possível abrir a AI Sidebar com
-
Inserção de código no meio de código existente
- Coloque o cursor em uma linha vazia ou em uma linha de código existente e abra o prompt da IA com
Cmd+K - Se o prompt começar com
injectouij, apenas novo código será adicionado sem editar o código existente - O novo código é adicionado uma linha abaixo da posição do cursor
- Coloque o cursor em uma linha vazia ou em uma linha de código existente e abra o prompt da IA com
-
Correção de erros
- Quando ocorre um erro, aparece no canto superior direito o botão Fix Error with AI
- Ao clicar nele, é possível tentar corrigir o erro com IA
Modelos de IA e configurações
- O Pretzel funciona imediatamente sem configuração adicional
- Código ou dados enviados ao Pretzel AI Server padrão não são armazenados
- Para usar outros modelos de IA, é possível conectar vários fornecedores e modelos locais nas configurações
- OpenAI
- Anthropic/Claude
- Ollama
- Groq
- Azure
- O caminho das configurações é
Settings→Pretzel AI Settingsno menu superior - Em AI Settings, é possível escolher separadamente o modelo de chat e o modelo de autocomplete inline
- Para melhor desempenho, recomenda-se usar modelos de nível GPT-4
- GPT-4 Turbo
- GPT-4o
- Claude-3.5 Sonnet
- Claude-3 Opus
- Llama-3.1 405B
- Em Configure AI Services, é possível ativar ou desativar serviços de IA e informar chave de API ou URL
- Azure e Ollama vêm desativados por padrão, mas o usuário pode ativá-los
- Depois de alterar as configurações, é preciso salvar, e o Pretzel valida se elas estão corretas
- Os modelos Azure Enterprise OpenAI ainda não foram testados, e bugs podem ser reportados em GitHub issues
Comportamento dos modelos no FAQ
- O Pretzel usa diferentes modelos de IA conforme a tarefa
- O modelo padrão é GPT-4o
- É avaliado como um bom equilíbrio entre velocidade e qualidade
- Ao usar sua própria chave de API, isso pode ser alterado em Pretzel Settings
- O autocomplete inline usa Mistral Codestral
- É usado como um modelo adequado para conclusão de código
- É um modelo de 22B parâmetros e oferece desempenho rápido
- Ao usar sua própria chave de API, se a chave da Mistral não for fornecida, o autocomplete inline também usará GPT-4o
- O suporte a modelos locais e o suporte ao Anthropic Claude continuam em fase experimental, e Claude está no topo da lista de prioridades
Roadmap
- O roadmap do Pretzel inclui os seguintes recursos
- Geração e compreensão nativas de código com IA, semelhantes ao Cursor
- Colaboração em tempo real com pair programming, comentários e histórico de versões
- Suporte a SQL tanto em células de código quanto em um SQL IDE independente
- Construtor de análise visual baseado em pretzelai_visual
- Experiência de escrita de código semelhante ao VSCode usando Monaco
- Geração e compartilhamento de dashboards com 1 clique a partir de notebooks Jupyter
- Solicitações de recursos podem ser enviadas por GitHub issues ou por e-mail
- A equipe tem duas pessoas e quer definir as prioridades do roadmap com base no feedback
Privacidade, coleta e retenção de dados
- O Pretzel não coleta dados pessoais
- Usa telemetria padrão apenas para recursos de IA
- Um exemplo é o evento de alguém clicar em Ask AI
- O usuário é vinculado apenas a um ID anônimo
- Se cookies forem permitidos, isso ajuda a reconhecer o mesmo usuário anônimo em várias sessões do navegador
- Se cookies não forem permitidos, cada nova abertura do navegador é tratada como um novo usuário anônimo
- Os prompts dos recursos de IA são coletados, mas as respostas não são coletadas
- A telemetria de prompts pode ser desativada em
Settings > Pretzel AI > Uncheck Prompt Telemetry - O código não é coletado em nenhuma circunstância
- Mesmo ao usar o servidor de IA em nuvem do Pretzel para autocomplete, o código não é armazenado
- Ao usar a versão hospedada em pretzelai.app, é criado um usuário baseado no endereço de e-mail
- O usuário pode fazer login e excluir os dados salvos no servidor hospedado
- O servidor hospedado não cria backups nem cópias
- O servidor hospedado é gratuito, mas exclui dados e conta após 30 dias desde o último login
- Para excluir a conta mais rapidamente, basta enviar um e-mail para
founders@withpretzel.comcom o assuntoAccount Deletion, e a exclusão é feita imediatamente
Licença e decisão de fazer um fork do Jupyter
- O novo código do Pretzel usa a licença AGPLv3
- O código do Jupyter usa a licença BSD-3
- A AGPLv3 foi escolhida para impedir que terceiros peguem o código do Pretzel e vendam uma versão hospedada sem devolver nada para a comunidade
- Se alguém pegar o código do Pretzel e o vender como SaaS ou algo semelhante, as modificações também deverão ser open source sob AGPLv3
- O texto informa que, se uma empresa usar a ferramenta apenas internamente, a AGPL não exige divulgação do código, mesmo com modificações
- O motivo para fazer um fork, em vez de contribuir diretamente com o Jupyter, foi tornar o custo de migração o mais próximo possível de zero
- No início, a equipe queria criar algo novo, mas após conversar com especialistas em dados concluiu que a migração para uma nova ferramenta seria difícil
- O Jupyter é um produto maduro, e a equipe do Pretzel está lançando recursos em ritmo acelerado
- Como desvantagens do fork, a equipe relata que gastou bastante tempo para entender o ecossistema Jupyter, várias codebases, procedimentos complexos de release e diferentes APIs
Pretzel AI anterior e plano de monetização
- A antiga ferramenta Pretzel AI, de manipulação visual de dados no navegador, está na pasta
pretzelai_visual - Informações relacionadas estão em PR #76
- O plano de monetização é vender uma versão hospedada para empresas
- A versão hospedada corporativa pode incluir recursos específicos para empresas que usuários individuais não precisam
- Controle de acesso a dados
- Conectores de fontes de dados
- Integração com GitHub
- Dashboards hospedáveis e compartilháveis
- Computação escalável sob demanda para trabalhar com grandes volumes de dados
- A equipe afirma que não pretende tornar retroativamente paga a versão pessoal do Pretzel
1 comentários
Comentários do Hacker News
Já existem muitos Jupyter notebooks com integração de IA. Não são muito open source, ou nem são, mas vêm sendo refinados iterativamente há mais de um ano e, em alguns aspectos, são mais maduros
https://noteable.io/ era bem legal, mas desapareceu depois de um acqui-hire, e o https://deepnote.com é forte em integração de IA e colaboração em tempo real
https://github.com/jupyterlab/jupyter-ai é uma boa extensão open source padrão de IA generativa para Jupyter, criada pelo pessoal da Amazon, e o próprio JupyterLab agora também está bem maduro em colaboração em tempo real
https://colab.google/ tem uma integração de IA excelente, mas só permite usar modelos hospedados pelo Google
https://cocalc.com tem integração de IA ampla, cobrindo os principais modelos hospedados, e colaboração em tempo real; na maior parte é gratuito ou cobrado por uso. Eu co-desenvolvi isso
O VS Code também tem um notebook Jupyter embutido excelente, como outras pessoas disseram; será que está faltando mais alguma coisa?
O https://deepnote.com infelizmente é código fechado, então não dá para rodar localmente nem modificar, e é preciso aprender uma nova interface para migrar
O https://github.com/jupyterlab/jupyter-ai também foi mencionado no post, mas, pela minha experiência, a experiência do usuário e os recursos ficam bem atrás do que já construímos. Por outro lado, ele suporta mais modelos e a base de código é muito mais fácil de modificar
O https://colab.google/ também é código fechado, parecido com o Deepnote, e para uso em empresas parece exigir a versão enterprise por causa dos conectores de dados e da garantia de suporte; como só roda no GCP, isso pode ser fatal para organizações centradas em AWS
Ainda não usei o https://cocalc.com, mas parece um projeto excelente e pretendo conferir. À primeira vista, a interface parece bem diferente do Jupyter, e uma grande diferença é que nosso objetivo era ir até onde os usuários já estão: o Jupyter
Como já falei em outros lugares, no VSCode o tipo de funcionalidade que estamos criando é mais focado em fluxos de trabalho analíticos. O VSCode também tem recursos de IA, mas, quando adicionarmos os recursos do roadmap, a proposta deve ficar bem diferente
O suporte a Jupyter no VS Code e no Cursor é tão bom que, para o meu fluxo de trabalho, isso funciona muito melhor do que uma solução dedicada a Jupyter Notebook
https://github.com/marimo-team/marimo
A implementação feita pela equipe e pelos contribuidores é excelente. É simples, mas eficaz, e também é ótimo que tenha permanecido open source, ao contrário de outros Show HN que pegam um trabalho open source, fecham, mudam um pouco e dizem que criaram algo grandioso
Fico curioso se pretendem continuar expandindo para outros recursos. Coisas como Copilot e chat são boas, mas parece que hoje em dia os usuários esperam que isso já venha no IDE por padrão ou como extensão
A menos que fosse uma empresa muito grande e conhecida, eu não confiaria dados da empresa a uma alternativa de Jupyter de código fechado
Concordo que os IDEs deveriam oferecer esse tipo de recurso. Mas os únicos IDEs que dão suporte a Jupyter Notebook são VSCode e PyCharm, e a maioria das extensões de IA para VSCode não é otimizada para o trabalho com notebooks. Por exemplo, um amigo me disse que o GitHub Copilot tem dificuldade com autocompletar código atravessando células diferentes
Isso é só o começo, e pretendemos criar muito mais recursos voltados especificamente para análise de dados que não existem em nenhum IDE, então acho que há bastante espaço para esse tipo de ferramenta
Sou Ramon, outro cofundador da Pretzel. Com base no feedback inicial, já estamos trabalhando para adicionar suporte a LLMs locais e Claude Sonnet 3.5, e responderei perguntas se houver
LocalAI: https://github.com/mudler/LocalAI
Por exemplo, promptfoo e chainforge oferecem fluxos de trabalho com múltiplos LLMs
O Promptfoo tem configuração em YAML para prompts e definições de provedores: https://www.promptfoo.dev/docs/configuration/guide/
Também é preciso ver o que é um system prompt e como ele pode enviesar a análise
/? "system prompt" https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
GitHub Copilot é a ferramenta mais útil que encontrei em muito tempo, e é muito bom poder usá-lo no Jupyter Notebooks. É um recurso que eu esperava havia bastante tempo, então ótimo trabalho
Passei um tempo fazendo engenharia reversa da implementação consultando a extensão do GH Copilot para neovim [1] e o Zed [2], mas no fim ficou instável e trabalhoso demais
Nesse processo, também descobri que o Codestral, ao contrário de um LLM comum, tem uma versão de fill-in-the-middle, então oferece um equilíbrio melhor entre velocidade e qualidade, e por isso decidi usar o Codestral. A inspiração veio do continue.dev, que usa Codestral para conclusão com Tab
[1] https://github.com/github/copilot.vim
[2] https://zed.dev/blog/copilot
Fiquei curioso sobre quais limitações levaram vocês a precisar fazer um fork em vez de criar isso como extensão
No começo, pensamos em criar uma ferramenta nova do zero, mas como é muito difícil fazer as pessoas migrarem, tivemos de ir para onde os usuários já estão, que é o Jupyter
Considerando só este recurso, mesmo que fosse difícil, dava para fazer como extensão, e os experimentos iniciais começaram justamente por aí. Mas teria sido difícil controlar com precisão alguns comportamentos centrais do Jupyter, como criar pastas ocultas para salvar arquivos, como fazemos hoje. Ainda assim, acho que dava para criar uma versão com 95% do comportamento da Pretzel como extensão do Jupyter
O motivo maior é que, no futuro, queremos mudar completamente o modelo de execução de código para algo baseado em DAG, criando notebooks reproduzíveis. Seria parecido com https://plutojl.org/
Da mesma forma, queremos remover totalmente o CodeMirror e substituí-lo pelo Monaco, o motor central de edição do VSCode, para oferecer uma experiência mais parecida com IDE dentro do Jupyter, e isso não é possível por extensão
Não entendo o que significa dizer que “o GitHub Copilot ainda não é compatível com Jupyter”. Uso o Copilot em arquivos .ipynb no VS Code há mais de um ano
Ao testar o Codestral, vi que ele consegue conclusões tão boas quanto as do Copilot, às vezes melhores, com velocidade e custo muito melhores
Todos esses editores são focados em programação; existe alguma recomendação mais voltada para anotações gerais?
Quero fazer coisas como organizar notas bem brutas, reformatá-las para caber em um modelo geral, aplicar mudanças com base em prompts e fazer perguntas sobre uma coleção de notas
Não entendo muito por que isso seria atraente. Se você realmente precisa de integração com IA, pode usar VSCode e Jupyter e ter acesso a todo o ecossistema de extensões. A ideia não é ruim, mas parece faltar propósito
Como o trabalho é, na prática, uma extensão do Jupyter (https://github.com/pretzelai/pretzelai/tree/main/packages/pr...), fiquei curioso sobre por que vocês não fizeram isso como uma extensão, como as outras em https://github.com/jupyterlab-contrib, em vez de fazer um hard fork do JupyterLab
Resumindo, os recursos atuais provavelmente poderiam ter sido implementados como uma extensão. Claro, já fizemos várias mudanças no funcionamento central do Jupyter
Mas o roadmap inclui mudanças muito maiores no próprio modelo de execução de código, e isso não seria possível com uma extensão