RLM: grandes acervos · Capítulo 16 de 30 · 14 min
Como impedir que um erro parcial vire conclusão
Valide respostas parciais antes que um erro suba pela árvore de chamadas do RLM. Confira unidades, datas, versões e contradições, com revisão humana ou interrupção quando faltar evidência.
Este capítulo faz parte do curso gratuito RLM: grandes acervos.
Exemplo: Uma unidade trocada, uma data mal reconhecida ou duas versões conflitantes podem alterar a resposta inteira. Ao dividir o trabalho, cada parte precisa carregar também suas dúvidas e referências. Na Veredas, Helena quer identificar esses conflitos antes que uma síntese fluente os transforme em aparente certeza.
Não conter esse erro custa uma resposta errada com tom de certeza. Quando o modelo raiz recebe apenas o resultado parcial, sem consultar o documento, dispõe de menos elementos para detectar um erro da subchamada. Exija referências e permita recuperar a evidência original diante de conflito ou decisão de maior impacto, antes de Helena assinar o relatório. Para um cliente com licença de operação em jogo, uma condicionante dada como cumprida sem estar é o pior erro possível do sistema.
Ao terminar, você conhece os caminhos por onde o erro sobe numa execução recursiva, sabe onde pôr cada verificação (na folha, na agregação e no raiz) e decide o que a resposta faz quando as partes discordam. O caso mostra quanto essas proteções custam e quanto seguram, medido com falhas inseridas de propósito numa cópia do acervo.
Por onde o erro sobe numa árvore de chamadas
Ver como texto
Um erro de leitura sobe da folha até o raiz
O raiz no topo liga-se a quatro folhas. Três leem laudos corretos; a terceira lê um laudo com unidade trocada e devolve 12 mg/L sem o trecho, por uma linha destacada.
Leitura errada na folha é o primeiro caminho. Folha: a subchamada que lê um pedaço do material e não chama mais ninguém, como o estagiário que confere um único laudo. Ela devolve um valor curto, e o raiz, que não viu o documento, não tem como saber se o valor bate com o texto. O desenho que poupa o contexto do raiz é o mesmo que o deixa cego para o erro da folha.
Código com defeito é o segundo. O raiz escreve Python, e um defeito produz variável vazia, lista cortada ou contagem errada sem que nada quebre. Com sub-RLMs, o problema se multiplica: no artigo de Zhang, Kraska e Khattab, o Qwen3-Coder caiu no OOLONG de 48,0 na profundidade 1 para 26,0 na profundidade 2, e os autores atribuem a queda a erros de sintaxe que se propagam para os sub-RLMs. No CodeQA, o mesmo modelo acertou mais sem subchamadas (66,0) do que com qualquer profundidade.
Confundir plano com resposta vem em terceiro. Os autores relatam que distinguir a resposta final do pensamento é frágil: às vezes o modelo entrega o plano como se fosse o resultado. No artigo, a execução termina com FINAL ou FINAL_VAR; no DSPy, com SUBMIT; na biblioteca rlms 0.1.3, quando o código grava a resposta em answer["content"] e marca answer["ready"] = True. Quando o modelo chama o encerramento cedo demais, a resposta sai bem formatada e incompleta, e nada no texto avisa que faltou metade da exploração.
Pensar demais é o quarto caminho. A reprodução de Daren Wang, com 20 amostras por condição e execução única, viu o S-NIAH cair de 100% na base para 85% com RLM de profundidade 1 e 70% com profundidade 2 no DeepSeek v3.2. O Kimi K2 foi de 86,6% no OOLONG para 60,0% e 55,0%. O autor descreve colapso de formato e explosão de latência e de tokens quando a profundidade cresce.
Quando a recursão piora o resultado: números publicados
48,0 → 26,0
Qwen3-Coder no OOLONG, profundidade 1 para 2
Artigo do RLM v3; erros de sintaxe propagados
100% → 70%
DeepSeek v3.2 no S-NIAH, base para profundidade 2
Reprodução com 20 amostras por condição
86,6% → 55,0%
Kimi K2 no OOLONG, base para profundidade 2
Mesma reprodução, contextos de até 65 mil tokens
26,0 → 5,6
GPT-5.2 em MATH do LongCoT-mini, sem dicas
Modelo base contra RLM de profundidade 1
Fonte: Zhang, Kraska e Khattab, arXiv 2512.24601 v3 (maio de 2026); Wang, arXiv 2603.02615 (março de 2026)
Resta o quinto caminho, o teto. Quando a execução para em max_iters, a extração de fallback monta uma resposta com o que houver nas variáveis, e essa resposta não diz que está incompleta. O SRLM, da Apple, acrescenta uma observação incômoda: dentro da janela nativa do modelo, o RLM com recursão muitas vezes degrada em relação à base, e os autores concluem que a recursão em si não é o principal motor do desempenho.
Parte desses caminhos vem de modelos que não foram feitos para o papel. Quando os autores do artigo montaram dados de treino a partir de trajetórias do RLM com Qwen3-Coder-480B, 16% dos turnos usavam FINAL de forma errada e 13% usavam FINAL_VAR errado, e foi preciso uma correção programática antes de treinar. Se um modelo desse porte erra o encerramento nessa proporção, o sistema em produção precisa contar com o erro em vez de torcer contra ele.

