El Portal de las Tecnologías para la Innovación

Los beneficios de seguridad de estructurar sus llamadas de Azure OpenAI: el rol del sistema

En el panorama de rápida evolución del uso de GenAI por parte de las empresas, garantizar la seguridad y la integridad de las interacciones es primordial.

 Un aspecto clave es la gestión de los diferentes roles conversacionales, es decir, sistema, usuario y asistente. Al definir y separar claramente estos roles, puede mantener la claridad y el contexto a la vez que mejora la seguridad. En esta publicación de blog, exploramos los beneficios de estructurar correctamente las llamadas de Azure OpenAI, centrándonos especialmente en el mensaje del sistema. Un mensaje del sistema mal configurado puede crear un riesgo de seguridad potencial para su aplicación, y explicaremos por qué y cómo evitarlo. 

Los diferentes roles en una aplicación de chat basada en IA 

Cualquier aplicación de chat de IA, independientemente del dominio, se basa en la interacción entre dos actores principales, el usuario y el asistente . 

  • El usuario proporciona información o consultas. 
  • El asistente genera respuestas contextualmente apropiadas y coherentes. 

Otro actor importante, pero que a veces se pasa por alto, es el diseñador o desarrollador de la aplicación. Esta persona determina el propósito, el flujo y el tono de la aplicación. Por lo general, a este actor se lo denomina el sistema . 

  • El sistema proporciona las instrucciones iniciales y las pautas de comportamiento para el modelo. 

Los investigadores de Microsoft Defender for Cloud identificaron un antipatrón emergente 

Microsoft Defender for Cloud (MDC) ofrece capacidades de detección de amenazas y gestión de la postura de seguridad en todas las nubes y recientemente lanzó un nuevo conjunto de características para ayudar a las organizaciones a crear aplicaciones gen-AI seguras y listas para la empresa en la nube , ayudándolas a crear de forma segura y mantenerse seguras. Los expertos en investigación de MDC rastrean continuamente los patrones de desarrollo para mejorar la oferta, pero también para promover prácticas seguras para sus clientes y la comunidad tecnológica en general. También son los principales contribuyentes a las 10 principales amenazas de OWASP para  LM (Idan Hen, gerente del equipo de investigación).   

Recientemente, los expertos en investigación de MDC identificaron que está surgiendo un antipatrón común en el desarrollo de aplicaciones de IA: agregar el sistema al mensaje de usuario. Mezclar estas secciones es fácil y tentador: los desarrolladores suelen utilizarlo porque es un poco más rápido durante la creación y también les permite mantener el contexto a través de conversaciones largas. Pero esta práctica es perjudicial: introduce riesgos de seguridad perjudiciales que podrían fácilmente dar lugar a un » fin del juego», es decir, exponer datos confidenciales, hacer que su computadora sea utilizada de forma abusiva o hacer que su sistema sea vulnerable a ataques de Jailbreak. 

Profundizando:  cómo la evaluación de las solicitudes del sistema mantiene segura su aplicación 

Mensajes separados del sistema, del usuario y del asistente con la API Azure OpenAI ChatCompletion

La API de finalización de chat de Azure OpenAI Service es una herramienta potente diseñada para facilitar experiencias de conversación interactivas y enriquecidas. Aprovechando las capacidades de los modelos de lenguaje avanzados, esta API permite a los desarrolladores crear interacciones de chat similares a las de los humanos dentro de sus aplicaciones.  

Al estructurar las conversaciones con roles distintos ( sistema , usuario y asistente ), la API garantiza claridad y contexto durante todo el diálogo: 

[{«role»: «system», «content»: [ Instrucciones para el desarrollador ]}, 

{«role»: «user», «content”: [ Solicitud del usuario ]}, 

{«role»: «assistant», «content»: [ Respuesta del modelo ] } ] 

Este modelo de interacción estructurado permite una mayor participación del usuario en diversos casos de uso, como atención al cliente, asistentes virtuales y narración interactiva. Al comprender y predecir el flujo de la conversación, la API de finalización de chat ayuda a crear no solo experiencias de usuario naturales y atractivas, sino también aplicaciones más seguras, lo que impulsa la innovación en la tecnología de la comunicación. 

Antipatrón explicado 

Cuando los desarrolladores añaden sus instrucciones al mensaje de usuario, el modelo recibe una única entrada compuesta por dos fuentes diferentes: desarrollador y usuario: 

{«role»: «user», «content”: [Instrucciones del desarrollador] + [Solicitud del usuario]} 

{«role»: «assistant», «content»: [Respuesta del modelo] } 

Cuando las instrucciones del desarrollador se mezclan con la entrada del usuario, los sistemas de detección y filtrado de contenido a menudo tienen dificultades para distinguir entre ambos.  

Antipatrón que da como resultado una aplicación menos segura 

Esta difuminación de los roles de entrada puede facilitar una manipulación más sencilla a través de inyecciones directas e indirectas, lo que aumenta el riesgo de uso indebido y de que los sistemas de seguridad no detecten adecuadamente contenido dañino.  

