Prompt Evaluator — variantes comparadas em rodada real
36 chamadas reais0 erros
modelo openai/gpt-oss-20b via Groq · 10/nov/2026 · latência medida 367–2164 ms
12 leads × 3 variantes de prompt para classificação (quente / morno / frio).
Todos os números desta página saem de runs/latest.csv da rodada — nada digitado à mão.
Código e protocolo: leadforge-prompt-evaluator.
Comparação por variante
| variante | chamadas ok | rótulos extraídos | labels vistos | latência (ms) | tokens saída (méd) |
|---|---|---|---|---|---|
v1_shortPalavra seca |
12/12 | 4/12 | frio | 367–2164 | 315 |
v2_structuredJSON estruturado |
12/12 | 12/12 | frio, morno, quente | 578–1776 | 256 |
v3_criteriaCritérios de fit |
12/12 | 8/12 | None, fit_unknown, unknown | 474–1750 | 246 |
Leitura
| variante | o que o run mostrou |
|---|---|
v1_short |
modelo de raciocínio recusa em 8/12 (“preciso de mais informações”) em vez de classificar — prompt sem formato não sustenta classe |
v2_structured |
vencedor: schema explícito, 12/12 rótulos e as três classes aparecem |
v3_criteria |
drift de vocabulário: o prompt não fixa o enum, o modelo devolve None/fit_unknown |
Amostras reais das respostas
| variante | lead | resposta do modelo | rótulo extraído |
|---|---|---|---|
| v1 | L001 | Para classificar o lead, preciso de mais informações sobre ele. Por favor, forneça detalhes relevantes (por exemplo, engajamento, interesse, orçamento, prazo, etc.). | (sem rótulo) |
| v1 | L002 | frio | frio |
| v1 | L003 | frio | frio |
| v2 | L001 | {"label":"frio","confidence":70,"reasoning":"Sem informações adicionais sobre interesse ou engajamento."} | frio |
| v2 | L002 | ```json { "label": "morno", "confidence": 70, "reasoning": "O lead demonstra interesse em serviços de pet shop, mas ainda não concluiu nenhuma compra ou contrato." } ``` | morno |
| v2 | L003 | {"label":"morno","confidence":60,"reasoning":"Nome indica potencial cliente, mas sem indicação de interesse."} | morno |
| v3 | L001 | {"label":"unknown","confidence":0.0,"reasoning":"Não há informações fornecidas sobre o lead para avaliar seu fit B2B."} | unknown |
| v3 | L002 | {"label":"unknown","confidence":0,"reasoning":"Insufficient information provided to assess fit level."} | unknown |
| v3 | L003 | Desculpe, mas preciso de mais informações sobre o lead (por exemplo, segmento de mercado, tamanho da empresa, cargo dos decisores, necessidades específicas, etc.) para poder classificá‑lo adequadamente. Por favor, forneç… | (sem rótulo) |
Os 3 prompts
v1_short — Palavra seca
Classifique o lead como 'quente', 'morno' ou 'frio'. Responda só com a classificação.
v2_structured — JSON estruturado
Lead: {lead_name} ({category}) em {city}. Responda em JSON com campos: label (quente|morno|frio), confidence (0-100), reasoning (1 frase).
v3_criteria — Critérios de fit
Classifique este lead seguindo critérios de fit para prospecção B2B. Responda JSON: {label, confidence, reasoning}. Critérios: fit_high se cliente final claramente definido; fit_medium se segmento promissor; fit_low se muito genérico.
O que a rodada consertou no harness
- Respostas vazias silenciosas — com
max_tokens=200o canal de pensamento do modelo de raciocínio comia o budget: HTTP 200,contentvazio, amostra perdida. Fix:MAX_TOKENS=1000. - 429 sem retry — o free tier da Groq tem 30 RPM; a primeira rodada perdeu 5 chamadas. Fix: backoff 5s/15s + pacing de 2s.
- Modelo aposentado —
llama-3.1-8b-instantsaiu do free tier em 16/ago/2026 (404). O script de rodada descobre os modelos disponíveis na chave.
Limitações
- 12 leads de demonstração (SMB de Fortaleza) — amostra pequena e sem ground truth de intenção: a comparação mede estrutura da resposta (parse, latência, tokens), não acerto de negócio.
- Um modelo, uma rodada; latência varia com a carga do provider.
- Reproduzível em ~2 min com chave gratuita da Groq (ver README do repo).