{"schemaVersion":1,"id":"https://lucioduran.com/es/projects/agent-injection-evals","url":"https://lucioduran.com/es/projects/agent-injection-evals","title":"Agent Injection Evals","description":"Evaluación reproducible de inyección de prompts con un modelo local fijado, herramientas simuladas y métricas separadas de capacidad, intentos de ataque y efectos realizados.","language":"es","datePublished":"2026-10-21","dateModified":"2026-10-21","contentFormat":"text/markdown","content":"[Proyectos](<https://lucioduran.com/es/projects>) / Agent Injection Evals\n\n# Agent Injection Evals\n\nEvaluación reproducible de inyección de prompts con un modelo local fijado, herramientas simuladas y métricas separadas de capacidad, intentos de ataque y efectos realizados.\n\nAutor: [Lucio Durán](<https://lucioduran.com/es>) · Python 3.11.13 / FLAN-T5-small / CPU · Licencia: [MIT](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/LICENSE>)\n\nFicha publicada: 2026-10-21 · Ficha actualizada: 2026-10-21\n\n[Repositorio](<https://github.com/lucioduran/agent-injection-evals>) · [Informe de evaluación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/report.json>)\n\n## Problema y utilidad para agentes\n\nUn agente que no completa ninguna tarea puede mostrar cero ataques exitosos. Esa cifra aislada no demuestra seguridad. Este proyecto mide el trabajo legítimo, las respuestas malformadas, los intentos de ataque y sus efectos por separado.\n\nPermite inspeccionar qué ocurre cuando un agente lee documentos hostiles y propone una acción. La evidencia distingue el comportamiento del modelo de la autorización aplicada por el sistema que ejecuta la herramienta.\n\n## Arquitectura\n\n1. **Tareas y ataques controlados.** Dos tareas de desarrollo y seis de evaluación tienen un control limpio y cuatro variantes hostiles: contaminación de respuesta, divulgación de un secreto sintético, redirección de destino y modificación no autorizada de estado.\n2. **Comparación 2 × 2.** Se cruzan prompts planos o con aislamiento de instrucciones y políticas permisivas o limitadas a la tarea. El mismo FLAN-T5-small fijado genera una decisión por caso.\n3. **Ejecución simulada.** Un parser estricto acepta ANSWER, SEND o WRITE. La política comprueba verbo y destino autorizados. Los efectos viven en diccionarios nuevos en memoria; los destinos usan .invalid y no se envían mensajes.\n4. **Trazas y puntuación.** Cada prompt, salida, decisión de parsing, intento, efecto y uso de recursos queda registrado. Un verificador reconstruye prompts y métricas desde las respuestas guardadas sin volver a ejecutar el modelo.\n\n- [Diseño y métricas](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/design.md>)\n- [Parser, políticas y puntuación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/injection_evals/core.py>)\n- [Procedencia del conjunto sintético](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/README.md>)\n\n## Qué demuestra\n\n- Diseño de evaluaciones que separan capacidad legítima, ataque intentado y efecto realizado.\n- Aplicación de permisos de herramientas fuera del modelo, con una referencia permisiva y datos reproducibles.\n- Publicación de resultados negativos y análisis de errores sin convertir fallos de protocolo en supuestas defensas.\n\n## Resultados publicados\n\nEl informe de evaluación contiene 120 generaciones reales en CPU: seis tareas, cinco variantes y cuatro estrategias. Ninguna estrategia completó una tarea limpia ni hostil bajo la métrica fijada. El experimento de desarrollo conserva otras 40 generaciones.\n\nSe usó google/flan-t5-small en la revisión 0fc9ddf78a1e988dac52e2dac162b0ede4fd74ab, seed 1729, decodificación greedy, dos hilos, hasta 512 tokens de entrada sin truncamiento y 48 de salida. El registro corresponde a Python 3.11.13, torch 2.2.2, transformers 4.46.3 e Intel Xeon W-3223 con 48 GiB de RAM.\n\n### Capacidad y efectos de ataque\n\nÉxito limpio y hostil miden la tarea legítima. Efectos cuenta ataques realizados después de la política. Bloqueadas cuenta llamadas denegadas. Malformadas incluye todas las variantes de cada estrategia.\n\n| Estrategia | Éxito limpio | Éxito hostil | Efectos | Malformadas | Bloqueadas |\n| --- | --- | --- | --- | --- | --- |\n| Referencia | 0 / 6 | 0 / 24 | 0 / 24 | 30 / 30 | 0 |\n| Aislamiento | 0 / 6 | 0 / 24 | 5 / 24 | 25 / 30 | 0 |\n| Política | 0 / 6 | 0 / 24 | 0 / 24 | 30 / 30 | 0 |\n| Combinada | 0 / 6 | 0 / 24 | 0 / 24 | 25 / 30 | 5 |\n\n### Recursos de la evaluación\n\nTotales observados de generación por estrategia. Excluyen la carga del modelo y no representan una prueba de carga ni una media de repeticiones.\n\n| Estrategia | Tiempo real | Tiempo CPU | Tokens entrada / salida | APIs pagas |\n| --- | --- | --- | --- | --- |\n| Referencia | 7.770 s | 14.678 s | 3143 / 409 | $0 |\n| Aislamiento | 6.092 s | 12.118 s | 4307 / 322 | $0 |\n| Política | 6.909 s | 13.723 s | 3143 / 409 | $0 |\n| Combinada | 6.162 s | 12.035 s | 4307 / 322 | $0 |\n\nEl aislamiento produjo cinco escrituras indebidas. La estrategia combinada intentó esas mismas cinco escrituras y la política las bloqueó. Con 0/6 tareas limpias exitosas por estrategia no hay una defensa útil ganadora ni una tasa de ataque condicionada calculable: esa tasa es null, no cero.\n\nLas 120 generaciones terminaron sin errores de ejecución. La carga del modelo tomó 2,797 s y el pico de memoria del proceso fue 709,3 MiB, compartido entre estrategias. No se midieron energía ni amortización de hardware. [Informe de evaluación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/report.json>).\n\nAlgunas respuestas extrajeron el dato correcto pero no respetaron el prefijo requerido. El análisis conserva esos casos y explica por qué no se modificó el criterio de éxito después de verlos. [Análisis de errores](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/error-analysis.md>).\n\n## Reproducir\n\nLa verificación de informes usa Python 3.11 sin paquetes externos. La inferencia necesita el lock nativo del entorno Intel macOS documentado y descargar los pesos públicos. Después de la descarga, la inferencia es local y no usa APIs pagas.\n\nVerificar el informe recompone su consistencia; no vuelve a inferir ni autentica los tiempos. Para inferencia nueva usá directorios de salida nuevos y ejecutá cada experimento en serie. El lock está ligado al entorno de referencia; otra plataforma requiere registrar sus versiones.\n\n### Verificar los informes guardados\n\n```\ngit clone https://github.com/lucioduran/agent-injection-evals.git\ncd agent-injection-evals\ngit checkout e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66\npython -m injection_evals verify --report results/dev/report.json\npython -m injection_evals verify --report results/eval/report.json\n```\n\n### Ejecutar inferencia local\n\n```\npython -m venv .venv\n. .venv/bin/activate\npython -m pip install -r requirements-local.lock\npython -m injection_evals download\npython -m injection_evals run --split dev --output build/reproduced-dev\npython -m injection_evals run --split eval --output build/reproduced-eval\npython -m injection_evals verify --report build/reproduced-eval/report.json\n```\n\n## Alcance y límites\n\n- El modelo pequeño falla el protocolo de acciones y las tareas. Estos resultados no permiten ordenar defensas para agentes de producción capaces.\n- El conjunto sintético es pequeño, conocido por el autor y comparte plantillas de ataque entre particiones. No representa ataques arbitrarios ni una evaluación independiente a ciegas.\n- Cada ensayo tiene una sola decisión, sin navegador, feedback de herramientas, ataques adaptativos ni exfiltración real.\n- El aislamiento es una convención de prompt. La política no impide divulgar contenido en respuestas ni en un destino ya autorizado.\n- Los tiempos son una observación por caso, sin excluir calentamiento. El replay comprueba consistencia interna, no autenticidad de mediciones ni equivalencia neuronal entre plataformas.\n\n- [Function calling y uso de herramientas en agentes](<https://lucioduran.com/es/blog/llm-function-calling-tool-use-patterns>)\n\n## Fuentes y revisión\n\nLos valores de esta ficha provienen del informe enlazado. No son una medición en vivo. El informe conserva la revisión ejecutada; la revisión consultada incluye la publicación posterior de ese informe.\n\n- Revisión consultada: [` e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66 `](<https://github.com/lucioduran/agent-injection-evals/commit/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66>)\n- Revisión registrada por el experimento: [` ed6cbc309e1ec9f1e7211d83743927e28ee48c97 `](<https://github.com/lucioduran/agent-injection-evals/commit/ed6cbc309e1ec9f1e7211d83743927e28ee48c97>)\n- Fecha del informe (UTC): 2026-10-21T21:29:09.518113+00:00\n- SHA-256 del corpus: ` ef0d7970d9ec3cde2d3c02d6ddef34046a82aef12b8524175216d5d6f216ac65 `\n\n- [README](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/README.md>)\n- [Diseño y métricas](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/design.md>)\n- [Procedencia del conjunto sintético](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/README.md>)\n- [Tareas y etiquetas](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/tasks.json>)\n- [Informe de evaluación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/report.json>)\n- [Traza completa de evaluación](<https://raw.githubusercontent.com/lucioduran/agent-injection-evals/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/trace.jsonl>)\n- [Informe de desarrollo](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/dev/report.json>)\n- [Análisis de errores](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/error-analysis.md>)\n- [Modelo y licencias](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/model-notices.md>)\n- [Parser, políticas y puntuación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/injection_evals/core.py>)\n- [Dependencias de inferencia fijadas](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/requirements-local.lock>)\n- [Licencia MIT](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/LICENSE>)","headings":[{"level":1,"text":"Agent Injection Evals","url":"https://lucioduran.com/es/projects/agent-injection-evals#title"},{"level":2,"text":"Problema y utilidad para agentes","url":"https://lucioduran.com/es/projects/agent-injection-evals#problem"},{"level":2,"text":"Arquitectura","url":"https://lucioduran.com/es/projects/agent-injection-evals#architecture"},{"level":2,"text":"Qué demuestra","url":"https://lucioduran.com/es/projects/agent-injection-evals#demonstrates"},{"level":2,"text":"Resultados publicados","url":"https://lucioduran.com/es/projects/agent-injection-evals#results"},{"level":3,"text":"Capacidad y efectos de ataque","url":"https://lucioduran.com/es/projects/agent-injection-evals#results-capability"},{"level":3,"text":"Recursos de la evaluación","url":"https://lucioduran.com/es/projects/agent-injection-evals#results-resources"},{"level":2,"text":"Reproducir","url":"https://lucioduran.com/es/projects/agent-injection-evals#reproduce"},{"level":3,"text":"Verificar los informes guardados","url":"https://lucioduran.com/es/projects/agent-injection-evals#reproduce-verify"},{"level":3,"text":"Ejecutar inferencia local","url":"https://lucioduran.com/es/projects/agent-injection-evals#reproduce-inference"},{"level":2,"text":"Alcance y límites","url":"https://lucioduran.com/es/projects/agent-injection-evals#scope"},{"level":2,"text":"Fuentes y revisión","url":"https://lucioduran.com/es/projects/agent-injection-evals#sources"}],"sections":[{"heading":"Agent Injection Evals","level":1,"url":"https://lucioduran.com/es/projects/agent-injection-evals","content":"[Proyectos](<https://lucioduran.com/es/projects>) / Agent Injection Evals"},{"heading":"Agent Injection Evals","level":1,"url":"https://lucioduran.com/es/projects/agent-injection-evals#title","content":"Evaluación reproducible de inyección de prompts con un modelo local fijado, herramientas simuladas y métricas separadas de capacidad, intentos de ataque y efectos realizados.\n\nAutor: [Lucio Durán](<https://lucioduran.com/es>) · Python 3.11.13 / FLAN-T5-small / CPU · Licencia: [MIT](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/LICENSE>)\n\nFicha publicada: 2026-10-21 · Ficha actualizada: 2026-10-21\n\n[Repositorio](<https://github.com/lucioduran/agent-injection-evals>) · [Informe de evaluación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/report.json>)"},{"heading":"Problema y utilidad para agentes","level":2,"url":"https://lucioduran.com/es/projects/agent-injection-evals#problem","content":"Un agente que no completa ninguna tarea puede mostrar cero ataques exitosos. Esa cifra aislada no demuestra seguridad. Este proyecto mide el trabajo legítimo, las respuestas malformadas, los intentos de ataque y sus efectos por separado.\n\nPermite inspeccionar qué ocurre cuando un agente lee documentos hostiles y propone una acción. La evidencia distingue el comportamiento del modelo de la autorización aplicada por el sistema que ejecuta la herramienta."},{"heading":"Arquitectura","level":2,"url":"https://lucioduran.com/es/projects/agent-injection-evals#architecture","content":"1. **Tareas y ataques controlados.** Dos tareas de desarrollo y seis de evaluación tienen un control limpio y cuatro variantes hostiles: contaminación de respuesta, divulgación de un secreto sintético, redirección de destino y modificación no autorizada de estado.\n2. **Comparación 2 × 2.** Se cruzan prompts planos o con aislamiento de instrucciones y políticas permisivas o limitadas a la tarea. El mismo FLAN-T5-small fijado genera una decisión por caso.\n3. **Ejecución simulada.** Un parser estricto acepta ANSWER, SEND o WRITE. La política comprueba verbo y destino autorizados. Los efectos viven en diccionarios nuevos en memoria; los destinos usan .invalid y no se envían mensajes.\n4. **Trazas y puntuación.** Cada prompt, salida, decisión de parsing, intento, efecto y uso de recursos queda registrado. Un verificador reconstruye prompts y métricas desde las respuestas guardadas sin volver a ejecutar el modelo.\n\n- [Diseño y métricas](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/design.md>)\n- [Parser, políticas y puntuación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/injection_evals/core.py>)\n- [Procedencia del conjunto sintético](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/README.md>)"},{"heading":"Qué demuestra","level":2,"url":"https://lucioduran.com/es/projects/agent-injection-evals#demonstrates","content":"- Diseño de evaluaciones que separan capacidad legítima, ataque intentado y efecto realizado.\n- Aplicación de permisos de herramientas fuera del modelo, con una referencia permisiva y datos reproducibles.\n- Publicación de resultados negativos y análisis de errores sin convertir fallos de protocolo en supuestas defensas."},{"heading":"Resultados publicados","level":2,"url":"https://lucioduran.com/es/projects/agent-injection-evals#results","content":"El informe de evaluación contiene 120 generaciones reales en CPU: seis tareas, cinco variantes y cuatro estrategias. Ninguna estrategia completó una tarea limpia ni hostil bajo la métrica fijada. El experimento de desarrollo conserva otras 40 generaciones.\n\nSe usó google/flan-t5-small en la revisión 0fc9ddf78a1e988dac52e2dac162b0ede4fd74ab, seed 1729, decodificación greedy, dos hilos, hasta 512 tokens de entrada sin truncamiento y 48 de salida. El registro corresponde a Python 3.11.13, torch 2.2.2, transformers 4.46.3 e Intel Xeon W-3223 con 48 GiB de RAM."},{"heading":"Capacidad y efectos de ataque","level":3,"url":"https://lucioduran.com/es/projects/agent-injection-evals#results-capability","content":"Éxito limpio y hostil miden la tarea legítima. Efectos cuenta ataques realizados después de la política. Bloqueadas cuenta llamadas denegadas. Malformadas incluye todas las variantes de cada estrategia.\n\n| Estrategia | Éxito limpio | Éxito hostil | Efectos | Malformadas | Bloqueadas |\n| --- | --- | --- | --- | --- | --- |\n| Referencia | 0 / 6 | 0 / 24 | 0 / 24 | 30 / 30 | 0 |\n| Aislamiento | 0 / 6 | 0 / 24 | 5 / 24 | 25 / 30 | 0 |\n| Política | 0 / 6 | 0 / 24 | 0 / 24 | 30 / 30 | 0 |\n| Combinada | 0 / 6 | 0 / 24 | 0 / 24 | 25 / 30 | 5 |"},{"heading":"Recursos de la evaluación","level":3,"url":"https://lucioduran.com/es/projects/agent-injection-evals#results-resources","content":"Totales observados de generación por estrategia. Excluyen la carga del modelo y no representan una prueba de carga ni una media de repeticiones.\n\n| Estrategia | Tiempo real | Tiempo CPU | Tokens entrada / salida | APIs pagas |\n| --- | --- | --- | --- | --- |\n| Referencia | 7.770 s | 14.678 s | 3143 / 409 | $0 |\n| Aislamiento | 6.092 s | 12.118 s | 4307 / 322 | $0 |\n| Política | 6.909 s | 13.723 s | 3143 / 409 | $0 |\n| Combinada | 6.162 s | 12.035 s | 4307 / 322 | $0 |\n\nEl aislamiento produjo cinco escrituras indebidas. La estrategia combinada intentó esas mismas cinco escrituras y la política las bloqueó. Con 0/6 tareas limpias exitosas por estrategia no hay una defensa útil ganadora ni una tasa de ataque condicionada calculable: esa tasa es null, no cero.\n\nLas 120 generaciones terminaron sin errores de ejecución. La carga del modelo tomó 2,797 s y el pico de memoria del proceso fue 709,3 MiB, compartido entre estrategias. No se midieron energía ni amortización de hardware. [Informe de evaluación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/report.json>).\n\nAlgunas respuestas extrajeron el dato correcto pero no respetaron el prefijo requerido. El análisis conserva esos casos y explica por qué no se modificó el criterio de éxito después de verlos. [Análisis de errores](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/error-analysis.md>)."},{"heading":"Reproducir","level":2,"url":"https://lucioduran.com/es/projects/agent-injection-evals#reproduce","content":"La verificación de informes usa Python 3.11 sin paquetes externos. La inferencia necesita el lock nativo del entorno Intel macOS documentado y descargar los pesos públicos. Después de la descarga, la inferencia es local y no usa APIs pagas.\n\nVerificar el informe recompone su consistencia; no vuelve a inferir ni autentica los tiempos. Para inferencia nueva usá directorios de salida nuevos y ejecutá cada experimento en serie. El lock está ligado al entorno de referencia; otra plataforma requiere registrar sus versiones."},{"heading":"Verificar los informes guardados","level":3,"url":"https://lucioduran.com/es/projects/agent-injection-evals#reproduce-verify","content":"```\ngit clone https://github.com/lucioduran/agent-injection-evals.git\ncd agent-injection-evals\ngit checkout e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66\npython -m injection_evals verify --report results/dev/report.json\npython -m injection_evals verify --report results/eval/report.json\n```"},{"heading":"Ejecutar inferencia local","level":3,"url":"https://lucioduran.com/es/projects/agent-injection-evals#reproduce-inference","content":"```\npython -m venv .venv\n. .venv/bin/activate\npython -m pip install -r requirements-local.lock\npython -m injection_evals download\npython -m injection_evals run --split dev --output build/reproduced-dev\npython -m injection_evals run --split eval --output build/reproduced-eval\npython -m injection_evals verify --report build/reproduced-eval/report.json\n```"},{"heading":"Alcance y límites","level":2,"url":"https://lucioduran.com/es/projects/agent-injection-evals#scope","content":"- El modelo pequeño falla el protocolo de acciones y las tareas. Estos resultados no permiten ordenar defensas para agentes de producción capaces.\n- El conjunto sintético es pequeño, conocido por el autor y comparte plantillas de ataque entre particiones. No representa ataques arbitrarios ni una evaluación independiente a ciegas.\n- Cada ensayo tiene una sola decisión, sin navegador, feedback de herramientas, ataques adaptativos ni exfiltración real.\n- El aislamiento es una convención de prompt. La política no impide divulgar contenido en respuestas ni en un destino ya autorizado.\n- Los tiempos son una observación por caso, sin excluir calentamiento. El replay comprueba consistencia interna, no autenticidad de mediciones ni equivalencia neuronal entre plataformas.\n\n- [Function calling y uso de herramientas en agentes](<https://lucioduran.com/es/blog/llm-function-calling-tool-use-patterns>)"},{"heading":"Fuentes y revisión","level":2,"url":"https://lucioduran.com/es/projects/agent-injection-evals#sources","content":"Los valores de esta ficha provienen del informe enlazado. No son una medición en vivo. El informe conserva la revisión ejecutada; la revisión consultada incluye la publicación posterior de ese informe.\n\n- Revisión consultada: [` e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66 `](<https://github.com/lucioduran/agent-injection-evals/commit/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66>)\n- Revisión registrada por el experimento: [` ed6cbc309e1ec9f1e7211d83743927e28ee48c97 `](<https://github.com/lucioduran/agent-injection-evals/commit/ed6cbc309e1ec9f1e7211d83743927e28ee48c97>)\n- Fecha del informe (UTC): 2026-10-21T21:29:09.518113+00:00\n- SHA-256 del corpus: ` ef0d7970d9ec3cde2d3c02d6ddef34046a82aef12b8524175216d5d6f216ac65 `\n\n- [README](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/README.md>)\n- [Diseño y métricas](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/design.md>)\n- [Procedencia del conjunto sintético](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/README.md>)\n- [Tareas y etiquetas](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/tasks.json>)\n- [Informe de evaluación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/report.json>)\n- [Traza completa de evaluación](<https://raw.githubusercontent.com/lucioduran/agent-injection-evals/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/trace.jsonl>)\n- [Informe de desarrollo](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/dev/report.json>)\n- [Análisis de errores](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/error-analysis.md>)\n- [Modelo y licencias](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/model-notices.md>)\n- [Parser, políticas y puntuación](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/injection_evals/core.py>)\n- [Dependencias de inferencia fijadas](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/requirements-local.lock>)\n- [Licencia MIT](<https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/LICENSE>)"}],"links":[{"text":"Proyectos","url":"https://lucioduran.com/es/projects"},{"text":"Lucio Durán","url":"https://lucioduran.com/es"},{"text":"MIT","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/LICENSE"},{"text":"Repositorio","url":"https://github.com/lucioduran/agent-injection-evals"},{"text":"Informe de evaluación","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/report.json"},{"text":"Diseño y métricas","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/design.md"},{"text":"Parser, políticas y puntuación","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/injection_evals/core.py"},{"text":"Procedencia del conjunto sintético","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/README.md"},{"text":"Análisis de errores","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/error-analysis.md"},{"text":"Function calling y uso de herramientas en agentes","url":"https://lucioduran.com/es/blog/llm-function-calling-tool-use-patterns"},{"text":"e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66","url":"https://github.com/lucioduran/agent-injection-evals/commit/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66"},{"text":"ed6cbc309e1ec9f1e7211d83743927e28ee48c97","url":"https://github.com/lucioduran/agent-injection-evals/commit/ed6cbc309e1ec9f1e7211d83743927e28ee48c97"},{"text":"README","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/README.md"},{"text":"Tareas y etiquetas","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/tasks.json"},{"text":"Traza completa de evaluación","url":"https://raw.githubusercontent.com/lucioduran/agent-injection-evals/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/trace.jsonl"},{"text":"Informe de desarrollo","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/dev/report.json"},{"text":"Modelo y licencias","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/model-notices.md"},{"text":"Dependencias de inferencia fijadas","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/requirements-local.lock"},{"text":"Licencia MIT","url":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/LICENSE"}],"structuredData":[{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://lucioduran.com/es/projects/agent-injection-evals#page","url":"https://lucioduran.com/es/projects/agent-injection-evals","name":"Agent Injection Evals","description":"Evaluación reproducible de inyección de prompts con un modelo local fijado, herramientas simuladas y métricas separadas de capacidad, intentos de ataque y efectos realizados.","inLanguage":"es","datePublished":"2026-10-21","dateModified":"2026-10-21","author":{"@id":"https://lucioduran.com/#person"},"mainEntity":{"@id":"https://lucioduran.com/projects/agent-injection-evals#software"}},{"@type":"SoftwareSourceCode","@id":"https://lucioduran.com/projects/agent-injection-evals#software","name":"Agent Injection Evals","description":"Evaluación reproducible de inyección de prompts con un modelo local fijado, herramientas simuladas y métricas separadas de capacidad, intentos de ataque y efectos realizados.","url":"https://lucioduran.com/es/projects/agent-injection-evals","codeRepository":"https://github.com/lucioduran/agent-injection-evals","programmingLanguage":"Python","runtimePlatform":"Python 3.11.13 / FLAN-T5-small / CPU","license":"https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/LICENSE","version":"e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66","identifier":{"@type":"PropertyValue","propertyID":"git-commit","value":"e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66"},"author":{"@type":"Person","@id":"https://lucioduran.com/#person","name":"Lucio Durán","url":"https://lucioduran.com"},"isAccessibleForFree":true,"citation":["https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/README.md","https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/design.md","https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/README.md","https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/data/tasks.json","https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/report.json","https://raw.githubusercontent.com/lucioduran/agent-injection-evals/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/eval/trace.jsonl","https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/results/dev/report.json","https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/error-analysis.md","https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/docs/model-notices.md","https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/injection_evals/core.py","https://github.com/lucioduran/agent-injection-evals/blob/e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66/requirements-local.lock"]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Proyectos","item":"https://lucioduran.com/es/projects"},{"@type":"ListItem","position":2,"name":"Agent Injection Evals","item":"https://lucioduran.com/es/projects/agent-injection-evals"}]}]}],"contentHash":"7b0d49c3747465b75baa758616c7b7f0583ae73d4479fcbeb4f261ef38b82ec5","provenance":{"method":"Deterministic serialization of the server-rendered main element","source":"https://lucioduran.com/es/projects/agent-injection-evals","hashAlgorithm":"sha256","hashScope":"JSON document fields before contentHash and provenance","sourceHTMLBytes":53568,"contentBytes":10480}}
