VerifierAgent gera N perguntas de verificação independentes sobre os claims no rascunho, responde cada uma em isolamento, e reescreve a resposta quando detecta discrepâncias. Gera o signal que ativa Reflexion em alucinações.
Chain-of-Verification (Dhuliawala et al., 2023) é a técnica canônica para reduzir hallucination em outputs LLM. O fluxo: produzir resposta → gerar perguntas de verificação sobre as claims → responder cada pergunta independentemente (sem ver a resposta original) → reconciliar discrepâncias.O ChatCLI implementa via VerifierAgent (pure reasoning, zero tools) + VerifyHook (PostHook do pipeline). Quando discrepância é detectada, o flag verified_with_discrepancy é gravado em result.Metadata, ativando o Reflexion downstream.
CoVe é opt-in. Com CHATCLI_QUALITY_VERIFY_ENABLED=false (default), zero overhead. Quando ligado, adiciona +1 chamada LLM por ponto de uso com effort alto (default effort="high").
O modelo recebe TASK + DRAFT e emite cinco blocos:
<status>verified-clean OR verified-with-corrections</status><questions>- Q1: claim específica 1 verificável- Q2: claim específica 2 verificável- Q3: claim específica 3 verificável</questions><answers>- A1: resposta independente a Q1 (sem olhar DRAFT)- A2: resposta independente a Q2- A3: resposta independente a Q3</answers><discrepancies>- descrição da discrepância, OU "none"</discrepancies><final>…resposta pronta para entregar ao usuário (repete DRAFT se verified-clean,ou reescreve se verified-with-corrections)…</final>
O protocolo instrui o modelo a responder cada Q<n>sem referenciar o DRAFT. Isso é o coração de CoVe — se as respostas independentes contradizem o draft, há claim suspeito.
Modelos que simplesmente regurgitam o draft nas respostas defeat o padrão. O system prompt enfatiza isso explicitamente; use modelos capazes de “self-distance” (Claude Sonnet, GPT-4+).
# Use modelo mais forte só para verifyexport CHATCLI_AGENT_VERIFIER_MODEL="claude-opus-4-7"export CHATCLI_AGENT_VERIFIER_EFFORT="max"# Ou mais questions para workflows críticosexport CHATCLI_QUALITY_VERIFY_NUM_QUESTIONS=5
O http.Client do Go tem um campo DefaultTimeout que você pode setar globalmente. Basta fazer http.DefaultClient.DefaultTimeout = 30 * time.Second no init do programa.
Erro:DefaultTimeoutnão existe. É Timeout (e não há “DefaultTimeout” na stdlib).
- Q1: Does the `net/http.Client` struct in Go have a field called `DefaultTimeout`?- Q2: What is the correct field name for setting a timeout on `http.Client`?- Q3: Is `http.DefaultClient` mutable and reassignable?
- A1: No, `net/http.Client` has a `Timeout` field (type `time.Duration`), not `DefaultTimeout`.- A2: The correct field is `Timeout`, used as `client.Timeout = 30 * time.Second`.- A3: `http.DefaultClient` is a pointer to a pre-allocated Client; modifying its fields is legal but has process-wide side effects.
- Draft refers to `DefaultTimeout` field, which does not exist. Correct field is `Timeout`.
Status: verified-with-corrections
O http.Client do Go tem um campo Timeout (não DefaultTimeout). Para aplicar globalmente, você pode fazer:
http.DefaultClient.Timeout = 30 * time.Second
Mas atenção: DefaultClient é compartilhado pelo processo inteiro — modificações globais afetam todo código que usa http.Get, http.Post, etc. Para isolamento, instancie seu próprio &http.Client{Timeout: ...}.
Flag gravado em result.Metadata["verified_with_discrepancy"]=true. Se Reflexion está on (default), uma lesson é gerada em background:
LESSON: Citing Go stdlib API fieldsMISTAKE: Invented "DefaultTimeout" field on http.ClientCORRECTION: Verify symbol exists via go doc or grep before citingTRIGGER: hallucination
Refine melhora a qualidade estilística primeiro; Verify checa factual accuracy sobre o output já refinado. Ordem oposta (verify → refine) funcionaria, mas a reescrita do refine poderia introduzir claims não verificados.
Se você só liga um dos dois, prefira Verify para workflows factual (docs técnicas, código com API calls) e Refine para workflows estilísticos (summaries, relatórios).
CoVe com modelos fracos gera perguntas superficiais ou “verificações” que só parafraseiam o draft. Use Sonnet, Opus, ou GPT-4+ como CHATCLI_AGENT_VERIFIER_MODEL.