Preparação para entrevista
SmellAcopladores

Ferramenta que Cospe HTML

Raw HTML Tool Output

Ferramenta que Cospe HTML (Raw HTML Tool Output) é um smell de IA, ou seja, um sinal de problema em sistemas com LLM, do grupo Acopladores. A ferramenta devolve a página inteira, com menu e rodapé, e o modelo se perde.

Elemento
25/37
Nível
Iniciante
Leitura
4 min
Atualizado
Nesta página 7
  1. 01Como reconhecer
  2. 02Por que acontece
  3. 03Quanto custa ignorar
  4. 04Tratamento
  5. 05O que você ganha
  6. 06Quando ignorar
  7. 07É esse smell?
  8. ··Perguntas rápidas

Como reconhecer

Um agente de navegador precisa descobrir o preço de um produto numa loja. A ferramenta fetch_page devolve o HTML da página. O trace (anonimizado):

tool=fetch_page  url=loja.exemplo/produto/123
result_tokens=31.840
result_preview="<!DOCTYPE html><html lang="pt-BR"><head><meta charset=...
  <nav class="menu-principal">...[140 links de categoria]...
  <script>window.__STATE__={...}</script>...
  <footer>...política de privacidade, trabalhe conosco...</footer>"

Para ler um número, o agente pagou mais de 30 mil tokens. Na segunda página, o contexto já estava acima de 60 mil. Na quarta, o modelo citou o preço do “produto relacionado” do rodapé.

Num marketplace brasileiro o padrão se repete: a página do anúncio traz menu, recomendações, perguntas de outros compradores, scripts de tracking e o preço em três lugares (à vista, parcelado, “de / por”). O modelo escolhe um. Às vezes o errado.

Sinais de Ferramenta que Cospe HTML:

  • Ferramentas devolvem HTML, JSON de API ou logs inteiros, sem filtro.
  • Resultados de ferramenta têm dezenas de milhares de tokens.
  • O agente erra informações que estavam no resultado, porque havia ruído demais.
  • O contexto enche depois de poucas chamadas.
  • O conteúdo inclui scripts, menus, rodapés e anúncios.
flowchart LR
  A(["1. Agente pede a página"]):::llm --> T["2. fetch_page"]:::tool
  T --> H["3. HTML inteiro: menu, scripts, rodapé"]:::untrusted
  H --> A
  A --> X(["4. Preço errado, contexto cheio"]):::io
  1. O agente precisa de um dado pequeno.
  2. A ferramenta busca a fonte.
  3. Devolve tudo, do jeito que veio.
  4. O modelo procura o dado no meio do ruído e às vezes acha o errado.
Checagem +20 XP de primeiraO agente leu quatro páginas de produto. O contexto passou de 120 mil tokens e a resposta usou o preço de um item 'relacionado' no rodapé. Qual falha de desenho veio primeiro?

Por que acontece

  • A ferramenta foi escrita como um wrapper fino. requests.get(url).text é a implementação mais rápida. Em dez minutos o agente “lê a web”. O preço de não filtrar aparece no trace, não no primeiro commit.
  • Confiança no modelo para filtrar. “Ele acha o que precisa” é verdade com frequência, a um custo alto e com erros quando o número aparece várias vezes.
  • Ninguém olhou o tamanho dos resultados. Sem trace com tokens por ferramenta, o peso não aparece. A fatura vem no fim do mês, e o preço errado parece alucinação.
  • Converter HTML em markdown parece suficiente. html2text tira as tags e deixa o menu, o rodapé e as recomendações. Oito mil tokens de prosa ainda escondem o preço.

O paper “Lost in the Middle” (Liu et al., 2023) mostrou que modelos acham pior a informação que está no meio de um contexto longo, e melhor a que está no começo ou no fim. Uma página de 30 mil tokens coloca o preço do produto exatamente onde o modelo mais erra, no meio, entre <nav> e <footer>.

Quanto custa ignorar

  • Dinheiro. Cada chamada de ferramenta pode custar mais que todo o resto da tarefa. Quatro páginas a 30 mil tokens de entrada já são mais de 100 mil tokens antes de o agente responder.
  • Qualidade. Ruído demais leva a dados errados. Preço de anúncio, preço riscado, preço de “quem viu viu também”.
  • Contexto. Poucas chamadas enchem a janela e derrubam as decisões seguintes. O agente esquece a pergunta original porque o HTML ocupou o espaço.
  • Segurança. Mais texto de fora no contexto é mais espaço para instruções escondidas. Greshake e colegas (2023) mostraram injeção indireta em conteúdo que o agente busca. Uma página enorme é um outdoor maior para o ataque. Veja Ordem Vinda do Dado.

