Verificar se referências e links citados por uma IA realmente existem
Referências geradas por IA podem parecer confiáveis mesmo quando o link não existe ou quando o conteúdo real não corresponde ao que a IA afirma. Este exemplo sintético mostra como verificar tanto a existência do link quanto se a fonte realmente está relacionada à afirmação.
Conteúdo verificado 2026.09.21Inclui código de exemplo
Ver o sumário
A tradução foi feita com IA. Confira o código, as unidades e os valores junto com o original. A revisão por falantes nativos de cada idioma ainda não foi concluída. English
Para quem éPara quem usa um assistente de chat com IA em pesquisas, relatórios ou documentação e quer verificar referências antes de utilizá-las.
Preparação
Python 3.12
Acesso à Internet ao executar o script de verificação de URLs
01Por que verificar referências geradas por IA?
Uma referência com aparência profissional não é automaticamente confiável. Uma resposta de IA pode incluir uma URL real com uma descrição incorreta, uma URL que não existe mais ou uma referência completamente inventada. Por isso, a verificação deve ser dividida em duas perguntas: a referência realmente existe e ela realmente contém informações que sustentam a afirmação da IA?
Verificação de existência: é possível acessar a URL e receber uma resposta web normal?
Verificação de conteúdo: a página obtida contém informações relacionadas à afirmação?
Verificação da fonte: a página realmente pertence à organização, editora ou site de documentação mencionado pela IA?
Revisão humana: a página sustenta a afirmação completa, e não apenas contém algumas palavras-chave?
02Usar um pequeno exemplo sintético
O exemplo a seguir é sintético. Imagine que você perguntou a um assistente de chat com IA quais páginas da biblioteca padrão do Python explicam como abrir URLs e trabalhar com JSON. Antes de colocar essas referências em uma anotação de trabalho, você quer verificá-las.
Pedido à IA: forneça referências oficiais do Python para abrir URLs e ler ou gravar JSON. Para cada referência, informe uma afirmação específica que a página sustenta e forneça a URL exata.
O módulo json do Python fornece codificação e decodificação de JSON.
https://docs.python.org/3/library/json.html
Referência falsa sintética
Esta página documenta um verificador de referências específico para IA.
https://example.invalid/fake-reference
A terceira linha é deliberadamente falsa neste exercício sintético. O objetivo é fazer com que o processo de verificação detecte esse caso, em vez de confiar apenas na aparência da citação.
03Transformar a resposta da IA em verificações explícitas
Não é recomendável pedir ao Python que decida sozinho se uma afirmação completa em linguagem natural é verdadeira. Em vez disso, registre a URL, a afirmação e alguns termos que provavelmente apareceriam se a página fosse relevante. Esses termos servem apenas como uma triagem inicial.
Registre a afirmação ao lado da URL, em vez de verificar apenas o link.
Escolha apenas alguns termos distintivos para a triagem inicial.
Depois da verificação automática, abra todas as referências que pretende citar e leia pessoalmente o trecho relevante.
04Verificar as URLs e o texto das páginas com Python
Este script usa apenas a biblioteca padrão, solicita cada página, registra a URL final e o status HTTP, extrai um texto visível básico e verifica os termos selecionados. O relatório é salvo em outputs/reference_check.json. Para não sobrescrever uma revisão anterior, o script para se a pasta outputs já existir.
python
from pathlib import Path
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError
import html
import json
import re
checks = [
{
"reference": "urllib.request",
"url": "https://docs.python.org/3/library/urllib.request.html",
"claim": "Python provides urllib.request for opening URLs.",
"terms": ["urllib.request", "URL"],
},
{
"reference": "json",
"url": "https://docs.python.org/3/library/json.html",
"claim": "Python's json module provides JSON encoding and decoding.",
"terms": ["json", "encoding", "decoding"],
},
{
"reference": "Synthetic fake reference",
"url": "https://example.invalid/fake-reference",
"claim": "This page documents an AI-specific reference verifier.",
"terms": ["reference", "verifier"],
},
]
output_dir = Path("outputs")
if output_dir.exists():
raise SystemExit("outputs already exists; remove or rename it before running again")
output_dir.mkdir()
results = []
for item in checks:
result = {
"reference": item["reference"],
"url": item["url"],
"claim": item["claim"],
"reachable": False,
"status": None,
"final_url": None,
"term_matches": {},
"error": None,
}
try:
request = Request(
item["url"],
headers={"User-Agent": "Worknote reference checker/1.0"},
)
with urlopen(request, timeout=10) as response:
result["status"] = response.status
result["final_url"] = response.geturl()
raw = response.read(500_000).decode("utf-8", errors="replace")
text = re.sub(r"<script.*?</script>", " ", raw, flags=re.I | re.S)
text = re.sub(r"<style.*?</style>", " ", text, flags=re.I | re.S)
text = re.sub(r"<[^>]+>", " ", text)
text = html.unescape(text)
text = re.sub(r"\s+", " ", text)
result["reachable"] = True
lowered = text.casefold()
result["term_matches"] = {
term: term.casefold() in lowered for term in item["terms"]
}
except HTTPError as exc:
result["status"] = exc.code
result["error"] = f"HTTPError: {exc}"
except URLError as exc:
result["error"] = f"URLError: {exc.reason}"
except Exception as exc:
result["error"] = f"{type(exc).__name__}: {exc}"
results.append(result)
report_path = output_dir / "reference_check.json"
report_path.write_text(
json.dumps(results, indent=2, ensure_ascii=False),
encoding="utf-8",
)
for result in results:
print(result["reference"])
print(" reachable:", result["reachable"])
print(" status:", result["status"])
print(" final URL:", result["final_url"])
print(" term matches:", result["term_matches"])
print(" error:", result["error"])
print(f"Saved: {report_path}")
05Interpretar os resultados com cautela
Uma página acessível na qual os termos aparecem deve ser marcada para revisão manual, e não tratada automaticamente como uma afirmação verificada. A correspondência de palavras não consegue determinar contexto, escopo, negação nem se a IA exagerou o que a fonte realmente diz.
Resultado
Interpretação
Próxima ação
Acessível e termos encontrados
A página pode ser relevante.
Leia a seção correspondente e compare com a afirmação exata da IA.
Acessível, mas sem os termos
A URL existe, mas a triagem rápida não encontrou a formulação esperada.
Inspecione a página manualmente e verifique se a IA citou a página errada.
Erro HTTP
O servidor respondeu com um status de erro.
Verifique a URL, redirecionamentos, requisitos de acesso ou se a referência foi movida.
Erro de rede ou DNS
O script não conseguiu acessar o endereço.
Verifique a grafia da URL e confirme a referência por outro meio.
06Fazer a verificação manual final
Confirme se o título da página e a organização correspondem ao que a IA mencionou.
Procure na página o conceito exato usado na afirmação.
Leia contexto suficiente ao redor do trecho para entender condições e exceções.
Verifique se a IA transformou uma afirmação limitada em uma conclusão mais ampla.
Registre o título da seção ou a localização relevante para revisão posterior.
Remova ou corrija qualquer citação cuja fonte não possa ser localizada ou não sustente a afirmação indicada.
07Erros comuns e limitações
Supor que um domínio conhecido significa que todas as URLs desse domínio são autênticas.
Aceitar uma página apenas porque uma palavra-chave aparece em algum ponto.
Ignorar redirecionamentos e verificar apenas a URL original fornecida pela IA.
Usar o título da página, o trecho de um resultado de busca, um resumo ou um sumário como prova de uma afirmação detalhada.
Usar correspondência automática de texto como substituto da leitura do trecho citado.
Esquecer que alguns sites legítimos bloqueiam solicitações automatizadas ou exigem JavaScript, autenticação ou outros métodos de acesso.
Em trabalhos acadêmicos, também é necessário verificar dados bibliográficos como autores, título, ano, periódico, DOI e o conteúdo real do artigo. Um verificador de URLs não consegue estabelecer validade acadêmica, detectar sozinho trabalhos retratados nem decidir se a evidência é metodologicamente sólida.
Registro de execução e verificação
ChatGPT Python tool · Python 3.x · standard library only
O script foi concluído com sucesso e criou outputs/reference_check.json.
A saída continha exatamente três objetos de resultado correspondentes a urllib.request, json e à referência sintética falsa.
Como o ambiente de execução Python não conseguiu resolver DNS externo, as três solicitações foram tratadas como valores URLError em vez de causar falha no script.
Para URLs inacessíveis, reachable permaneceu false, status e final_url permaneceram null, term_matches permaneceu vazio e o campo error registrou a falha de rede conforme esperado.
O script usa apenas módulos da biblioteca padrão do Python: pathlib, urllib.request, urllib.error, html, json e re.
O script não sobrescreveu uma revisão existente: uma segunda execução foi interrompida com 'outputs already exists; remove or rename it before running again'.
O nome do arquivo de relatório gerado foi exatamente outputs/reference_check.json, correspondendo ao artigo.
Limites da verificação
O ambiente de execução do ChatGPT Python não tinha acesso funcional a DNS/rede externa durante a verificação, portanto não foi possível verificar, executando este script, os códigos de status HTTP atuais, redirecionamentos, texto de página baixado e term matches das duas URLs de documentação do Python.
Como nenhuma página foi recuperada, a ramificação real reachable-and-terms-found não pôde ser exercitada.
A presença de palavras-chave serviria apenas para filtrar possível relevância e não estabeleceria que uma página citada sustenta semanticamente toda a afirmação.
Um aviso não relacionado de aquecimento do ambiente de planilhas foi emitido durante a inicialização do Python; isso não afetou a execução do script do artigo.
Fontes de referência
As explicações e os exemplos são de elaboração própria. Os comportamentos e conceitos relacionados podem ser consultados nas fontes oficiais abaixo.
Transforme “automatize isso” em uma descrição de tarefa executável. Anexe uma amostra sintética sem dados sensíveis e um resultado esperado verificado manualmente para completar uma solicitação de script que totaliza registros de trabalho por equipe.
Verifique uma função de agregação com quatro linhas que você pode calcular manualmente e 12 unit tests. Verifique não apenas valores normais, mas também entrada vazia, zero, decimais e entrada inválida.
Compare um relatório de IA com os dados de origem, recalcule totais e percentuais e use um prompt para identificar afirmações sem respaldo e causas exageradas antes da entrega.
Trate uma regex gerada por IA como um rascunho, não como uma regra final. Monte uma pequena tabela de testes sintéticos, compare os resultados esperados com as correspondências reais, revise o padrão e salve um relatório de revisão antes de usá-lo em dados reais.