Gerar uma recipe com um LLM¶
Escrever uma recipe à mão é simples quando conheces a
mini-linguagem de chaves, mas podes deixar um modelo de linguagem
fazer a primeira versão: colas um prompt seguido de uma amostra do teu XML e o
modelo devolve uma recipe .toml pronta a usar.
Caminho rápido: xmldiffreport-recipe scaffold¶
O package traz um prompt validado e um helper que lhe injecta o teu XML:
O prompt.txt passa a conter as instruções completas mais o teu XML — cola
num LLM capaz (ChatGPT, Gemini, …) e ele devolve a recipe. Ficheiro grande? Basta
um excerto representativo; usa --max-bytes para limitar o que é injectado:
Sem ficheiro, imprime só o prompt, para colares o XML tu mesmo:
O que o prompt pede ao modelo¶
defaults.unit— o contentor repetido que representa uma unidade lógica de mudança.[elements.<TAG>] key— a identidade natural por elemento, usando a mini-linguagem de chaves.defaults.ignore_attrs— atributos voláteis (versões, timestamps, ids, utilizador/host, contadores).inline = true— elementos cujo significado está nos filhos.
O modelo é instruído a devolver apenas uma recipe TOML e a nunca inventar atributos que não estejam na amostra.
Validar o resultado: xmldiffreport-recipe validate¶
Verifica sempre o ficheiro gerado antes de confiar nele:
xmldiffreport-recipe validate my-dialect.toml
# ✓ my-dialect.toml: valid recipe (exit 0)
# ✗ my-dialect.toml: 2 problem(s) (exit 1)
# - [elements.JOB] invalid key token(s): ['JOBNAME'] # devia ser "@JOBNAME"
# - unknown key in [defaults]: 'unite'
O validador não tem dependências e espelha o JSON Schema distribuído. Obtém o
schema (ou o seu caminho) diretamente da CLI — sem teres de vasculhar o
site-packages:
xmldiffreport-recipe schema # imprime o JSON Schema (envia p/ ficheiro / editor / CI)
xmldiffreport-recipe schema --path # imprime a localização em disco
xmldiffreport-recipe list # lista as recipes embutidas
xmldiffreport-recipe show controlm # imprime uma recipe embutida (para ler / copiar)
Depois é só usar¶
Se funcionar bem, considera contribuí-la como recipe embutida — ver Contribuir.