Uma conta para um preço

Os números abaixo são ilustrativos. Suponha que o agente compara 10 anúncios e cada página crua tem cerca de 30 mil tokens.

Retorno da ferramenta Tokens por página Para 10 anúncios (só entrada)
HTML cru 30.000 300.000
Texto limpo, sem menu nem script 800 8.000
Campos titulo, preco, parcelado, url cerca de 40 400

A extração em código (seletor, JSON-LD, campo da API) transforma a tarefa de “achar um número numa novela” em “ler um registro”. O modelo compara dez preços. Não caça dez agulhas.

Tratamento

Refatoração Escolha quando
Normalizar Retorno de Ferramenta Sempre. A ferramenta devolve só os campos úteis, num formato estável: texto principal limpo, ou campos extraídos. Destino também: Adaptador MCP.

Três níveis, do mais barato ao mais geral:

  1. Filtro determinístico. Tira script, style, nav, footer, anúncios. Converte o restante em texto. Já corta a maior parte dos tokens.
  2. Campos extraídos em código. Se você sempre quer preço, título e disponibilidade, a ferramenta devolve isso. Seletor CSS, JSON-LD, endpoint de API. Falha vira erro da ferramenta, não alucinação do modelo.
  3. Resumo dentro da ferramenta. Quando o layout varia demais para um seletor, um modelo pequeno (sem ferramentas de efeito) lê a página e devolve o registro. O agente principal nunca vê o HTML.

A armadilha: normalizar só o HTML e deixar a ferramenta de logs devolver 5 mil linhas, a de API devolver o JSON aninhado de 400 chaves, a de email devolver o MIME inteiro. O smell é saída bruta, não a extensão .html.

Checagem +20 XP de primeiraVocê já converte a página em texto limpo de uns 800 tokens, sem menus e scripts. O agente ainda cita o preço parcelado no lugar do à vista. Qual é o próximo passo mais útil?

O que você ganha

  • Resultados de ferramenta de centenas de tokens, não dezenas de milhares.
  • O modelo encontra o dado certo.
  • Tarefas mais longas cabem no contexto.
  • Menos superfície para conteúdo malicioso.

Quando ignorar

  • O conteúdo bruto é a tarefa. Um agente que analisa o HTML de uma página para achar problemas de acessibilidade precisa do HTML. Mesmo assim, remova scripts e estilos, que não entram na análise e incham o contexto.
  • Volume baixo e páginas pequenas. Se o resultado já é curto (uma API que devolve 80 tokens com o preço), normalizar traz pouco. Meça o tamanho no trace antes de construir um parser.

É esse smell?

Checagem +20 XP de primeiraUma ferramenta de busca de logs devolve as últimas 5 mil linhas do serviço, e o agente precisa saber se houve erro 500 nos últimos 10 minutos. É Ferramenta que Cospe HTML?

Checagem +20 XP de primeiraCada ferramenta do agente devolve um formato diferente: uma devolve XML, outra JSON aninhado, outra texto. O modelo se confunde ao combinar resultados. Qual smell está mais perto?

Checagem +20 XP de primeiraA ferramenta fetch_page chama uma API da loja e devolve os campos preco, moeda e sku com cerca de 30 tokens. O agente às vezes erra a comparação de duas lojas. É Ferramenta que Cospe HTML?

Checagem +20 XP de primeiraUm agente de acessibilidade recebe o HTML da página, sem script e sem style, para listar problemas de contraste e de alt. O HTML tem 4 mil tokens. É Ferramenta que Cospe HTML?

Perguntas rápidas

O que é Ferramenta que Cospe HTML?

Ferramenta que Cospe HTML (Raw HTML Tool Output) é um smell de IA, ou seja, um sinal de problema em sistemas com LLM, do grupo Acopladores. A ferramenta devolve a página inteira, com menu e rodapé, e o modelo se perde.

Como corrigir Ferramenta que Cospe HTML?

Com Normalizar Retorno de Ferramenta. Cada refatoração traz o passo a passo seguro, com eval antes e depois.

Onde Ferramenta que Cospe HTML aparece na prática?

Nos cenários reais Agente de incidentes (on-call) e Agente de navegador para tarefas repetitivas.

Para ir além

Relações

Refatorações que tratam 1
Buscar