3 puntos por GN⁺ 2024-07-04 | 1 comentarios | Compartir por WhatsApp
  • Pretzel es un fork de Jupyter que añade generación y edición de código con IA, autocompletado inline con tab, chat en la barra lateral y corrección de errores, y está diseñado para que sea fácil seguir usando la configuración, los atajos de teclado y las extensiones existentes de Jupyter
  • Para empezar basta con ejecutar pip install pretzelai y luego pretzel lab; si prefieres evitar la instalación, puedes usar la versión alojada gratuita, pretzelai.app
  • Ask AI dentro de las celdas, Cmd+K/Ctrl+K, la AI Sidebar, la referencia de variables con @, la edición de selecciones y el botón de corregir errores usan como contexto de IA el código del notebook y las variables de la sesión
  • Según el FAQ, el modelo predeterminado es GPT-4o, y para el autocompletado inline usa Mistral Codestral; además, desde la configuración se pueden conectar modelos externos o locales como OpenAI, Anthropic/Claude, Ollama, Groq y Azure
  • No recopila información personal, pero sí puede recopilar telemetría de las funciones de IA y prompts; no guarda el código ni las respuestas, y el código nuevo se distribuye bajo AGPLv3

Objetivo de Pretzel y compatibilidad con Jupyter

  • Pretzel es un fork para mejorar la experiencia de uso de Jupyter
  • Añade funciones de generación y edición de código con IA, autocompletado inline con tab, chat en la barra lateral y corrección de errores
  • Si te pasas de Jupyter a Pretzel, los config, ajustes, atajos de teclado y extensiones existentes funcionan por defecto
  • El objetivo principal es que los usuarios de Jupyter puedan usar funciones de IA con un costo de cambio casi nulo

Inicio rápido e instalación

  • La instalación básica se hace con pip install pretzelai
  • La interfaz web se ejecuta con el siguiente comando
    • pretzel lab
  • La versión alojada gratuita se puede usar en pretzelai.app
  • En entornos conda, primero ejecuta conda install pip y luego pip install pretzelai
  • Si la instalación se complica, se puede ejecutar en un contenedor Docker
    • Recomiendan usar Docker cuando la instalación local se bloquea, por ejemplo en Windows
    • El contenedor expone el puerto 8888 y se ejecuta con algo como pretzel lab --ip=0.0.0.0
    • Si necesitas acceso a una carpeta local, mapea el directorio actual al contenedor con -v $(pwd):/root/pretzel
    • Para actualizar a la versión más reciente, vuelve a construir la imagen con docker build --no-cache -t pretzel .
  • La versión bleeding edge se puede compilar usando el Dockerfile del repositorio

Errores de instalación y herramientas de compilación

  • El error Failed to build installable wheels for some pyproject.toml based projects (pystemmer) significa que falló la instalación de la dependencia PyStemmer
  • Una causa común es que falten las herramientas de compilación necesarias
  • Las acciones varían según el sistema operativo
    • Windows: instalar Microsoft Build Tools
    • Ubuntu y derivados de Debian: sudo apt-get update && sudo apt-get install build-essential python3-dev
    • macOS: brew install gcc; si hace falta, xcode-select --install
  • Después de instalar las herramientas de compilación, vuelve a ejecutar pip install pretzelai

