Hace poco recibí un correo electrónico de un erudito de talento que me preguntaba cómo Botpress interactúa con LLMs.
Estaba escribiendo un artículo sobre cómo evitar la dependencia de un proveedor y quería saber si tal vez utilizábamos un marco como LangChain o Haystack.
Me complació compartir con él que hemos creado nuestras propias abstracciones que permiten a los constructores de Botpress interactuar con LLMs.
Dado el gran interés que suscita el tema, he querido hacer pública esta información. Puede ser útil para otros desarrolladores o para los usuarios de nuestra plataforma. Espero que te resulte tan interesante como a mí crearla.
Dos formas de interactuar con Botpress LLMs
Botpress ha creado sus propias abstracciones que funcionan de dos maneras:
1. Integraciones
Las integraciones tienen el concepto de acciones que tienen tipos específicos de entrada y salida.
Tenemos componentes de código abierto en la plataforma, para que la comunidad pueda crear sus propias integraciones, que pueden ser privadas o de uso público.
Así, los proveedores de LLM - OpenAI, Anthropic, Groq, etc. - cada uno tiene una integración. Esa es una forma en que nuestros usuarios pueden interactuar con ellos.
2. LLM interfaces de integración
Al concepto de integraciones añadimos el de "interfaces".
Se trata simplemente de definiciones de esquemas estándar que las integraciones pueden ampliar. Hemos creado un esquema estándar para LLMs.
Mientras una integración extienda este esquema, la integración se considerará un proveedor de LLM . Por lo tanto, funciona de inmediato en Botpress.
Estos son algunos ejemplos de las integraciones de Botpress para diferentes proveedores de LLM :
Disponemos de interfaces similares para text2image, image2text, voice2text, text2voice, etc.
Configuraciones de modelos
En Botpress Studio tenemos dos configuraciones generales: el "Mejor modelo" y el "Modelo rápido". Hemos comprobado que, en general, la mayoría de las tareas se ajustan fácilmente a uno de estos dos modos.
Pero además de la mera selección del modelo, descubrimos que los distintos proveedores divergían demasiado en cuanto a la llamada a las herramientas y los formatos de los mensajes como para poder cambiar fácilmente un modelo por otro y esperar buenos resultados.
El motor de inferencia Botpress
Por ello, creamos nuestro propio motor de inferencia, llamado LLMz, que funciona con cualquier modelo sin necesidad de realizar ningún cambio en las instrucciones (o con cambios muy mínimos). Y proporciona una mejor llamada a la herramienta y, a menudo, un rendimiento mucho mejor en términos de coste de tokens y viajes de ida y vuelta a LLM .
Este motor funciona con tipos typescript entre bastidores para las definiciones de herramientas, markdown para el formato de salida de mensajes y código, y un sandbox de ejecución nativo de LLM para la inferencia.
LLMz proporciona muchas optimizaciones y funciones de depuración necesarias para casos de uso avanzados como:
- Compresión de fichas de entrada
- Truncado inteligente de fichas
- Memoria-contexto optimizada para tokens
- Llamada a herramientas paralelas y compuestas
- Mezcla de varios mensajes + llamadas a herramientas en una sola llamada a LLM
- Herramientas totalmente seguras (entrada y salida)
- Sesiones de larga duración mediante serialización sandbox
- Burla, envoltura y trazado de herramientas
- Aislamiento completo de la ejecución en aislamientos ligeros V8 (permite ejecutar miles de ejecuciones simultáneas de forma rápida y muy barata).
- 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 las herramientas habituales.
En contra de los modelos de router ligeros
Hace tiempo que pensamos en construir un modelo de router ligero que se asentara sobre los modelos existentes y eligiera automáticamente el modelo adecuado para la tarea en cuestión.
Pero decidimos no hacerlo por múltiples razones:
1. Previsibilidad
La mayoría de nuestros clientes, como es comprensible, quieren resultados fiables y predecibles.
Así que la idea de un modelo de enrutador dinámico asusta un poco a los agentes de alto nivel. Aporta otra capa de imprevisibilidad a LLMs.
2. Velocidad
La latencia es muy importante para nuestros casos de uso. Para que el enrutador sea rápido, el modelo tiene que ser muy pequeño (y posiblemente más tonto) que los modelos a los que enrutará, probablemente un clasificador tradicional.
Aunque en general funcionan bien cuando se les entrena en tareas específicas, a) sus contextos cortos son un problema para las instrucciones largas y b) no consiguen generalizar a otras instrucciones fuera de aquellas en las que se les ha entrenado.
3. Modelo de supremacía o modelo de igualdad
Aunque los puntos de referencia digan lo contrario, en la práctica rara vez hemos visto modelos que superen a GPT-4o (hasta ahora).
Aún no está claro si LLMs rendirá realmente mejor en la tarea X que en la tarea Y a lo largo del tiempo, o si todos los LLMs acabarán siendo extremadamente buenos en la mayoría de las cosas. En este último caso, la selección de modelos no merecerá la pena.
Preparar el futuro LLMs con comentarios
LLMs será una mercancía en unos pocos años y la selección de modelos no será realmente una cosa.
Por esas razones, decidimos invertir nuestro esfuerzo en ofrecer un buen mecanismo para proporcionar ejemplos a LLMs .
Así que hemos creado un sistema para captar opiniones. Almacena "aprendizajes" para futuras ejecuciones. Y proporciona dinámicamente los aprendizajes más relevantes en el momento oportuno para futuras ejecuciones, con el fin de garantizar mejoras fiables y continuas a lo largo del tiempo.
A medida que LLMs avanza hacia un rendimiento cada vez mayor, estamos preparados y entusiasmados por sacarles el máximo partido para los usuarios de nuestra plataforma.
Índice
Manténgase al día sobre lo último en agentes de IA
Comparte esto en: