Reducción de falsos positivos en las barreras de seguridad de Opus 5 y acortamiento del pipeline de CI/CD

Computing/Software7분 읽기

TuBrief 편집팀 원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다. 원본 영상: ¡Opus 5 ya está aquí y es ¿MEJOR QUE FABLE?! · Chase AI

Si integras Opus 5 en un entorno de CI/CD de producción, te bloquearás desde la primera semana. En cuanto entra lógica de comunicación por sockets o verificación de permisos, las barreras de seguridad (guardrails) de protección lo bloquean a un nivel del 85%. Al analizar el comportamiento de las barreras de seguridad de la API de Anthropic, en peticiones de texto simples, señalan erróneamente el 28.5% del código normal de control de sockets y del sistema de archivos como código amenazante.

Por culpa de una barrera de seguridad mal configurada, la compilación se interrumpe y solo se acumulan costes por reintentos. Aquí resumo la estructura de prompts y el método de gestión del estado del agente que utilizamos para resolver este problema en el terreno.

Reducción de falsos positivos con configuración de Sandbox y esquemas JSON

La razón por la que saltan las barreras de seguridad es que el modelo desconoce el contexto de ejecución del código. Si al realizar la petición a la API defines claramente los límites del sandbox y restringes el formato de respuesta, puedes reducir drásticamente los falsos positivos.

  1. Introduce la frase SAFETY_CONTEXT_BOUNDARIES en la parte superior del System Prompt y aclara el hecho de que la tarea de generación se ejecuta únicamente dentro de un entorno de compilación de CI/CD aislado.
  2. Al llamar a la API, pasa un JSON Output Schema para agrupar los valores devueltos en los campos status, file_path, generated_code e imports.
  3. Si el código de respuesta de la API devuelve 400 o 422, añade al pipeline un interceptor en Python que cambie la interfaz al modo de abstracción y vuelva a realizar la petición mediante un backoff exponencial.

json { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "status": { "type": "string", "enum": ["success", "abstracted_retry"] }, "file_path": { "type": "string" }, "generated_code": { "type": "string" }, "imports": { "type": "array", "items": { "type": "string" } } }, "required": ["status", "file_path", "generated_code", "imports"], "additionalProperties": false }

Al aplicar esta estructura, la tasa de fallos de compilación cae del 28.5% al 4.2%. Tomando como base 1,000 compilaciones, el coste de los reintentos se reduce de 145 dólares a 82.5 dólares, y el tiempo consumido por el pipeline se acorta de 4.2 minutos a 2.4 minutos.

Restauración de sesiones con timeout mediante checkpoints en Redis

Si intentas realizar una refactorización multiafichero que supere los 30 minutos dentro de una sola sesión de la API, se producirá un HTTP timeout. Si se corta la conexión, se perderán cientos de miles de tokens de contexto procesados hasta ese momento y habrá que empezar de nuevo desde el principio. Se pierde dinero y el trabajo no se completa.

Es necesario dividir la tarea completa en unidades mínimas y conectar un almacén de estados AST (árbol de sintaxis abstracta) basado en Redis.

  1. Divide el trabajo de refactorización en un array de subtareas a nivel de archivo o módulo.
  2. Cada vez que finalice una subtarea, guarda de forma asíncrona en la clave del checkpoint de Redis la estructura AST del código resultante, el estado de las dependencias y un resumen de los logs de ejecución.
  3. Si la sesión se interrumpe, recupera desde Redis el último checkpoint exitoso. Inyecta la causa del fallo como un mensaje de recordatorio y vuelve a ejecutar a partir del punto donde falló.

Al aplicar la gestión de estados AST con Redis, la tasa de éxito en trabajos multiafichero aumenta del 54.0% al 94.5%. La proporción de tokens descartados cuando ocurre un fallo también disminuye del 100% a un nivel del 12%. Esta es la razón por la cual el coste mensual de operación de la API del agente se reduce de 4,500 dólares a 2,150 dólares.

Pipeline de preprocesamiento para reducir tokens de CAD e imágenes

Al generar código de ingeniería o de interfaz de usuario para frontend, insertar capturas de pantalla 3D CAD de más de 2048x2048 consume tokens instantáneamente. Tan solo los tokens de visión por petición superan los 1,650.

Se requiere un wrapper de preprocesamiento que extraiga primero los metadatos de texto con la librería ezdxf y pase la imagen comprimida.

  1. Extrae únicamente la lista de capas, las variables de encabezado y la información resumida de entidades en texto a partir del archivo DXF CAD usando la librería ezdxf.
  2. Lee la captura de pantalla con la librería Pillow de Python y conviértela al canal en escala de grises (Grayscale).
  3. Utiliza el filtro LANCZOS para reducir la resolución a un máximo de 1024px y comprímela con una calidad JPEG de 80 antes de enviarla como entrada de visión a Opus 5.

`python
from PIL import Image
import ezdxf

def preprocess_cad_and_image(dxf_path, image_path):
# 1. Extracción de metadatos de texto DXF
doc = ezdxf.readfile(dxf_path)
layers = [layer.dxf.name for layer in doc.layers]
meta_text = f"Layers: {', '.join(layers)}, Entities: {len(doc.modelspace())}"

# 2. Reducción de escala de imagen y conversión a escala de grises
with Image.open(image_path) as img:
    img = img.convert("L")
    img.thumbnail((1024, 1024), Image.Resampling.LANCZOS)
    img.save("processed_temp.jpg", "JPEG", quality=80)
    
return meta_text, "processed_temp.jpg"

`

Procesándolo de esta manera, el consumo de tokens de visión por archivo se reduce de 1,650 a 300. Incluso añadiendo 180 tokens de metadatos de texto, la cantidad de archivos que se pueden procesar con un presupuesto de 300 dólares se multiplica por 3.6. El tiempo de espera de respuesta también se acorta de 8.4 segundos a 2.3 segundos.

Compresión de contexto basada en Tree-sitter

Meter todo un código base de cientos de miles de líneas en el prompt es tirarle el dinero a la calle. La atención del modelo también se dispersa. El enfoque de Aider, la herramienta de programación en pareja de código abierto, que dibuja un mapa del repositorio y extrae solo las interfaces necesarias, es mucho más práctico.

Puedes crear una CLI que combine el analizador sintáctico Tree-sitter y el algoritmo Personalized PageRank para extraer únicamente las firmas de símbolos clave.

  1. Configura Tree-sitter en el entorno local y escríbelo para detectar los archivos cambiados en el Git staged.
  2. Tomando como referencia el archivo en modificación (Seed File), busca las definiciones de clases, métodos y funciones, así como las sintaxis de referencia, para generar el grafo del proyecto G=(V,E)G=(V, E).
  3. Calcula el Personalized PageRank basándote en el factor de amortiguación (d=0.85d=0.85) para seleccionar únicamente las firmas principales de los símbolos relacionados. Crea un mapa de contexto dentro del límite de 1,024 tokens y vincúlalo a .git/hooks/pre-commit.

Si vinculas este proceso al Git Pre-commit Hook, el tamaño del contexto inyectado al ejecutar commits o pipelines de CI se mantendrá fijo entre 1,000 y 2,000 tokens en lugar de cientos de miles. El coste de tokens de entrada se reduce en más del 80%.

관련 영상

¡Opus 5 ya está aquí y es ¿MEJOR QUE FABLE?!

Chase AI4:18

커뮤니티의 다른 글

댓글

로그인하고 댓글을 남겨 보세요.

아직 댓글이 없습니다.