Funciones de IA dentro del notebook

  • Autocompletado inline con tab

    • Si empiezas a escribir en una celda, puedes recibir autocompletado inline con tab
    • El autocompletado se activa tras 1 segundo de espera y aparece un pequeño spinner delante del botón azul Ask AI de la celda
    • El servidor de IA predeterminado de Pretzel usa Mistral Codestral para el autocompletado inline
    • El modelo de autocompletado inline se puede cambiar en Pretzel AI Settings
  • Generación y edición de código

    • En una celda, al presionar Cmd+K o Ctrl+K, o al hacer clic en Ask AI, se abre el cuadro para ingresar prompts de IA
    • Al escribir @, aparece un menú desplegable con la lista de variables de la sesión actual
    • Si incluyes @variable en el prompt, el valor de esa variable se envía a la IA
    • El código relevante del notebook actual se incluye automáticamente en el contexto de la IA
    • En celdas que ya tienen código, el prompt edita ese código
    • Si seleccionas una parte del código, solo esa selección se convierte en el objetivo de edición
    • La respuesta se puede aceptar o rechazar, y puedes volver a enviarla tras modificar el prompt
    • Puedes recorrer el historial de prompts con y
  • AI Sidebar

    • Puedes abrir la AI Sidebar con Ctrl+Cmd+B o Ctrl+Alt+B, o desde el ícono de Pretzel en la barra lateral derecha
    • Sirve para hacer preguntas, generar código y buscar código existente
    • La IA siempre usa como contexto el código de la celda activa
    • Si seleccionas código en la celda activa, solo esa selección entra en el contexto
    • Con la sintaxis @ puedes referenciar variables y dataframes en memoria
    • Entre las tareas de ejemplo están optimizar una función, buscar código para eliminar outliers, explicar el código de la celda actual, generar un histograma de edad de @df y calcular las ventas promedio por tipo de producto en el dataframe sales_data
  • Insertar código en medio de código existente

    • Coloca el cursor en una línea vacía o en una línea de código existente y abre el prompt de IA con Cmd+K
    • Si el prompt empieza con inject o ij, solo agrega código nuevo sin editar el código existente
    • El código nuevo se agrega una línea debajo de la posición del cursor
  • Corrección de errores

    • Cuando ocurre un error, aparece un botón Fix Error with AI en la parte superior derecha
    • Puedes hacer clic en ese botón para intentar corregir el error con IA

Modelos de IA y configuración

  • Pretzel funciona de inmediato sin configuración adicional
  • No guarda el código ni los datos enviados al servidor de IA predeterminado de Pretzel
  • Si quieres usar otros modelos de IA, en la configuración puedes conectar varios proveedores y modelos locales
    • OpenAI
    • Anthropic/Claude
    • Ollama
    • Groq
    • Azure
  • La ruta en la configuración es SettingsPretzel AI Settings
  • En AI Settings puedes elegir por separado el modelo para chat y el modelo para autocompletado inline
  • Para un mejor rendimiento recomiendan usar modelos de nivel GPT-4
    • GPT-4 Turbo
    • GPT-4o
    • Claude-3.5 Sonnet
    • Claude-3 Opus
    • Llama-3.1 405B
  • En Configure AI Services puedes activar o desactivar servicios de IA e ingresar claves API o URLs
  • Azure y Ollama vienen desactivados por defecto, pero el usuario puede activarlos
  • Después de cambiar la configuración, hay que guardarla, y Pretzel valida que sea correcta
  • Los modelos Azure Enterprise OpenAI todavía no se han probado, y los bugs se pueden reportar en GitHub issues

Comportamiento de los modelos según el FAQ

  • Pretzel usa varios modelos de IA según la tarea
  • El modelo predeterminado es GPT-4o
    • Se considera que ofrece un buen equilibrio entre velocidad y calidad
    • Si usas tu propia API key, puedes cambiarlo en Pretzel Settings
  • El autocompletado inline usa Mistral Codestral
    • Se usa como un modelo adecuado para completar código
    • Es un modelo de 22B parámetros y ofrece buen rendimiento
  • Si usas tu propia API key pero no proporcionas una API key de Mistral, el autocompletado inline también usa GPT-4o
  • El soporte para modelos locales y para Anthropic Claude sigue en fase experimental, y Claude está en la parte alta de la lista de prioridades

Hoja de ruta

  • La hoja de ruta de Pretzel incluye las siguientes funciones
    • Generación y comprensión de código con IA nativa, similar a Cursor
    • Colaboración en tiempo real con pair programming, comentarios e historial de versiones
    • Soporte para SQL tanto en celdas de código como en un IDE de SQL independiente
    • Un constructor de análisis visual basado en pretzelai_visual
    • Una experiencia de escritura de código tipo VSCode usando Monaco
    • Crear y compartir dashboards desde notebooks de Jupyter con un clic
  • Las solicitudes de funciones se pueden enviar por GitHub issues o por correo electrónico
  • El equipo está formado por dos personas y quiere definir las prioridades de la hoja de ruta a partir del feedback