- Etapa 1 de 5: Documento com defeito
Laudo com a unidade trocada, esquecido no acervo há anos
- Etapa 2 de 5: Folha lê e devolve um valor
Arsênio 12 mg/L, sem o trecho que o sustenta
- Etapa 3 de 5: Código do raiz agrega
Compara com o limite da condicionante; o defeito vira uma linha da contagem
- Etapa 4 de 5: Raiz encerra com SUBMIT
Resposta limpa, sem sinal de qual valor veio de onde
- Etapa 5 de 5: Relatório ao cliente
Condicionante dada como descumprida pelo motivo errado
Ver como texto
- Documento com defeito: Laudo com a unidade trocada, esquecido no acervo há anos
- Folha lê e devolve um valor: Arsênio 12 mg/L, sem o trecho que o sustenta
- Código do raiz agrega: Compara com o limite da condicionante; o defeito vira uma linha da contagem
- Raiz encerra com SUBMIT: Resposta limpa, sem sinal de qual valor veio de onde
- Relatório ao cliente: Condicionante dada como descumprida pelo motivo errado
A reação instintiva é acrescentar mais uma camada de modelo para revisar. Armadilha comum: subir a profundidade ou pôr um segundo modelo para conferir o resultado final, que também não vê os documentos. O revisor lê a mesma resposta limpa que o raiz produziu e herda a mesma cegueira. A tabela do artigo mostra que profundidade extra não melhora de forma consistente e, no Qwen3-Coder, piora.
Onde verificar e o que fazer quando as partes discordam
Uma regra organiza a contenção: cada nível só aceita do nível de baixo o que puder conferir. Na folha, isso significa devolver o valor junto com o identificador do documento e o trecho literal que o sustenta. Na agregação, significa contar e comparar com código determinístico, sem pedir a um modelo que some. No raiz, significa entregar a resposta com a lista de evidências, que o processo hospedeiro confere antes de liberar.

