Ir al contenido

IDP — Build Classifier

Tipo: idp-build-classifier  ·  Paquete: IDP Activities v1.20.4  ·  Salida: object

Desde: v1.2.0

Construye el esquema con el que se identifica de qué tipo es un documento, a partir de la lista de taxonomías que conoces. Lo pasas por AI — Extract antes de extraer, y el playbook decide si sigue. En el Designer en español aparece como IDP — Construir clasificador.

Porque IDP — Ground no cubre este caso, y conviene entender por qué.

El grounding verifica “este texto está escrito en el documento”. No verifica “este documento es del tipo que yo creo”. Si le pasas una orden de compra a la taxonomía de una factura:

  • Si tienes suerte, el modelo devuelve null en todo y el documento entero va a revisión. Sale caro (una persona lo mira) pero no se guarda nada malo.
  • Si no la tienes, la orden de compra lleva un número que parece un número de factura. El modelo lo pone. Y el grounding lo confirma, porque ese texto sí está en el documento. Confianza alta, aceptado automáticamente, dato incorrecto guardado sin que nadie lo vea.

Ese segundo caso es el que justifica clasificar antes.

Valida cada taxonomía (las mismas reglas que IDP — Build Schema), comprueba que no haya dos con el mismo documentType y construye un JSON Schema con un enum de tipos que siempre incluye unknown. No llama al modelo: el log solo dice para cuántos tipos se construyó.

ParámetroTipoPor defectoDescripción
taxonomiesstring | List—Las taxonomías entre las que elegir: rutas de .json, el JSON como texto o los objetos. Una sola también vale. Su documentType y su description son lo que el modelo lee para distinguirlas.

Ninguno.

Devuelve un object con el JSON Schema, listo para pasárselo como schema a AI — Extract. La respuesta del modelo con ese esquema trae dos campos:

CampoQué es
documentTypeUno de los documentType de tus taxonomías, o "unknown".
reasonQué del documento le hizo decidir eso.

La lista de tipos sale de las propias taxonomías, así que no se desincroniza: añades un tipo nuevo y el clasificador lo conoce sin que toques nada. La description de cada taxonomía se le pasa al modelo como contexto para distinguirlos, que es otra razón para escribirla bien.

IDP — Build Classifier taxonomies = [asset("taxonomias/factura.json"), asset("taxonomias/orden-compra.json")] → output: clasificador
IDP — Load Document path = rutaDoc → output: doc
AI — Extract prompt = doc["text"]
schema = clasificador
model = "claude-haiku-4-5"
→ output: tipo
If condition = tipo["documentType"] == "factura-proveedor"
...extraer con la taxonomía de factura
Else
Log message = "Descartado: " + tipo["documentType"] + " — " + tipo["reason"]

Clasificar es barato: el documento entra una vez y la respuesta son dos campos, así que un modelo pequeño basta. Lo que ahorra de verdad es lo que evita — no pagar la extracción entera de un documento que no tocaba.

MensajeCausa y solución
'taxonomies' es obligatorio. / 'taxonomies' está vacío; no hay nada que distinguir.No se pasó ninguna taxonomía.
Dos taxonomías declaran el mismo documentType '…'. El modelo no puede distinguir dos tipos con el mismo nombre.Dos taxonomías con el mismo documentType (sin distinguir mayúsculas). Renombra una.
'taxonomy' no es un JSON válido: … / La taxonomía debe declarar un 'documentType'. / El campo '…' no tiene 'description'. …Una taxonomía no es válida. Ver los errores de IDP — Build Schema.