enzoferracini's picture
feat: publish software v0.2.0 evaluation and documentation
76c0aec verified
|
Raw History Blame Contribute Delete
4.22 kB
# Contrato CLI/JSON 0.2.0
`patchinsight predict --text '...' --json` usa BERT e exige um bundle local
ajustado. `--backend heuristic` seleciona explicitamente o baseline de regras.
Não existe fallback silencioso quando o modelo não carrega.
Entrada: string Unicode normalizada em NFC, espaços condensados, preservando
maiúsculas e acentos. Vazio, controle não espacial e mais de 20.000 caracteres
geram erro. O encoder limita a 192 tokens, incluindo tokens especiais.
Saída: um objeto JSON em stdout, validado por Pydantic. Erros de execução e
entrada retornam código 2 e JSON em stderr; erros de argumentos usam o formato
padrão do argparse em stderr. Logs das bibliotecas também podem ir para stderr.
| Campo | Significado |
|---|---|
| `components` | Exatamente os cinco rótulos; cada um com `state` e `score` |
| `state` | `present`, `absent` ou `unknown` |
| `score` | Sigmoid não calibrada por padrão; temperatura experimental opt-in; regra binária no baseline; `null` para desconhecido |
| `structures` | Zero ou mais de `XYZ`, `STAR`, `Action–Result`, `Action–Technology`, `Action–Method` |
| `task` | `present` se há objetivo/responsabilidade explícito, senão `unknown` |
| `technologies` | Nomes canônicos encontrados no léxico, sem extração de spans |
| `diagnostics` | Componentes ausentes/desconhecidos, `task_unknown`, `unclassified`, truncamento |
| `truncated` / `tokens` | Corte pelo tokenizer; tokens totais antes do corte; `null` no baseline |
| `versions` | `schema_version`, `model_version`, `rules_version` |
| `backend` / `score_kind` | Método efetivo e interpretação de seus valores |
Se houver truncamento, uma previsão negativa no prefixo fica `unknown` com
score `null`. Predições positivas referem-se ao trecho observado. A detecção
lexical de tecnologias e objetivo lê o texto normalizado completo; os
componentes semânticos do BERT leem o prefixo. Essa diferença pode limitar
a interpretação das combinações em entradas longas.
Regras, sempre exigindo componentes `present`:
| Estrutura | Componentes e auxiliares |
|---|---|
| XYZ | action + result + measurement + method |
| STAR | context + action + result + objetivo/responsabilidade explícito |
| Action–Result | action + result |
| Action–Technology | action + tecnologia do léxico |
| Action–Method | action + method |
Estas combinações verificam coocorrência, sem validar alinhamento causal,
ordem narrativa, qualidade ou adequação universal da estrutura. `context`
aproxima Situation; Task só é detectada por padrões explícitos como “meu
objetivo era” e “fui encarregado de”. A ausência desses padrões permanece
desconhecida. Não há score de qualidade ou ranking de pessoas. Na v0.2, a demo e o endpoint
HTTP são locais e restritos a loopback; não há API publicada.
O léxico usa limites de palavras, aliases como Postgres/K8s/sklearn e evita
Java dentro de JavaScript. Uma menção lexical não prova uso da tecnologia
pela pessoa; a estrutura Action–Technology é somente coocorrência.
## Extensões da v0.2
`versions.schema_version` e `rules_version` são 0.2.0; model_version continua a
identificar o checkpoint efetivo, inclusive 0.1.0 para os pesos preservados.
`score_kind` aceita binary_rule, sigmoid_uncalibrated e
temperature_scaled_experimental. A política opt-in exige método BERT e hash de
manifest do mesmo bundle; sua identificação aparece em diagnostics.
Quando uma política de confiança válida encaminhar componente para revisão,
state é unknown e score é null; nenhum match de estrutura pode usar unknown.
A política fornecida nesta rodada não atingiu a meta de desenvolvimento e tem
cutoff null, sem abstenção por confiança. Truncamento continua independente.
`batch` lê JSONL com text e id opcional; retorna envelope por linha com line,
id e prediction ou error. Código 1 indica erro por item; 2 erro global. O
carregamento ocorre uma vez e as previsões válidas são agrupadas. Limites,
timeout cooperativo e formato HTTP: [v02.md](v02.md).
A inferência em lote usa o mesmo contrato de componentes da inferência única.
O timeout entre lotes não interrompe inferência ativa ou stdin bloqueado.