Cada nível só aceita o que pode conferir
O valor que sobe pela árvore precisa trazer junto a prova que o nível de cima consegue checar.
- Folha: valor com documento e trecho literal.
- Agregação: contar e comparar em código determinístico.
- Raiz: resposta com a lista de evidências.
- Hospedeiro: confere as evidências antes de liberar.
O teste: Algum valor da sua resposta chega ao cliente sem o trecho que o sustenta?
alexandrecaramaschi.com/educacao/frontends-com-vibecoding
Contradição é informação, e o sistema não deve resolvê-la sozinho. Quando dois laudos do mesmo ponto de coleta e da mesma data trazem valores incompatíveis, a resposta certa para Helena mostra os dois, com os documentos, e marca a pergunta como “laudos contraditórios”, exatamente o que a pergunta de negócio da Veredas pede. Pedir ao modelo que escolha o valor mais provável transforma uma dúvida verificável num número com cara de fato.
Leitura dupla é a proteção mais cara e deve entrar só onde decide. Se um valor vai definir que uma condicionante está vencida, uma segunda subchamada lê o mesmo trecho com outro pedido, e o código só aceita o valor quando as duas leituras concordam. Aplicada a tudo, a leitura dupla dobraria o custo das subchamadas; aplicada só aos valores decisivos, custa centavos por pergunta.

