Groundwork

Cria um harness de prontidão para implantação (redação, avaliações a partir de falhas reais, gate de regressão em CI) em projetos de QA de documentos e extração, e expõe verificações de fundamentação, extração e prontidão para agentes.

Documentação

Groundwork

Harnesses de prontidão para implantação de padrões de IA.

Redação · avaliações a partir de suas falhas reais · um portão de CI que reprova fabricações

npm CI node license Glama MCP server

Website · Começando · Exemplos · Roteiro · Contribuindo · Changelog


Você tem um protótipo: seus documentos, um modelo, uma saída útil. O que você não tem é o aparato que o torna responsável por ser implantado — uma etapa prévia de privacidade, uma avaliação construída a partir de suas próprias falhas e um portão que impede que um pequeno ajuste de prompt implante um sistema que fabrica. Esse aparato geralmente exige um engenheiro de ML. O Groundwork o estrutura em seu lugar.

As unidades do Groundwork são padrões de implantação, não produtos — pense em módulos Terraform para implantações de IA confiáveis. groundwork init <archetype> estrutura o harness completo para um padrão:

ArquétipoO padrãoStatus
document-qadocumentos → recuperação → respostas fundamentadas → revisão humana✅ implantado
extractiondocumentos → campos estruturados → validação de esquema → revisão humana✅ implantado
síntese de pesquisaperguntas → evidências → síntese → revisão humanaplanejado — veja o roteiro

Cada verificação é determinística: mesmas entradas, mesmo resultado, sempre — sem juiz de LLM e sem chave de API para as próprias verificações.

Início rápido — 60 segundos, sem chave de API

git clone https://github.com/nickjlamb/groundwork.git && cd groundwork
npm install && npm run build
npm run demo          # document QA: the whole loop passes, fully offline
npm run demo:break    # the system starts fabricating — watch the gate go red
✗ GROUNDING demo-savings: ungrounded number "14" — not in the provided context
✗ GROUNDING demo-unanswerable-appeals: unanswerable question — the answer did not abstain

O mesmo loop para extração estruturada:

npm run demo:extraction         # documents → fields, every check green
npm run demo:extraction:break   # a guessed date of birth, a dropped field — red, by name
✗ EXTRACTION demo-referral: SCHEMA: /referral_date must be string
✗ EXTRACTION demo-referral: FABRICATED field "date_of_birth": document does not state it (got "12 April 1988")

Esse build vermelho é o produto: uma figura fabricada, um campo adivinhado ou uma abstenção falha se torna uma falha de CI, não uma reclamação de usuário.

Pronto para o seu próprio sistema?

npm install -D @pharmatools/groundwork
npx groundwork init                # document QA
npx groundwork init extraction     # structured extraction

Como funciona

Architecture: your repo (adapter, gold cases, config) flows into groundwork check (redaction pre-step, eval, results) which is compared against a committed baseline by a CI gate

