Requisito: Na onda da era dos grandes modelos de IA, várias indústrias estão adotando a IA para nos ajudar a analisar dados. Algumas são chamadas por meio de linguagens de programação. Queremos que grandes modelos de IA produzam dados estruturados em JSON. Como podemos verificar se as strings JSON geradas pelos modelos de IA correspondem aos tipos definidos pela nossa abordagem orientada a objetos?
JsonSchema.Net
Às vezes, você pode precisar verificar se o objeto JSON está corretamente formatado (com os tipos corretos de chave e valor), ou pode querer adicionar comentários aos dados. É aí que o esquema JSON é útil. Semelhante ao XML Schema, o JSON Schema define um padrão para dados JSON. O validador do Esquema JSON pode verificar se um determinado objeto JSON atende aos requisitos definidos pelo Esquema JSON e fornece à aplicação informações adicionais sobre os dados. Essa avaliação pode servir como um passo preparatório antes da desserialização e é muito útil.
Fonte:O login do hiperlink está visível. Documentação:O login do hiperlink está visível.
Atualmente, são conhecidas seis versões da especificação do Esquema JSON:
- Rascunho 3
- Rascunho 4
- Draft 6
- Rascunho 7
- Draft 2019-09
- Draft 2020-12
A equipe de Esquema JSON recomenda usar o Rascunho 7 ou 2020-12. JsonSchema.Net apoiar o Rascunho 6 e posteriores.
Tutorial básico
Definimos um objeto para uma pessoa e então geramos um esquema. O código é o seguinte:
A saída é a seguinte:
{ "tipo": [ "objeto", "nulo" ], "propriedades": { "Nome": { "tipo": [ "corda", "nulo" ] }, "E-mail": { "tipo": [ "corda", "nulo" ] }, "Idade": { "tipo": "inteiro" }, "Endereço": { "tipo": [ "arranjo", "nulo" ], "itens": { "tipo": [ "objeto", "nulo" ], "propriedades": { "Localização": { "tipo": [ "corda", "nulo" ] }, "CEP": { "tipo": "inteiro" } }, "obrigatório": [ "Localização", "CEPs" ] } } }, "obrigatório": [ "Nome", "E-mail", "Idade", "Endereço" ]
} Use o JsonSchema para verificar se uma string JSON está em conformidade com a estrutura do objeto. O código é o seguinte:
Como mostrado abaixo:
Usando o padrão construtor, o código é o seguinte:
(Fim) |