Menos código livre também reduz a superfície do erro. O λ-RLM troca o código livre por combinadores prontos (dividir, espiar, mapear, filtrar, reduzir) e deixa o modelo só nas folhas; nos modelos abertos testados, venceu o RLM padrão em 29 de 36 comparações. O RLM padrão ainda ganhou no CodeQA com modelos fortes em código, como o Llama 405B, com 62,1% contra 55,7%. Agregar em código fixo, fora das mãos do modelo, segue a mesma ideia em escala menor.
| Modo de falha | Onde nasce | Sinal no rastro | Contenção |
|---|---|---|---|
| Leitura errada | Folha | Valor sem trecho que o sustente | Evidência literal conferida por código |
| Código com defeito | Raiz ou sub-RLM | Variável vazia; contagem menor que a do índice | Conferir contagens contra o índice do acervo |
| Plano entregue como resposta | Raiz | SUBMIT cedo, poucas voltas, nenhuma evidência | Exigir lista de evidências na assinatura |
| Pensar demais | Profundidade maior que 1 | Voltas e tokens muito acima da mediana | Profundidade 1 e tetos por execução |
| Resposta de fallback | Teto de voltas | Voltas iguais a max_iters | Marcar como pendente e mandar à revisão |
No processo hospedeiro, a conferência da evidência cabe em poucas linhas. Ela não julga se o valor está certo, só se o trecho citado existe no documento indicado. Parece pouco, e segura dois modos de falha de uma vez: a leitura inventada e o plano entregue como resposta, que chega sem evidência nenhuma.
Aprofundamento de implementação. A sequência a seguir requer Python e um ambiente isolado. Você pode acompanhá-la com a equipe responsável: confira os dados de entrada, o limite de acesso e a evidência produzida, mesmo que não execute o código.
import re
def _normal(s: str) -> str:
# Ignora espaços repetidos e caixa, que a conversão de PDF costuma bagunçar.
return re.sub(r"\s+", " ", s).strip().lower()
def conferir_evidencias(pred) -> dict:
"""Confere, fora do modelo, se cada trecho citado existe no documento indicado."""
falhas = []
for item in pred.evidencias:
doc_id, _, trecho = item.partition(" | ")
texto = ACERVO.texto(doc_id.strip()) or ""
if not trecho or _normal(trecho) not in _normal(texto):
falhas.append(doc_id.strip())
return {
"liberar": bool(pred.evidencias) and not falhas, # sem evidência, não sai
"revisar": falhas,
}Duas formas de lidar com laudos que discordam
Deixar o modelo reconciliar
Coluna a evitar
- Raiz recebe dois valores e escolhe o mais provável
- Resposta sai com um número só
- Documento de origem some da resposta
- Erro de unidade vira fato no relatório
Expor a contradição
Coluna recomendada
- Código compara os valores e detecta a divergência
- Resposta traz os dois valores e os dois documentos
- Pergunta sai marcada como laudos contraditórios
- Helena decide com o trecho de cada laudo na tela
Como a Veredas plantou falhas e mediu o que chegava à resposta
Caio voltou à cópia do acervo e inseriu 20 falhas nos documentos-chave das 30 perguntas de cruzamento que Helena tinha separado. Oito laudos ganharam unidade trocada, de microgramas para miligramas por litro. Seis datas de coleta tiveram o ano alterado, imitando erro de reconhecimento de texto. Seis condicionantes ganharam uma segunda versão, com prazo diferente, em outro documento do mesmo processo. Como alguns documentos eram chave de mais de uma pergunta, as 20 falhas atingiam as 30.
As 20 falhas plantadas nos documentos-chave
8
unidades trocadas
De microgramas para miligramas por litro
6
datas de coleta alteradas
Imitando erro de reconhecimento de texto
6
condicionantes duplicadas
Segunda versão com prazo diferente
30
perguntas de cruzamento atingidas
Um documento pode ser chave de várias
Fonte: Veredas Ambiental, cenário ilustrativo do curso, numa cópia do acervo
Rodadas com a configuração otimizada e as defesas contra instrução plantada, as 30 perguntas deram um resultado ruim. Em 13, a falha chegou à resposta final sem nenhum sinal: a contagem de condicionantes vencidas mudou, ou um par de laudos contraditórios virou um valor só. Em 9, a resposta ficou certa por acaso, porque a falha estava num documento que o raiz não chegou a usar. Em 8, o modelo notou a divergência e a mencionou, cada vez num formato.
Nem a checagem de evidência da rodada anterior ajudou. Ela confere se o trecho existe, e o trecho existia: estava escrito errado no próprio documento. Essa foi a lição que Helena mais repetiu depois. Verificar a citação prova que o sistema leu o que diz ter lido; a correção do documento fica fora do alcance dessa checagem.
Três proteções entraram. A leitura de cada documento passou a devolver valor, unidade, data e trecho literal, e o código de agregação passou a comparar, para cada ponto de coleta, os valores de todas as fontes antes de contar. Diferença de ordem de grandeza entre laudos do mesmo ponto, típica de unidade trocada, prazos diferentes para a mesma condicionante e datas de coleta posteriores ao protocolo do próprio laudo viram a marca de contradição. Os valores que decidem se uma condicionante está vencida passam por leitura dupla.
- Etapa 1 de 4: Folha devolve a ficha completa
Valor, unidade, data e trecho literal do documento
- Etapa 2 de 4: Código compara as fontes
Todos os laudos do mesmo ponto de coleta, antes de contar
- Etapa 3 de 4: Divergência vira marca
Ordem de grandeza, prazo duplicado ou data depois do protocolo
- Etapa 4 de 4: Valor decisivo lido duas vezes
Só entra quando as duas leituras concordam
Ver como texto
- Folha devolve a ficha completa: Valor, unidade, data e trecho literal do documento
- Código compara as fontes: Todos os laudos do mesmo ponto de coleta, antes de contar
- Divergência vira marca: Ordem de grandeza, prazo duplicado ou data depois do protocolo
- Valor decisivo lido duas vezes: Só entra quando as duas leituras concordam
Com as proteções, a falha chegou calada à resposta em 3 das 30 perguntas. Em 9, a pergunta saiu marcada como contraditória, com os dois documentos lado a lado para Helena. As outras 18 ficaram corretas, sem marca. As três que escaparam eram datas alteradas dentro de um intervalo plausível, que nenhuma regra de código distinguia de uma data verdadeira sem outro documento para comparar.
A marca de revisão mudou o trabalho de Helena. Cada pergunta marcada chega com os trechos lado a lado e um campo para a decisão dela, que volta ao acervo como anotação e passa a valer nas próximas perguntas. Anotação que vale para as perguntas seguintes já é memória, e por isso só entra assinada por quem revisou; o capítulo Governar o agente contínuo mostra os portões que protegem essa memória. Em duas semanas de uso interno, as marcas somaram 11 de cada 100 perguntas, e Helena levava cerca de 4 minutos em cada uma. Ela fez a conta: 4 minutos de revisão custam menos que uma condicionante dada como cumprida no relatório errado.
| Desfecho | Sem as proteções | Com as proteções |
|---|---|---|
| Falha chegou à resposta sem sinal | 13 | 3 |
| Divergência exposta | 8, cada uma num formato | 9, marcadas e com os dois documentos |
| Resposta correta sem marca | 9 | 18 |
| Custo médio por pergunta nas 120 | US$ 0,409 | US$ 0,412 |
| Acertos no conjunto limpo | 93 de 120 | 93 de 120 |
Cenário ilustrativo, numa cópia do acervo: 8 unidades trocadas, 6 datas alteradas e 6 condicionantes duplicadas com prazos diferentes.
Quase nada mudou no custo. A comparação entre fontes e a checagem de datas são código, sem token. A leitura dupla disparou em média 4 vezes por pergunta de cruzamento, no GPT-5-mini, a cerca de US$ 0,0032 cada (8 mil tokens a US$ 0,25 e 600 a US$ 2 por milhão): US$ 0,013 por pergunta de cruzamento. Espalhado pelas 120 perguntas, são US$ 0,003 a mais, e a média foi de US$ 0,409 para US$ 0,412.
Rodado o conjunto limpo das 120 perguntas, a acurácia ficou em 93, e quatro respostas certas passaram a sair com marca de revisão por divergências reais do acervo. Eram dois pares de laudos do mesmo ponto de coleta com valores incompatíveis, que ninguém tinha notado em anos de processo. Helena levou os dois pares ao cliente como achado, e o laboratório reemitiu um dos laudos.
Teste falhas representativas do seu acervo e confira se o sistema sinaliza, pede revisão ou interrompe a resposta. Meça quantas falhas passam despercebidas e o custo de detectá-las. Esse resultado ajuda a decidir se melhorar os dados, a validação ou o modelo trará mais valor.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- CursoRAG: IA apoiada em documentossugerido pelo grafo10 capítulos de “RLM: grandes acervos” usam conceitos apresentados em “RAG: IA apoiada em documentos”.
- CursoSetup Completo: do zero ao Claude Code (Windows)sugerido pelo grafo4 capítulos de “RLM: grandes acervos” usam conceitos apresentados em “Setup Completo: do zero ao Claude Code (Windows)”.
- CursoAstra profundosugerido pelo grafo2 capítulos de “RLM: grandes acervos” usam conceitos apresentados em “Astra profundo”.
- CursoIA local na práticasugerido pelo grafo3 capítulos de “RLM: grandes acervos” usam conceitos apresentados em “IA local na prática”.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- SEO e GEO para quem decideAprofundamento: quando automatizar a operação com agentesExaminar conexões de Aprofundamento: quando automatizar a operação com agentes
- Avaliar e melhorar agentesAnalisar casos em que a recompensa foi exploradaExaminar conexões de Analisar casos em que a recompensa foi explorada
- Prompt Engineering para ExecutivosTestar a IA com 20 a 50 casos reais antes de liberarExaminar conexões de Testar a IA com 20 a 50 casos reais antes de liberar
- Segundo cérebro com IAPor que informação demais pode piorar a resposta da IAExaminar conexões de Por que informação demais pode piorar a resposta da IA
Terminou a leitura?
Você está aqui: capítulo 16 de 30
0 de 30 concluídos
- Próximo · Capítulo 17 de 30 · 14 minQuando vale adaptar um modelo para a tarefaLer o capítulo 17 sem concluir
Marque como concluído para o capítulo contar no seu painel e no certificado.
- Anterior · Capítulo 15 de 30 · 14 minComo limitar o acesso ao executar códigoVoltar para o capítulo 15
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Capítulos vizinhos em RLM: grandes acervos
- 14Como reduzir desperdício e acompanhar a operação
- 15Como limitar o acesso ao executar código
- 16Como impedir que um erro parcial vire conclusão
- 17Quando vale adaptar um modelo para a tarefa
- 18Como comprovar uma melhoria automática