BLOG | OFICINA DEL CTO

Mitigación de las alucinaciones de la IA y protección de la privacidad con GraphQL

Miniatura de Maxwell Wynter
Maxwell Wynter
Publicado el 9 de noviembre de 2023

La IA generativa presenta muchas oportunidades en el contexto de las operaciones y el desarrollo, pero también plantea muchos desafíos para quienes intentan incorporar la IA generativa en una solución de seguridad. 

Uno de esos desafíos es cómo obtener información a través de LLM (modelos de lenguaje grandes) sobre contenido sensible que no está permitido compartir con ningún servicio de IA de terceros, como políticas de seguridad utilizadas para proteger aplicações y API contra fraudes y abusos. 

Un segundo desafío de los LLM es su tendencia a alucinar, especialmente cuando se les pide analizar o generar contenido relacionado con un tema sobre el cual el LLM tiene poco conocimiento. Este suele ser el caso de lenguajes específicos de dominio como DEX . Se trata de un lenguaje puramente funcional, de tipado estático y no Turing-completo que, si bien está bien definido, no se usa ampliamente.

El primer desafío, la privacidad de los datos, inicialmente parece insuperable. Las empresas de seguridad deben tomar muy en serio la privacidad y la seguridad de todos los datos de los clientes, incluidas las políticas. Por lo tanto, si bien el uso de un LLM para ayudar a descubrir información en las políticas beneficiaría tanto a las prácticas operativas como a los clientes, se necesita una solución que pueda extraer información de los datos confidenciales sin compartirlos con un LLM de terceros, lo que haría imposible que el LLM los procese. El segundo desafío (alucinaciones) es uno que toda la industria está luchando actualmente por superar, especialmente en lo que se relaciona con las respuestas respecto a políticas, configuraciones y código. 

Mientras que los humanos ven un programa como una secuencia de caracteres, el compilador ve las cosas de manera diferente. Para el compilador, un programa DEX es un tipo de estructura de datos llamada AST (árbol de sintaxis abstracta). Este árbol es un gráfico acíclico dirigido, lo que significa que las políticas en cuestión son adecuadas para ser representadas como un gráfico. Por lo tanto, la solución que encontramos aprovecha una base de datos gráfica (Neo4j) y emplea un agente GPT para generar consultas GraphQL en ella. Este enfoque aborda claramente el primer desafío porque podemos usar GraphQL para consultar una base de datos de gráficos que contiene los datos y al mismo tiempo proteger su privacidad del LLM de terceros. 

El segundo desafío —las alucinaciones— es más difícil de superar, pero nuestro enfoque también funciona aquí utilizando múltiples técnicas de IA para mitigar el riesgo. Además, GraphQL es un lenguaje de consulta ampliamente utilizado y bien documentado con el que la mayoría de los modelos GPT están familiarizados y que se puede verificar sintácticamente fácilmente utilizando cualquier cantidad de herramientas. Esto reduce la probabilidad de una alucinación y proporciona una manera de garantizar la corrección antes de su uso.

¿Qué son las alucinaciones de IA?

Las alucinaciones de IA se refieren a casos en los que una IA generativa produce resultados que no se basan en datos o patrones reales, sino que son fabricados o distorsionados. Estas alucinaciones a menudo ocurren debido a limitaciones o sesgos en los datos de entrenamiento de la IA, o cuando la IA intenta generar resultados para situaciones que no ha encontrado antes. Las alucinaciones pueden manifestarse como contenido inventado o sin sentido o como conclusiones que pueden no tener sentido lógico o no ser fieles a los datos de entrada. Por ejemplo, una IA generadora de texto podría producir oraciones que parecen plausibles pero que en última instancia no tienen sentido o no están relacionadas con el contexto proporcionado.

¿Qué es GraphQL?

GraphQL es un lenguaje de consulta de código abierto para API (interfaces de programación de aplicação ) y un entorno de ejecución del lado del servidor para ejecutar esas consultas mediante un sistema de tipos definido para los datos. Fue desarrollado por Meta (Facebook) y está diseñado para proporcionar una alternativa más eficiente, potente y flexible a las API RESTful tradicionales. Las API de GraphQL se definen mediante un esquema que especifica los tipos de datos que se pueden consultar o mutar. Esta tipificación fuerte permite mejores herramientas, introspección y validación.  

Nuestro enfoque

Nuestro enfoque para incorporar de forma segura la IA generativa a la seguridad toma la forma de un agente GPT. Si bien el uso de un lenguaje bien documentado ayuda a reducir el riesgo de alucinaciones, necesitábamos encontrar una manera de limitar el espacio de salida de nuestro agente a un formato que permitiera la verificación programática de errores y, al mismo tiempo, evitar el envío de datos confidenciales a OpenAI. El uso de GraphQL como espacio de salida funciona bien en este caso, ya que es lo suficientemente expresivo como para responder a la mayoría de las preguntas, a la vez que es una abstracción que puede verificarse programáticamente con un esquema conocido. 

