Oito regras de validação garantem a qualidade do esquema. São executadas em código assim que a geração de esquemas por IA tiver montado a sua resposta — uma rede de segurança final sobre um pipeline que já se corrige a si próprio passo a passo.
A correção acontece onde o erro é cometido, não no fim. A geração é uma sequência de pequenas chamadas com uma única responsabilidade, e cada uma traz o seu próprio validador: verifica a resposta dessa chamada, mantém o que era válido e volta a pedir apenas o que ainda falta. Um modelo que responde em fragmentos converge, portanto, em vez de recomeçar do zero.
Apenas dois passos podem fazer falhar uma geração por completo: dar nome à entidade e encaminhar as propriedades para os domínios de especialidade. Tudo o resto tem um mecanismo de recurso determinístico, e é isso que torna os modelos pequenos utilizáveis aqui.
Nem todas as regras se aplicam tanto à geração de esquema como à edição por IA. As regras que comparam com os dados de entrada são ignoradas durante a edição porque pode adicionar ou remover campos intencionalmente:
| Âmbito | Regras aplicadas | Porquê |
|---|---|---|
| Geração | Todas as 8 regras | Os dados de entrada estão disponíveis para comparação |
| Edição por IA | Apenas as regras 2, 3, 4 e 5 | Sem dados de entrada; o utilizador pode modificar intencionalmente a estrutura |
O número de domínios de especialização não deve exceder o máximo calculado com base no seu número de propriedades. Isto impede que a IA crie demasiados domínios detalhados para esquemas pequenos.
Too many expertise domains: 6 defined, maximum is 3O máximo é calculado como floor(property_count / 6), com um mínimo de 1. Um esquema com 12 propriedades permite até 2 domínios.
Cada schema tem de definir pelo menos uma propriedade. Um schema vazio não pode ser usado para enriquecimento.
Schema must have at least one propertyIsto deteta casos em que a IA produz uma estrutura JSON válida mas se esquece de incluir quaisquer campos reais.
Cada tipo de propriedade tem de ser um dos tipos padrão do JSON Schema: string, number, integer, boolean, array, object ou null.
revenue: invalid type 'float'A IA por vezes inventa tipos como "float", "decimal" ou "date". Esta regra deteta-os e pede uma correção para um tipo válido.
Cada $ref tem de apontar para algo que existe: #/$defs/... para uma definição de entidade, #/$enums/... para um conjunto de valores. Referências pendentes quebram o pipeline de enriquecimento.
manufacturer: $ref '#/$defs/Company' references undefined definitionOs dois espaços de nomes são separados: uma referência #/$defs/ é uma relação com uma entidade aninhada, enquanto uma referência #/$enums/ restringe uma propriedade de texto a uma lista fechada de valores permitidos. Cada uma tem de ter uma entrada correspondente no seu próprio bloco.
O valor de especialização de cada propriedade tem de corresponder a um dos domínios de especialização definidos. Isto evita erros de digitação e inconsistências.
revenue: expertise 'finance' not in defined domains: ['financial_analyst']A IA pode usar "finance" em vez da chave definida "financial_analyst". Esta regra deteta a incompatibilidade para que a IA a possa corrigir.
As propriedades que não são objetos nem preservadas têm de ter uma atribuição de especialização. Isto garante que cada campo enriquecível é tratado por um domínio especialista.
revenue: expertise is required for non-object typesOs tipos de objeto estão isentos porque as suas propriedades filhas transportam a sua própria expertise. Os campos preservados estão isentos porque passam sem alterações.
O tipo de esquema de cada propriedade tem de corresponder ao tipo Python real do valor correspondente nos seus dados de entrada.
revenue: type mismatch - input is number but schema says 'string'Se o seu input tiver "revenue": 42.5, o schema deve usar o tipo "number" ou "integer", não "string". O validador é flexível: aceita "number" para inteiros e vice-versa.
Cada chave nos seus dados de entrada tem de aparecer como uma propriedade no schema gerado. Isto impede que a IA elimine campos silenciosamente.
Missing property from input: 'headquarters'Se o seu JSON de input tiver uma chave "headquarters", o schema gerado deve incluí-la. Isto garante uma cobertura completa dos seus dados.
A regra 7 (correspondência de tipos) utiliza inferência automática de tipos para comparar os seus valores de entrada com os tipos declarados no schema. A inferência é flexível para evitar falsos positivos:
| Valor de entrada | Tipo inferido | Também aceita |
|---|---|---|
| true / false | boolean | (apenas booleano) |
| 42 | integer | number |
| 3.14 | number | integer |
| "hello" | string | (apenas string) |
| [1, 2, 3] | array | (apenas array) |
| {"key": "val"} | object | (apenas objeto) |
Nota: os booleanos são verificados antes dos inteiros porque, em algumas linguagens, o booleano é um subtipo de inteiro. Esta ordenação impede que true seja inferido como um inteiro.
Esta tabela descreve o que o validador aceita, não o que a geração produz. Um valor de amostra de 3 não torna a propriedade um inteiro: os campos numéricos são entregues como number, a não ser que um passo dedicado confirme que a quantidade é genuinamente discreta e que nenhum valor observado o contradiz. Um número inteiro numa amostra não é prova de que as metades sejam impossíveis — e declarar integer indevidamente truncaria 6.2 para 6 numa base de dados consumidora.