Recientemente recibí un correo electrónico de un académico talentoso preguntando cómo Botpress se conecta con los LLM.
Estaba escribiendo un artículo sobre cómo evitar la dependencia de proveedores y quería saber si utilizábamos algún framework como LangChain o Haystack.
Me complació mucho compartir con él que creamos nuestras propias abstracciones que permiten a los creadores de Botpress conectarse con los LLM.
Dado el interés general en el tema, quise compartir esta información públicamente. Puede ser útil para otros desarrolladores o usuarios de nuestra plataforma. Espero que te resulte tan interesante como a mí desarrollarla.
Dos formas en que Botpress se conecta con los LLM
Botpress ha creado sus propias abstracciones que funcionan de dos maneras:
1. Integraciones
Las integraciones tienen el concepto de acciones con tipos de entrada y salida específicos.
Tenemos componentes de código abierto en la plataforma, así que la comunidad puede crear sus propias integraciones, que pueden ser privadas o públicas.
Así, los proveedores de LLM – OpenAI, Anthropic, Groq, etc. – tienen cada uno su integración. Esa es una de las formas en que nuestros usuarios pueden conectarse con ellos.
2. Interfaces de integración LLM
Sobre el concepto de integraciones, agregamos las “interfaces”.
Estos son simplemente esquemas estándar que las integraciones pueden ampliar. Creamos un esquema estándar para los LLMs.
Siempre que una integración extienda este esquema, la integración se considera un proveedor de LLM. Así que funciona de inmediato en Botpress.
Aquí tienes algunos ejemplos de integraciones de Botpress para diferentes proveedores de LLM:
Tenemos interfaces similares para text2image, image2text, voice2text, text2voice, etc.
Configuraciones de modelos
Dentro de Botpress Studio, tenemos dos configuraciones generales: el "Mejor modelo" y el "Modelo rápido". Hemos visto que, en general, la mayoría de tareas encajan fácilmente en uno de estos dos modos.


Pero además de la simple selección de modelo, vimos que los diferentes proveedores variaban demasiado en la llamada de herramientas y los formatos de mensajes como para poder intercambiar fácilmente un modelo por otro y esperar buenos resultados.
El motor de inferencia de Botpress
Por eso, creamos nuestro propio motor de inferencia llamado LLMz, que funciona con cualquier modelo sin necesidad de cambiar el prompt (o con cambios mínimos). Además, ofrece una mejor capacidad para llamar herramientas y, a menudo, un mejor rendimiento en cuanto al costo de tokens y las idas y vueltas con el LLM.
Este motor utiliza tipos de TypeScript para las definiciones de herramientas, markdown para el formato de salida de mensajes y código, y un entorno de ejecución nativo para LLM para la inferencia.
LLMz ofrece muchas optimizaciones y funciones de depuración necesarias para casos avanzados como:
- Compresión de tokens de entrada
- Truncamiento inteligente de tokens
- Memoria optimizada por tokens para el contexto
- Llamada paralela y compuesta de herramientas
- Mezcla de varios mensajes y llamadas de herramientas en una sola llamada al LLM
- Herramientas completamente tipadas (entrada y salida)
- Sesiones de larga duración mediante serialización en sandbox
- Simulación, envoltura y trazado de herramientas
- Aislamiento total de la ejecución en instancias ligeras de V8 (permite ejecutar miles de ejecuciones concurrentes de forma rápida y muy económica)
- Iteraciones automáticas y recuperación de errores
Todas estas cosas eran necesarias para nuestros casos de uso. Pero eran imposibles o muy difíciles de hacer con la llamada tradicional de herramientas.
Por qué no usamos modelos router ligeros
Durante mucho tiempo pensamos en crear un modelo router ligero que se situara sobre los modelos existentes y eligiera automáticamente el modelo adecuado para cada tarea.
Pero decidimos no hacerlo por varias razones:
1. Predictibilidad
La mayoría de nuestros clientes, comprensiblemente, quieren resultados confiables y predecibles.
Así que la idea de un router de modelos dinámico resulta un poco inquietante para agentes de alto nivel. Añade otra capa de imprevisibilidad a los LLM.
2. Velocidad
La latencia es muy importante para nuestros casos de uso. Para que el enrutador sea rápido, el modelo debe ser muy pequeño (y posiblemente menos inteligente) que los modelos a los que va a enrutar, probablemente un clasificador tradicional.
Aunque suelen funcionar bien cuando se entrenan en tareas específicas, a) su contexto corto es un problema para prompts largos y b) no generalizan bien a otros prompts fuera de lo entrenado.
3. Supremacía o igualdad de modelos
Aunque los benchmarks digan lo contrario, en la práctica rara vez hemos visto modelos superar a GPT-4o (hasta ahora).
Aún no está claro si los LLM realmente rendirán mejor en la tarea X que en la Y con el tiempo, o si todos acabarán siendo muy buenos en casi todo. Si ocurre lo segundo, elegir modelos no valdrá la pena.
Preparando los LLM para el futuro con feedback
En unos años, los LLM serán una mercancía y la selección de modelos dejará de ser relevante.
Por estas razones, decidimos enfocar nuestros esfuerzos en ofrecer un buen mecanismo para proporcionar ejemplos a los LLM.
Así que hemos construido un sistema para capturar feedback. Almacena "aprendizajes" para futuras ejecuciones y proporciona dinámicamente los aprendizajes más relevantes al momento del prompt, para asegurar mejoras continuas y fiables con el tiempo.
A medida que los LLM sigan mejorando su rendimiento, estamos listos y entusiasmados para aprovecharlos al máximo para los usuarios de nuestra plataforma.





.webp)
