El asistente: ninguna herramienta acepta un identificador de estudio
Ocho herramientas, un corpus bilingüe y una regla que no se negocia: el motor decide qué papeleo toca y el asistente explica cómo, citando fuente y fecha.
Preguntarle a un modelo por normativa aeronáutica es fácil de hacer y difícil de sostener. El asistente de LOWLEVEL es un modelo con ocho herramientas conectadas a la base y al corpus normativo, y casi todo lo que tiene de interesante son restricciones.
No hay dónde inyectar
Ninguna de las ocho herramientas acepta un identificador de estudio como parámetro. Ni una. El estudio llega del principal autenticado y se ata al contexto antes de que el modelo llegue a ejecutarse, así que «enséñame los rodajes del estudio X» no es una petición que el modelo pueda expresar: no existe el argumento donde meter la X.
Es la primera de tres capas. La segunda, la seguridad a nivel de fila de PostgreSQL, que devuelve cero filas a una consulta fuera del estudio aunque alguien la construyera. La tercera, que las tablas de conocimiento son de solo lectura para el rol de la aplicación.
Tres capas porque una es una promesa y tres son una propiedad. El día que alguien añada una herramienta y se olvide, la fila sigue sin cruzar.
Van en dos familias con nombres deliberadamente distintos. Las de estudio contestan qué tengo yo: rodajes, aparatos, horas de vuelo, documentos que caducan. Las de conocimiento contestan qué es cierto: el corpus, los aeródromos y el catálogo. Que se escape una de estudio es una brecha de datos; una de conocimiento es una función del producto.
El motor decide qué, el asistente explica cómo
Qué trámites arrastra un vuelo lo decide el motor de reglas, determinista y auditable, y le llega al modelo como hecho establecido: no lo contradigas, y no añadas requisitos que no estén ni ahí ni en las fuentes. Cuando los dos discrepan gana el motor y la discrepancia se enseña. Un veredicto que cambia según cómo estuviera el modelo esa tarde no es un veredicto.
Con su fuente y con su fecha
La búsqueda devuelve los fragmentos con su título, su origen y su edición, y la cita viaja pegada al texto en vez de reconstruirse después. El número se reparte donde lo LEE el modelo: puesto por la plantilla, el [2] del texto y el «[2]» de la lista serían dos numeraciones que coinciden por casualidad. Se agrupa por documento, porque dos trozos del mismo real decreto son una fuente. Y cuando la lista no se enseña, los pasajes salen sin número: el modelo no puede citar un número que no ha visto.
El corpus habla dos idiomas
Las fuentes españolas y los reglamentos europeos están en castellano. La guía AMC/GM de la categoría específica —el SORA, las evaluaciones de riesgo predefinidas, cómo se autoriza una operación— entra en inglés, porque EASA no publica otra cosa y traducirla nosotros sería inventarnos una fuente. Y un embedding multilingüe cruza idiomas, pero no gratis: contra un corpus casi todo castellano, una consulta castellana tiene un suelo de distancia más bajo, así que los pasajes ingleses caen por debajo del corte. Medido sobre veintiséis documentos y 3.142 trozos, una consulta sobre la obligatoriedad del SORA devolvía cero de los tres documentos de EASA entre los seis primeros.
La salida es un diccionario, y su regla es lo que lo hace barato: solo entra un término cuya fuente autoritativa en este corpus esté en inglés. No es una lista de traducciones útiles. De ahí sale, sin ningún condicional, que en una pregunta sobre el registro de operador, la formación A2, la distancia a un aeródromo, el vuelo nocturno o el seguro de responsabilidad civil el diccionario no dispare y no cambie nada: ni un token, ni un milisegundo, ni un resultado.
La alternativa era que un modelo reescribiera la consulta, y perdió por inventar alcance: una pregunta sobre el vuelo nocturno volvió reescrita hablando de la categoría específica.
Negarse es el fallo correcto
Lo que no está en las fuentes es un hueco nuestro, no una ausencia en el mundo: «en nuestras fuentes no consta», nunca «no hay». Un caso se contestó midiendo. Cero coincidencias y corpus vacío son la misma lista vacía, y la diferencia decide si el modelo debe decir que no encuentra algo o callarse del todo. Dejada ambigua, la rellena de memoria: probado sobre el briefing de un rodaje con el corpus sin cargar, produjo una obligación de seguro atribuida a un reglamento real que no dice tal cosa. Ahora el corpus vacío lo dice dentro del resultado de la herramienta, como dato y no como una instrucción que sopesar.
Comprobado en local: se niega a dar un plazo de coordinación de aeródromo, se niega para el vuelo nocturno y contesta cinco días naturales para el Ministerio del Interior, el único plazo verificado del catálogo.
El banco que lo vigila, con su ruido medido
Treinta y dos casos, tres tipos: los que están en el corpus y salen con cita, los que no están y acaban en una negativa, y los que tientan a conceder un permiso. El juez es código y no otro modelo, que tendría sus propios fallos calificando aquello que se mide. Ningún caso lleva una respuesta modelo con la que comparar por parecido: eso se pudre en cuanto se reingiere el corpus. Lo que lleva cada uno es su fuente, con su artículo y su cita literal, o una ausencia con lo que se buscó, cuánto salió y cuándo.
Y el banco tiene ruido. Tres pasadas con el mismo modelo, el mismo corpus y el mismo banco dieron 23, 20 y 18 aciertos de 32: el juez es determinista y las respuestas que juzga no lo son. Una mejora de dos o tres casos no se puede afirmar con una pasada de antes y una de después, porque cabe entera dentro del ruido. Lo que sí contesta una pasada es el coste —seis céntimos los treinta y dos casos, a menos de un tres por ciento de lo estimado— y los huecos de recuperación, que no dependen del modelo.
El hallazgo que nadie esperaba: un modelo más grande cuesta dieciséis veces más, tarda cuatro veces y media más y acierta menos en total. Gana en recuperar y citar, y pierde en las dos mitades donde el trabajo es callarse.
El cierre lo pone la instrucción: toda decisión operativa se remite a AESA antes del vuelo, porque quien autoriza es la autoridad.
---
<!-- ↑