Mejores prácticas y patrones de diseño para soluciones IA con LLMs

En Mobiik, la empresa para la que colaboro, hemos sido testigos en los últimos meses de la creciente demanda de Modelos de Lenguaje de Gran Tamaño (LLMs) en soluciones de software para empresas. Ya estábamos acostumbrados a ofrecer servicios en la nube, pero los LLMs requieren que nos replanteemos cuáles son las mejores prácticas y patrones de diseño específicos para asegurar su adecuado funcionamiento y seguridad. A continuación, te presento algunas ideas y lecciones adquiridas en este terreno recientemente.

Mejores prácticas

1. Dimensionamiento de los servicios de IA y su consumo: La Inteligencia Artificial (IA) exige un mayor costo y recursos en comparación con otras soluciones. Por ejemplo, un solo servicio de IA puede tener un precio más alto que la infraestructura entera de otra aplicación tradicional. En el caso de los LLMs, el uso de texto tanto de entrada como de salida se mide por tokens (un token varía dependiendo del modelo, pero aproximadamente corresponde a una sílaba o una palabra corta), y a mayor número de tokens, mayor la inversión. Por ello, antes de implementar un LLM, es fundamental realizar un análisis de consumo de tokens, determinando el tipo, cantidad y tamaño de los documentos que se procesarán. Del mismo modo es necesario anticipar la cantidad de usuarios y sus interacciones concurrentes.

2. Seguridad: Para entornos empresariales, es recomendable utilizar versiones privadas de servicios de IA, como Azure OpenAI, en contraste con aplicaciones abiertas al público en línea, como la versión gratis de Chat GPT, ya que las primeras garantizan que la información procesada no se comparta con usuarios no autorizados; por ejemplo restringiendo el acceso al universo de la información a ciertos niveles o áreas de la organización. Además de implementar las medidas de seguridad básicas como la autenticación y el control del acceso por medio de roles, ahora es indispensable familiarizarse con los ataques comunes a LLMs, como la inyección de prompts o el filtrado de la información. Debemos considerar contramedidas como las que ya se encuentran documentadas y sugeridas por la OWASP (Open Worldwide Application Security Project).

3. Conciencia de las limitaciones: Nadie duda de que los LLMs son un paso tecnológico que representa un parteaguas, pero es importante estar conscientes de sus limitaciones. Los modelos tienen restricciones en términos de capacidad de procesamiento, inteligencia inherente y calidad de resultados. Si has pasado tiempo poniendo a prueba a algún LLM, sabrás que sí es posible confundirlo, y que en su ‘afán’ (si se puede decir que una IA tiene anhelos) por dar una respuesta, puede caer en lo que se conoce como alucinaciones, o información inventada. Por supuesto, hay modos de contrarrestar estos resultados no deseados en implementaciones profesionales, pero eso requiere tenerlos en el radar. Siempre hay que recordar que estos modelos están diseñados para asistir y no para reemplazar a los seres humanos, y son éstos quienes deben supervisar constantemente sus respuestas.

4. Dimensión Ética: Esto tiene implicaciones de responsabilidad sobre el uso de la herramienta que son los LLMs. Muchos modelos se entrenan con datos de Internet, que pueden ser inexactos o no tener licencia para su redistribución. Del mismo modo en que evaluaríamos críticamente el contenido de una página en línea antes de confiar en él, es esencial que los usuarios sean capacitados para manejar los LLMs y entender que facilitar su trabajo no significa renunciar a la aplicación de nuestros talentos o delegar decisiones que nos corresponden. Las fuentes de información sobre las que se basan los modelos no necesariamente fueron licenciadas o revisadas. En relación a este punto, se antoja restringir los documentos a los que tengan acceso los LLMs. Sin embargo, desafortunadamente esta restricción puede tener efectos inesperados, como el entorpecimiento del uso del lenguaje del modelo.


Patrones de diseño

Implementar LLMs no significa reinventar la rueda en lo que respecta a la arquitectura de software. Se integran en sistemas existentes, aunque requieran de consideraciones específicas como las mencionadas con anterioridad. Los recursos de IA disponibles en Azure o AWS son, a fin de cuentas, justamente eso: elementos adicionales dentro de una arquitectura compleja que se consumen como cualquier otra API.
Sin embargo, algunos patrones de diseño se perfilan como particularmente relevantes para estas implementaciones. Te presento algunos ejemplos, aunque la lista no es exhaustiva:

1. Retry: En caso de fallos o respuestas insatisfactorias del LLM, es útil tener un mecanismo que reintente las consultas automáticamente. Digamos que el usuario de un chatbot hizo una pregunta particularmente compleja, que requería de la recuperación de múltiples documentos para su respuesta. En el proceso, se superó el número de tokens permitido por el modelo. En este caso, la implementación debe contemplar un reintento con menos tokens.

2. Sharding: Si un prompt es demasiado largo o complejo, puede ser beneficioso dividirlo en partes más manejables y procesarlas individualmente en más de un consumo. Los modelos permiten el manejo de prompts a través de distintos roles, como el rol de sistema, usuario o asistente. Los implementadores pueden jugar con estos elementos para producir mejores resultados.

3. Strategy: Los algoritmos y respuestas pueden variar según quien haga la consulta. Si se trata de un administrador quien pide una tarea a un LLM, podría recibir información más detallada que un usuario regular, según las reglas de negocio.

4. Template method: Este patrón aplicado a LLMs implica el uso de distintos prompts para diferentes fases o pasos del proceso. Por ejemplo, podrían existir prompts específicos para la fase de diagnóstico, recomendación o ejecución. Recordemos que un LLM habilita todo tipo de tareas relativas al lenguaje; no sólo lo que se esperaría de un chatbot. Resumir, redactar, traducir, corregir estilo, detectar los puntos clave de un texto o incluso evaluar si un documento cumple con ciertas características, están al alcance de los LLMs. De este modo, las distintas necesidades de un flujo de negocio podrían cubrirse con el uso de un mismo modelo, pero aplicando prompts distintos.

En conclusión, mientras los LLMs ofrecen capacidades revolucionarias, su integración eficaz y ética en soluciones de IA requiere una comprensión profunda de sus características y limitaciones. Al adoptar estas mejores prácticas y patrones de diseño, podemos aprovechar al máximo su potencial mientras garantizamos seguridad, eficiencia y responsabilidad.

Evidentemente, el aprendizaje que estamos experimentando como usuarios e implementadores de soluciones es un trabajo en proceso. Sin duda que el futuro próximo tendrá mucho más que enseñarnos.

----

Andrés Hernández

Espero que este artículo te haya sido útil y te haya dado una mejor comprensión del tema. Si tienes alguna pregunta o comentario, no dudes en ponerte en contacto conmigo. Me gustaría ayudarte a alcanzar tus objetivos de tecnología de la información y a brindarte soluciones innovadoras y eficaces para tus proyectos. ¡Gracias por leer!