Privacidad, recopilación de datos y retención

  • Pretzel no recopila información personal
  • Usa telemetría predeterminada solo para las funciones de IA
    • Un ejemplo es el evento de que alguien hizo clic en Ask AI
    • Solo se vincula a un ID anónimo
    • Si permites cookies, ayuda a reconocer al mismo usuario anónimo en varias sesiones del navegador
    • Si no permites cookies, se te tratará como un usuario anónimo nuevo cada vez que abras el navegador
  • Recopila los prompts de las funciones de IA, pero no recopila las respuestas
  • La telemetría de prompts se puede desactivar en Settings > Pretzel AI > Uncheck Prompt Telemetry
  • El código no se recopila en ningún caso
  • Aunque uses el servidor de IA en la nube de Pretzel para completar código, no lo guarda
  • Si usas la versión alojada en pretzelai.app, se crea un usuario basado en tu dirección de correo electrónico
  • El usuario puede iniciar sesión y borrar los datos guardados en el servidor alojado
  • El servidor alojado no crea respaldos ni copias
  • El servidor alojado es gratuito, pero elimina los datos y la cuenta si pasan 30 días desde el último inicio de sesión
  • Si quieres borrar la cuenta antes, puedes enviar un correo a founders@withpretzel.com con el asunto Account Deletion y la eliminarán de inmediato

Licencia y decisión de hacer un fork de Jupyter

  • El código nuevo de Pretzel usa la licencia AGPLv3
  • El código de Jupyter usa licencia BSD-3
  • Eligieron AGPLv3 para evitar que terceros tomen el código de Pretzel, vendan una versión alojada y no devuelvan nada a la comunidad
  • Si alguien toma el código de Pretzel y lo vende como SaaS o algo similar, también debe liberar sus modificaciones como open source bajo AGPLv3
  • Aclaran que si se usa solo como herramienta interna dentro de una empresa, AGPL no exige publicar el código aunque haya modificaciones
  • La razón para hacer un fork en vez de contribuir directamente a Jupyter fue reducir el costo de cambio a casi cero
  • Al principio querían construir algo nuevo, pero tras hablar con especialistas en datos concluyeron que cambiar a una herramienta nueva era difícil
  • Jupyter es un producto maduro y el equipo de Pretzel está lanzando funciones a gran velocidad
  • Como desventajas del fork, comentan que les tomó bastante tiempo entender el ecosistema de Jupyter, múltiples codebases, procedimientos de release complejos y distintas APIs

Pretzel AI anterior y plan de monetización

  • La antigua Pretzel AI, una herramienta visual de manipulación de datos en el navegador, está en la carpeta pretzelai_visual
  • Hay información relacionada en PR #76
  • Planean monetizar vendiendo una versión alojada para empresas
  • La versión alojada para empresas puede incluir funciones específicas para compañías que no suelen ser necesarias para usuarios individuales
    • Control de acceso a datos
    • Conectores a fuentes de datos
    • Integración con GitHub
    • Dashboards alojables y compartibles
    • Cómputo escalable bajo demanda para trabajo con grandes volúmenes de datos
  • Aclaran que no planean volver de pago retroactivamente la versión personal de Pretzel más adelante

1 comentarios

 
GN⁺ 2024-07-04
Opiniones de Hacker News
  • Ya hay bastantes notebooks de Jupyter con integración de IA. Tienen poca o nula apertura de código, pero llevan más de un año de iteración y, en algunos aspectos, están más maduros
    https://noteable.io/ era bastante bueno, pero desapareció después de una adquisición de talento (acqui-hire), y https://deepnote.com es fuerte en integración de IA y colaboración en tiempo real
    https://github.com/jupyterlab/jupyter-ai es una buena extensión open source estándar de IA generativa para Jupyter, creada por gente de Amazon, y JupyterLab en sí ya tiene colaboración en tiempo real bastante madura
    https://colab.google/ tiene una excelente integración de IA, pero solo se pueden usar modelos alojados por Google
    https://cocalc.com tiene una integración amplia de IA que soporta los principales modelos alojados, además de colaboración en tiempo real, y en su mayoría es gratis o con cobro según uso. Yo participé en su desarrollo
    VS Code también tiene, como dijeron otros, notebooks de Jupyter integrados excelentes; ¿faltará algo más?

    • Durante la investigación vi la mayoría de esta lista, y si resumo las diferencias: https://noteable.io/ ya no existe, como se mencionó
      https://deepnote.com lamentablemente es de código cerrado, así que no se puede ejecutar localmente ni modificar, y hay que aprender una interfaz nueva y migrarse
      https://github.com/jupyterlab/jupyter-ai también lo mencioné en el artículo, pero según mi experiencia su experiencia de usuario y sus funciones están bastante por detrás de lo que ya construimos. Eso sí, tiene la ventaja de soportar más modelos y de tener una base de código mucho más fácil de modificar
      https://colab.google/ también es de código cerrado, parecido a Deepnote, y para usarlo en una empresa parece que hace falta la versión enterprise por los conectores de datos y las garantías de soporte; además, solo funciona en GCP, lo que puede ser fatal para organizaciones centradas en AWS
      Todavía no probé https://cocalc.com, pero parece un gran proyecto y pienso revisarlo. Como primera impresión, parece una interfaz bastante distinta de Jupyter, y la gran diferencia es que nuestro objetivo era ir adonde los usuarios ya están: Jupyter
      Como dije en otra parte, en VSCode las funciones que estamos creando se enfocan más en el flujo de trabajo de análisis. VSCode también tiene funciones de IA, pero cuando se sumen más funciones del roadmap, se verá bastante distinto
    • https://www.cursor.com/ es un clon de VS Code con la IA como prioridad
      El soporte de Jupyter en VS Code y Cursor es tan bueno que siento que para mi flujo de trabajo esto es mucho mejor que una solución dedicada solo a Jupyter Notebook
    • marimo es muy bueno. Lo uso desde hace meses y migré ahí la mayor parte de mi trabajo relacionado con notebooks. También incluye soporte de Copilot de forma nativa
      https://github.com/marimo-team/marimo
    • No sé si https://hex.tech también podría entrar aquí
    • Otro que falta es DataSpell: https://www.jetbrains.com/dataspell
  • La implementación que hicieron el equipo y los colaboradores es excelente. Es simple pero efectiva, y también me gusta que la mantuvieran como open source, a diferencia de otros Show HN que toman trabajo open source, lo cierran, le cambian un poco y afirman haber creado algo increíble
    Me da curiosidad si seguirán ampliándola con otras funciones. Funciones como Copilot o chat están buenas, pero creo que hoy los usuarios esperan que esas funciones vengan integradas en el IDE o estén disponibles como extensiones

    • Mantener Pretzel como open source era importante, sobre todo por la confianza. Mucha gente que usa Jupyter trabaja con datos sensibles, así que una herramienta de código cerrado difícilmente funcionaría
      Si no fuera una empresa muy grande y conocida, no confiaría los datos de mi empresa a una alternativa de Jupyter de código cerrado
      Estoy de acuerdo en que los IDE deberían ofrecer estas funciones. Pero los únicos IDE que soportan Jupyter Notebook son VSCode y PyCharm, y la mayoría de las extensiones de IA para VSCode no están optimizadas para trabajar con notebooks. Por ejemplo, según un amigo, GitHub Copilot tiene dificultades con el autocompletado de código que cruza distintas celdas
      Esto es solo el comienzo, y como pensamos crear muchas más funciones específicas para análisis de datos que no existen en ningún IDE, creo que hay espacio de sobra para una herramienta así
    • Parece que tomaron un proyecto con licencia BSD-3-Clause y lo cambiaron a licencia AGPLv3. No es lo mismo, pero se parece en cierto sentido a lo que te preocupaba
  • Soy Ramon, otro cofundador de Pretzel. Con base en los comentarios iniciales, ya estamos trabajando para agregar compatibilidad con LLM locales y Claude Sonnet 3.5, y responderé cualquier pregunta que tengan.

  • Github Copilot es la herramienta más útil que he encontrado en mucho tiempo, y que se pueda usar en Jupyter Notebooks me parece genial. Es una función que esperaba desde hace bastante, así que excelente trabajo.

    • También puedes abrir archivos de Jupyter Notebook en VS Code, y eso se vuelve otra forma de usar autocompletado con IA. No uso Jupyter lo suficiente como para saber si tiene sentido usar VS Code siempre.
    • Estoy de acuerdo. De hecho, intenté hacer que GitHub Copilot funcionara en Jupyter, pero GH no tiene una API oficial.
      Pasé tiempo haciendo ingeniería inversa de la implementación tomando como referencia la extensión de GH Copilot para neovim [1] y Zed [2], pero al final era demasiado inestable y engorroso.
      Mientras tanto, también descubrí que Codestral, a diferencia de los LLM generales, tiene una versión de relleno en medio (fill-in-the-middle), que ofrece un mejor equilibrio entre velocidad y calidad, así que decidí usar Codestral. Me inspiré en que continue.dev usa Codestral para el autocompletado con Tab.
      [1] https://github.com/github/copilot.vim
      [2] https://zed.dev/blog/copilot
  • Me da curiosidad saber qué limitaciones los obligaron a hacer un fork en lugar de crear una extensión.

    • Lo tocamos brevemente en el FAQ, pero para explicarlo un poco más: el objetivo es crear una herramienta moderna de programación literaria. A simple vista será muy parecida a Jupyter, pero con mejores funciones.
      Al principio pensábamos crear una herramienta nueva desde cero, pero como es muy difícil lograr que la gente cambie, teníamos que ir a donde ya están los usuarios: Jupyter.
      Si se tratara solo de esta función, aunque fuera difícil, se podría haber hecho como extensión, y nuestros primeros experimentos también empezaron como una extensión. Pero habría sido difícil controlar con precisión algunos comportamientos centrales de Jupyter, como crear una carpeta oculta para guardar archivos, tal como lo hacemos ahora. Aun así, creo que se podría haber creado una versión de Pretzel que funcionara al 95% como una extensión de Jupyter.
      La razón más importante es que, a futuro, queremos cambiar por completo el modelo de ejecución de código a uno basado en DAG para crear notebooks reproducibles. Por ejemplo, algo parecido a https://plutojl.org/.
      De la misma manera, queremos eliminar por completo CodeMirror y reemplazarlo con Monaco, el motor central del editor de VSCode, para ofrecer una experiencia tipo IDE dentro de Jupyter, y eso no es posible con una extensión.
  • No entiendo qué quieren decir con que “GitHub Copilot todavía no es compatible con Jupyter”. Llevo más de un año usando Copilot en archivos .ipynb de VS Code.

    • Como dijeron otros, VSCode tiene soporte para Copilot, pero los científicos de datos y, en especial, los analistas que no pasan la mayor parte del día en un editor de texto siguen usando Jupyter Lab o la aplicación Notebook.
      Al probar Codestral, pudimos obtener completados tan buenos como los de Copilot, a veces mejores, con mucha mejor velocidad y costo.
    • Creo que se refieren a Jupyter Notebook o Lab, no a ejecutarlo en VS Code.
    • Probablemente se refieren a la aplicación Jupyter Notebook, no al formato de archivo del notebook.
  • Todos estos editores se enfocan en programación, ¿hay alguna recomendación para tomar notas de forma más general?
    Quiero hacer cosas como ordenar notas muy crudas, reformatearlas según plantillas generales, aplicar cambios según prompts y hacer preguntas sobre una colección de notas.

  • No entiendo bien por qué esto resulta atractivo. Si realmente necesitas integración con IA, puedes usar VSCode y Jupyter y acceder a todo el ecosistema de extensiones. La idea no es mala, pero parece faltarle propósito.

    • Algunos de nosotros preferimos Jupyter o tenemos que usarlo.
  • El trabajo es básicamente una extensión de Jupyter (https://github.com/pretzelai/pretzelai/tree/main/packages/pr...); me pregunto por qué hicieron un hard fork de JupyterLab en vez de convertirlo en una extensión, como las otras que están en https://github.com/jupyterlab-contrib

    • Es una pregunta válida. Ya respondí aquí por qué hicimos el fork: https://news.ycombinator.com/item?id=40857807
      En resumen, las funcionalidades actuales podrían haberse implementado como extensión. Claro que ya hicimos varios cambios en el comportamiento central de Jupyter.
      Pero en el roadmap está hacer cambios mucho más grandes al propio modelo de ejecución de código, y eso no es posible con una extensión