Você editaO Groundwork executaO portão impõe
adapter.mjs — um arquivo: answer() para QA de documentos, extract() para extraçãoEtapa prévia de redação (Redacta) — identificadores se tornam tokens rotulados localmente, antes de qualquer enviocheck --baseline congela uma boa execução como piso
datasets/cases/*.json — casos de ouro a partir de perguntas e documentos reais, rotulados manualmenteA avaliação do arquétipo (OpenGATE) — QA de documentos: fatos ancorados · números rastreáveis ao contexto · abstenção. Extração: validade do esquema · precisão de campos vs. ouro · sem campos fabricadoscheck --ci na GitHub Action estruturada reprova qualquer PR abaixo dele
groundwork.config.json — configurações de arquétipo, redação, avaliação e portãoPerfil de custo — uso de tokens medido, economias em ordem de alavancagem (cache → lote → corte → roteamento)Um humano ainda revisa saídas de alto risco — o portão é um piso, não uma certificação

Para extração, uma escolha de esquema faz a maior parte do trabalho de segurança: a nulabilidade é o contrato de abstenção. Um campo que o sistema deve sempre encontrar é não anulável; um campo que o documento pode não declarar é anulável, e o sistema retorna null para ele — desconhecido → null, nunca adivinhado. Um valor adivinhado em um campo de ouro nulo falha pelo nome: FABRICATED field "date_of_birth": document does not state it.

Exemplos

ExemploO que mostraExecutar
demo/QA de documentos: o loop completo em um pequeno sistema local — e o portão capturando fabricação pelo nome. Zero rede.npm run demo / npm run demo:break
demo-extraction/Extração estruturada: validação de esquema, precisão de campos e o portão nomeando uma data de nascimento adivinhada e um campo obrigatório omitido. Zero rede.npm run demo:extraction / npm run demo:extraction:break
examples/claude-doc-qa/Um sistema real baseado em Claude: prompting somente a partir de documentos, cache de prompt, avaliações com chave, uso medido alimentando groundwork cost — além de uma API simulada para que todo o loop rode offline no CI.npm run example:mock (offline) / npm run example:check (ao vivo)
examples/claude-extraction/Claude preenchendo um esquema a partir de cartas de encaminhamento fictícias: desconhecido → null no contrato de prompt, o esquema como prefixo em cache e o portão capturando uma data de nascimento adivinhada — além de uma API simulada para CI offline.npm run example:extraction:mock (offline) / npm run example:extraction:check (ao vivo)

Comandos

groundwork init [archetype]      scaffold the harness for a pattern (document-qa, extraction)
groundwork check                 redaction self-test + the archetype's eval
groundwork check --baseline      freeze this run as the regression floor
groundwork check --ci            exit non-zero on failure or regression vs baseline
groundwork cost                  measured token usage + savings, in leverage order

Duas maneiras de aprender: docs/GETTING-STARTED.md é o passo a passo de referência (cerca de meia hora), e o curso cobre o mesmo terreno com lições orientadas por marcos — incluindo o teste de sabotagem, onde você quebra deliberadamente seu próprio sistema para provar que o portão o captura, e uma lição sobre o arquétipo de extração. O playbook estruturado (GROUNDWORK.md) vive dentro do seu repositório, onde sua equipe realmente o lerá.

Uso a partir do Claude

As mesmas verificações são fornecidas como um servidor MCP (groundwork-mcp, stdio) para que Claude Code, Cowork ou Claude Desktop possam executá-las conversacionalmente — check_readiness em um repositório, check_answer_grounding em uma única resposta, check_extraction em um único registro (sem necessidade de repositório), scaffold_harness, cost_summary:

{ "mcpServers": { "groundwork": { "command": "npx", "args": ["-y", "@pharmatools/groundwork", "mcp"] } } }

Há também uma Agent Skill (skills/groundwork-readiness/) que ensina um agente a executar o portão e relatar resultados honestamente — incluindo recusar-se a apresentar uma marca de verificação verde como certificação de segurança.

O que o Groundwork não é

O Groundwork é um piso forte, não uma garantia. Verificações determinísticas capturam as falhas que podem ser capturadas deterministicamente; elas não podem certificar um sistema de IA como seguro. Para saídas de alto risco — qualquer coisa que toque saúde, dinheiro, situação legal ou segurança — um humano deve revisar antes que a saída alcance a pessoa afetada. A extração aumenta os riscos silenciosamente: o registro alimenta decisões, então um campo errado é uma decisão errada. O playbook estruturado também diz isso, de propósito.

Projeto

  • Status — dois arquétipos implantados (QA de documentos, extração estruturada) de um total planejado de três. Profundidade antes de amplitude: cada padrão é finalizado adequadamente antes do próximo começar. Veja o roteiro.
  • Contribuindo — relatórios de bugs, padrões de casos de ouro e exemplos são especialmente bem-vindos: CONTRIBUTING.md.
  • Lançamentos — marcados no GitHub, versões no npm, histórico em CHANGELOG.md.
  • Construído sobre — OpenGATE (avaliação) e Redacta (privacidade), ambos de código aberto.

Licença

MIT. Tudo o que init estrutura em seu repositório é MIT-0 — seu, sem necessidade de atribuição.