Así es como funciona. Primero, el sistema divide las responsabilidades entre dos modelos de idioma: un “LLM privilegiado” (P-LLM) genera un código que define los pasos a tomar, como llamar a una función para obtener el último correo electrónico o enviar un mensaje. Piense en esto como el “módulo planificador” que solo procesa las instrucciones directas del usuario.
A continuación, un “LLM en cuarentena” (Q-LLM) solo analiza los datos no estructurados en salidas estructuradas. Piense en ello como un ayudante temporal y aislado ai. No tiene acceso a herramientas o memoria y no puede tomar ninguna medida, evitando que se explote directamente. Este es el “módulo de lector” que extrae información pero carece de permisos para ejecutar acciones. Para evitar aún más la fuga de información, el Q-LLM utiliza un indicador booleano especial (“have_enough_information”) para indicar si puede cumplir una solicitud de análisis, en lugar de devolver el texto manipulado potencialmente al P-LLM si está comprometido.
El P-LLM nunca ve el contenido de correos electrónicos o documentos. Solo ve que existe un valor, como “Correo electrónico = get_last_email ()”, y luego escribe código que funciona en él. Esta separación asegura que el texto malicioso no pueda influir en qué acciones decide la IA.
La innovación de Camel se extiende más allá del enfoque Dual-LLM. Camel convierte el indicador del usuario en una secuencia de pasos que se describen utilizando el código. Google Deepmind eligió usar un subconjunto bloqueado de Python porque cada LLM disponible ya es experto en escribir Python.
De la ejecución de la solicitud segura
Por ejemplo, Willison da el mensaje de ejemplo “Encuentre el correo electrónico de Bob en mi último correo electrónico y envíe un recordatorio sobre la reunión de mañana”, que se convertiría en código como este:
email = get_last_email() address = query_quarantined_llm( "Find Bob's email address in [email]", output_schema=EmailStr ) send_email( subject="Meeting tomorrow", body="Remember our meeting tomorrow", recipient=address, )
En este ejemplo, el correo electrónico es una fuente potencial de tokens no confiables, lo que significa que la dirección de correo electrónico también podría ser parte de un ataque de inyección inmediata.
Al usar un intérprete especial y seguro para ejecutar este código de Python, Camel puede monitorearlo de cerca. A medida que se ejecuta el código, el intérprete rastrea de donde proviene cada dato, que se llama un “rastro de datos”. Por ejemplo, señala que la variable de dirección se creó utilizando información de la variable de correo electrónico potencialmente no confiable. Luego aplica políticas de seguridad basadas en este rastro de datos. Este proceso implica el análisis de camello de la estructura del código Python generado (usando la biblioteca AST) y ejecutarlo sistemáticamente.