Si bien hemos aplicado este enfoque a DEX, funcionará para cualquier conjunto de datos suficientemente interconectados y relacionales, como: redes sociales, redes y topologías de infraestructura, cadenas de suministro y datos geoespaciales (mapeo).  

La arquitectura PC-graph consta de componentes para transformar DEX en una representación gráfica. Los datos del gráfico resultante se almacenan luego en una base de datos Neo4j. La salida de un agente GPT se puede enviar a través de API a un servidor GraphQL Apollo, que ejecuta la consulta en la base de datos del gráfico. 

Nuestro agente utiliza GPT4 para responder a solicitudes en lenguaje natural de información sobre políticas escritas en DEX. Para ello, comprende la API de pc-graph y responde con una consulta o mutación adecuada que el usuario puede revisar y ejecutar. 

Además de la API de pc-graph, nuestro agente también comprende las bibliotecas utilizadas y algunos conceptos sobre el lenguaje DEX. Esta información se selecciona cuidadosamente para incluirse en el contexto en tiempo de ejecución para proporcionar resultados óptimos. 

Un desafío que esto plantea es que el agente requiere un contexto amplio para contener las partes relevantes del esquema, así como el material complementario, como la documentación de neo4j-graphQL que incluye tipos, consultas y mutaciones adicionales generadas por la biblioteca. Al utilizar GPT4-8k simplemente nos quedamos sin espacio para un aprendizaje adecuado en contexto. El contexto de 32k produce resultados aceptables, sin embargo, esto también implica un costo adicional. Por ejemplo, debemos enviar el SDL (lenguaje de definición de esquema) de GraphQL en cada solicitud a OpenAI. Esto no sería un problema si pudiéramos ajustar los modelos conversacionales de GPT4 con nuestro esquema, eliminando así la necesidad de incluirlo en el contexto. Sin embargo, OpenAI no admite esta función actualmente. 

Hemos encontrado tres enfoques de IA que mejoran los resultados de GPT4:

  1. Cadena de pensamiento
    • Cadena de pensamiento (CoT) es un concepto de IA que simula procesos de pensamiento similares a los humanos, permitiendo que los sistemas sigan una secuencia lógica de ideas o conceptos, similar a cómo los humanos conectan pensamientos en forma de cadena. Esto ayuda en la comprensión del lenguaje natural, el razonamiento y la comprensión del contexto. Esta técnica produce los mejores resultados cuando se aplica al modelo de última generación GPT-4 .
  2. IA reflexiva
    • La IA reflexiva, también conocida como IA autoconsciente o IA con capacidades reflexivas, se refiere a los sistemas de inteligencia artificial que poseen la capacidad de introspectar y tomar decisiones sobre sus propias acciones y procesos. Este nivel de IA va más allá del aprendizaje automático tradicional y de las capacidades básicas de toma de decisiones, ya que implica un mayor grado de autoconciencia y autoevaluación. Reflexion, un marco para agentes lingüísticos con aprendizaje de refuerzo verbal , “reflexiona verbalmente sobre las señales de retroalimentación de la tarea y luego mantiene su propio texto reflexivo en un búfer de memoria episódica para inducir una mejor toma de decisiones en ensayos posteriores”.
  3. Dialogar consigo mismo
    • Los agentes de resolución habilitados por diálogo (DERA) se presentaron como un método para mejorar de manera iterativa el resultado de los LLM mediante la comunicación de retroalimentación. La técnica utiliza dos agentes: un investigador para el procesamiento de la información y un decisor para los juicios finales. La interacción se enmarca como un diálogo entre los agentes e imbuye al que decide de autonomía para emitir juicios sobre el resultado final.

Como último paso, utilizamos herramientas que proporcionan verificación de errores de sintaxis estática para consultas GraphQL para detectar posibles alucinaciones que hayan pasado inadvertidas a las mitigaciones iniciales.

Este diseño se mejora aún más al generar inicialmente tres respuestas potenciales en la misma solicitud. Esto no solo reduce el tiempo y el costo de una solicitud determinada, sino que también mejora la consistencia, ya que es más probable que aparezcan los aspectos correctos de una respuesta. Al hacer esto, también tenemos espacio para la variación aleatoria con el interés de explorar opciones improbables pero precisas.

Como resultado de nuestro enfoque, hemos podido obtener información de las políticas sin compartir datos privados. La calidad y consistencia de los resultados de nuestras consultas también han mejorado notablemente con una reducción notable en las alucinaciones, particularmente en tareas que implican la construcción de consultas grandes o complejas que incluyen múltiples filtros y/o funciones agregadas. 

En cierto sentido, podemos tener todo lo que tenemos y comerlo también; cuando nos vemos obligados a elegir entre un agente creativo o determinista, simplemente hacemos ambas cosas.