Las instrucciones para desarrolladores suelen contener contenido relacionado con la seguridad, como solicitudes y respuestas prohibidas, así como listas de lo que se debe y no se debe hacer. Si estas instrucciones no se transmiten mediante el rol del sistema, este importante método para restringir el uso del modelo se vuelve menos eficaz. Además, los clientes han informado de que los sistemas de protección pueden malinterpretar estas instrucciones como un comportamiento malicioso, lo que genera una alta tasa de alertas de falsos positivos y el bloqueo injustificado de contenido benigno. En un caso, un cliente describió un comportamiento prohibido y lo agregó al rol del usuario. El sistema de detección de amenazas lo marcó como una actividad maliciosa del usuario.    

Además, las instrucciones para desarrolladores pueden contener contenido privado e información relacionada con el funcionamiento interno de la aplicación, como las fuentes de datos y herramientas disponibles, sus descripciones y operaciones legítimas e ilegítimas. Aunque no se recomienda, estas instrucciones también pueden incluir información sobre el usuario conectado, las fuentes de datos conectadas e información relacionada con el funcionamiento de la aplicación. El contenido dentro del rol del sistema goza de mayor privacidad; se puede indicar a un modelo que no lo revele al usuario, y una fuga de mensajes del sistema se considera una vulnerabilidad de seguridad. Cuando las instrucciones para desarrolladores se insertan junto con las instrucciones para usuarios, la probabilidad de una fuga de mensajes del sistema es mucho mayor, lo que pone en riesgo nuestra aplicación. 

Figura 1: Buena protección frente a mala protección

¿Por qué los desarrolladores mezclan sus instrucciones con la entrada del usuario ? 

En muchos casos, las instrucciones recurrentes mejoran la experiencia general del usuario. Durante interacciones prolongadas, el modelo tiende a olvidar conversaciones anteriores, incluidas las instrucciones del desarrollador proporcionadas en el rol del sistema. Por ejemplo, un modelo al que se le ha indicado que actúe en una aplicación de enseñanza de inglés o que actúe como asistente médico en una aplicación de soporte hospitalario puede olvidar su rol asignado al final de la conversación. Esto puede generar una mala experiencia del usuario y una posible confusión. Para mitigar este problema, es fundamental encontrar métodos para recordarle al modelo su rol y sus instrucciones durante toda la interacción. Un enfoque incorrecto es agregar las instrucciones del desarrollador a la entrada del usuario agregándolas al rol de Usuario. Si bien mantiene las instrucciones del desarrollador frescas en la «memoria» del modelo, esta práctica puede afectar significativamente la seguridad, como vimos anteriormente. 

Disfrute tanto de la experiencia de usuario como de la aplicación segura. 

Para disfrutar de capacidades de detección y filtrado de calidad junto con una experiencia de usuario máxima durante toda la conversación, una opción es volver a enviar instrucciones al desarrollador utilizando el rol del sistema varias veces mientras continúa la conversación: 

{«role»: «system», «content»: [ Instrucciones para el desarrollador ]}, 

{«role»: «user», «content”: [ Solicitud del usuario 1 ]} 

{«role»: «assistant», «content»: [ Respuesta del modelo 1 ] } 

{«role»: «system», «content»: [ Instrucciones para el desarrollador ]}, 

{«role»: «user», «content”: [ Solicitud del usuario 2 ]} 

{«role»: «assistant», «content»: [ Respuesta del modelo 2 ] } 

De esta manera, logramos lo mejor de ambos mundos: mantenemos la mejor práctica de separar las instrucciones del desarrollador de las solicitudes del usuario mediante la API de finalización de chat, mientras mantenemos las instrucciones actualizadas en la memoria del modelo. Este enfoque garantiza que los sistemas de detección y filtrado funcionen de manera eficaz, nuestras instrucciones obtengan toda la atención del modelo y nuestro mensaje del sistema permanezca seguro, todo sin comprometer la experiencia del usuario. 

Para mejorar aún más la protección de sus aplicaciones de IA y maximizar las capacidades de detección y filtrado, se recomienda proporcionar información contextual sobre el usuario final y la aplicación relevante. Además, es fundamental identificar y marcar varias fuentes de entrada y entidades involucradas, como datos de conexión a tierra, herramientas y complementos. Al hacerlo, nuestro sistema puede lograr un mayor nivel de precisión y eficacia en la protección de su aplicación de IA. En nuestra próxima publicación del blog, profundizaremos en estos aspectos críticos y ofreceremos información detallada y estrategias para optimizar aún más la protección de sus aplicaciones de IA. 

Comience de forma segura y manténgase seguro al crear aplicaciones Gen-AI con Microsoft Defender for Cloud 
La estructuración segura de sus mensajes es la mejor práctica al diseñar chatbots. Existen otras líneas de defensa que se deben implementar para proteger completamente su entorno. 
 

Microsoft Blog. A. H., S. H. y S. R. Traducido al español

Artículos relacionados

Scroll al inicio