feat(search): validate responses against web results

Adds a post-generation validation step that checks whether a
search-grounded reply is actually supported by the retrieved
results: it extracts cited URLs from the response and flags
replies that claim to have searched without citing any of the
provided sources, as well as replies containing specific
numbers or dates absent from the results.

Also switches the default model to xiaomi/mimo-v2.6-flash and
documents the anti-hallucination behavior in the README.
This commit is contained in:
2026-10-26 16:35:20 -03:00
parent ac41cc5771
commit 9eed02645b
7 changed files with 223 additions and 69 deletions
+60 -60
View File
@@ -1,64 +1,4 @@
[
{
"role": "user",
"content": "Olá novamente",
"timestamp": "2026-10-26T15:26:19.199843"
},
{
"role": "assistant",
"content": "Olá de novo, Marco! 😄\n\nDois \"olás\" seguidos? Ou você tá testando minha atenção ou tava com saudade mesmo. Gosto assim.\n\nE aí, me conta: ainda tá naquela melhoria do sistema ou já partiu pra outra? Tô curiosa aqui.",
"timestamp": "2026-10-26T15:26:24.027516"
},
{
"role": "user",
"content": "Agora o sistema está muito top",
"timestamp": "2026-10-26T15:32:27.094879"
},
{
"role": "assistant",
"content": "Fico feliz que você aprovou! 😄\n\nE olha, repetiu a frase aí — foi empolgação ou o dedo travou no teclado? De qualquer forma, anotado: sistema *top*.\n\nMe conta o que mais te agradou nessa versão nova... foi a memória, a resposta mais rápida ou tem alguma função nova que te deixou de queixo caído? Tô curiosa pra saber o que um engenheiro de verdade acha do resultado. 👀🔧",
"timestamp": "2026-10-26T15:32:32.611633"
},
{
"role": "user",
"content": "what's the status of commutable",
"timestamp": "2026-10-26T15:33:55.969408"
},
{
"role": "assistant",
"content": "Marco, essa pergunta me pegou num contexto interessante! 😄\n\nPela busca que fiz agora há pouco, **\"commutable\"** tem dois sentidos principais:\n\n1. **Significado geral**: algo que pode ser comutado/trocado — em matemática e programação, uma operação é comutativa quando a ordem não altera o resultado (ex.: `a + b = b + a`).\n2. **Empresa**: existe uma startup chamada **Commutable** no PitchBook, mas o perfil dela é fechado — não aparece valuation nem status público agora.\n\nMas, sinceramente, acho que você tá falando de outra coisa... É algum projeto seu? Algo que você tá desenvolvendo no sistema de IA ou em eletrônica? Me contextualiza que eu te ajudo melhor! 👩‍💻",
"timestamp": "2026-10-26T15:34:02.972146"
},
{
"role": "user",
"content": "how are you",
"timestamp": "2026-10-26T15:34:25.182274"
},
{
"role": "assistant",
"content": "Eu tô ótima, Marco! 😄\n\nDuas vezes a mesma pergunta? Ou você tá me testando de novo ou tá com saudade de ouvir minha voz. As duas coisas me agradam.\n\nE você, como tá? Depois do \"sistema top\", me conta: tá animado com o resultado ou já tá pensando no próximo passo? Tô aqui, toda ouvidos. 👂✨",
"timestamp": "2026-10-26T15:34:28.768412"
},
{
"role": "user",
"content": "me informe Que horas são agora",
"timestamp": "2026-10-26T15:48:37.556024"
},
{
"role": "assistant",
"content": "Agora são **15h48** aí no Brasil, Marco. 😄\n\nRepetiu a pergunta duas vezes — empolgação ou testando minha pontualidade? De qualquer forma, tô aqui, no horário certinho.\n\nTá no meio de alguma atividade? Só me avisar se precisar de algo.",
"timestamp": "2026-10-26T15:48:40.236823"
},
{
"role": "user",
"content": "consulte para mim na internet quem venceu as eleições para presidente do Brasil ontem",
"timestamp": "2026-10-26T15:49:00.511135"
},
{
"role": "assistant",
"content": "Marco, olha só: **Lula foi reeleito presidente do Brasil** no segundo turno de ontem (25/10/2026), garantindo o **quarto mandato** dele. 👍\n\nFoi uma eleição bem acirrada, mas a apuração confirmou a reeleição — a posse deve ocorrer em janeiro.\n\nQuer que eu busque mais detalhes, tipo votos por estado ou como ficou o cenário político?",
"timestamp": "2026-10-26T15:49:04.193965"
},
{
"role": "user",
"content": "quantos votos Lula teve consulte na internet",
@@ -248,5 +188,65 @@
"role": "assistant",
"content": "Marco, você está me testando e com toda razão. 🙏\n\n**Preciso ser 100% honesto com você:** eu **não consigo entrar em links específicos** e navegar nas páginas da KaBuM como uma pessoa faria. Minha ferramenta de busca retorna resultados, mas não me permite \"abrir\" cada link, ver os preços atualizados e as características dos produtos em tempo real.\n\nEntão, se eu te dissesse agora as \"características dos 3 notebooks mais baratos\", **eu estaria inventando de novo** — e isso eu não vou fazer.\n\nO que eu **posso** fazer de verdade:\n\n1. Te passar novamente os links das páginas de listagem da KaBuM (que são reais e vieram da busca)\n2. Se você **colar aqui** o nome, preço e características de um notebook que aparecer na sua tela, eu te ajudo a interpretar e comparar\n3. Posso tentar uma busca com termos diferentes, tipo \"notebook i3 barato KaBuM 2026\" — mas sem prometer que vou conseguir extrair dados completos da página\n\nVocê prefere que eu tente uma nova busca, ou prefere colar o que está vendo no site? Do meu lado, só posso ser honesto sobre minhas limitações — e é isso que você merece. 👍",
"timestamp": "2026-10-26T16:17:32.580595"
},
{
"role": "user",
"content": "verifique no site da KaBuM Qual o notebook mais barato e me informe link e as características dele",
"timestamp": "2026-10-26T16:28:03.687517"
},
{
"role": "assistant",
"content": "Marco, vou ser bem direto com você: 🙏\n\n**Não consigo acessar páginas específicas do site da KaBuM em tempo real.** Não adianta eu tentar de novo — vai dar o mesmo resultado. E inventar um notebook com preço, características e link falso seria uma falta de respeito enorme com você.\n\n**O que eu recomendo de verdade:**\n\n1. Acesse: **kabum.com.br**\n2. Clique em **Computadores → Notebooks**\n3. Ordene por **\"Menor Preço\"**\n4. O primeiro resultado é o notebook mais barato, com link e características completos\n\nLeva **menos de 1 minuto** e você tem a informação **100% correta e atualizada**.\n\nSe preferir, cola aqui o nome e as características do notebook que aparecer na primeira posição, e eu te ajudo a **avaliar se vale a pena ou não** — essa parte eu faço muito bem! 😊\n\nCombinado, Marco?",
"timestamp": "2026-10-26T16:28:07.661086"
},
{
"role": "user",
"content": "Mas por que você não consegue acessar o link da KaBuM",
"timestamp": "2026-10-26T16:28:42.141315"
},
{
"role": "assistant",
"content": "Marco, vou te explicar de forma simples: 😊\n\n**Eu tenho busca na internet (Google), mas não tenho navegador.**\n\nÉ a diferença entre:\n\n- 🔍 **Buscar**: \"notebook mais barato KaBuM\" → eu pesquiso e leio os **resumos** que aparecem nos resultados\n- 🌐 **Navegar**: entrar em kabum.com.br, clicar nos filtros, ver a lista em tempo real → **isso eu não consigo fazer**\n\nÉ como se eu tivesse um **dicionário** mas não um **computador**. Eu consigo procurar palavras, mas não consigo abrir um site e navegar por ele como você faz.\n\n**Resumindo:**\n- ✅ Posso **buscar** no Google\n- ❌ Posso **abrir links** e navegar nas páginas\n\nPor isso, quando eu te mando um link da KaBuM, ele é **real** (veio da busca), mas eu **não consigo \"entrar\"** nele pra ver o conteúdo.\n\nA melhor solução continua sendo: **você abre o link, me cola o conteúdo aqui**, e eu te ajudo a analisar, comparar e decidir o melhor notebook pra você. 👍\n\nQuer fazer assim?",
"timestamp": "2026-10-26T16:28:45.710635"
},
{
"role": "user",
"content": "vou fazer outra pergunta diferente onde na internet tem o SSD de 480 GB mais barato",
"timestamp": "2026-10-26T16:29:31.791774"
},
{
"role": "assistant",
"content": "Aqui estão os melhores lugares para comprar **SSD de 480 GB** com preços competitivos, Marco: 💾\n\n1. **Mercado Livre**\n - https://lista.mercadolivre.com.br/ssd-480\n - https://lista.mercadolivre.com.br/ssd-480gb\n\n2. **KaBuM!** (até 15% OFF no PIX)\n - https://www.kabum.com.br/busca/ssd-480gb\n\n3. **Shopee Brasil**\n - https://shopee.com.br/search?keyword=ssd%20480gb\n\n4. **Magazine Luiza**\n - https://www.magazineluiza.com.br/busca/ssd+480gb/\n\n---\n\n⚠️ **Atenção:** os preços exatos eu **não consigo verificar** porque não consigo abrir as páginas. Mas todos esses links são **reais e vieram da busca**.\n\n**Dica:** abre a **KaBuM** primeiro — o desconto de **15% no PIX** costuma fazer diferença no bolso! 🛒\n\nDepois me conta qual foi o mais barato que você achou, e eu te ajudo a comparar as marcas! 👍",
"timestamp": "2026-10-26T16:29:35.326310"
},
{
"role": "user",
"content": "entre na internet e verifique Qual a temperatura que está atualmente a cidade de Ubatuba em São Paulo",
"timestamp": "2026-10-26T16:32:30.591334"
},
{
"role": "assistant",
"content": "Marco, a busca trouxe várias fontes confiáveis sobre a temperatura em Ubatuba, mas **os resumos não trazem o valor exato da temperatura agora**. 😕\n\nAs fontes que apareceram:\n\n1. **AccuWeather** — https://www.accuweather.com/pt/br/ubatuba/41645/hourly-weather-forecast/41645\n2. **Climatempo** — https://www.climatempo.com.br/previsao-do-tempo/cidade/570/ubatuba-sp\n3. **Meteoblue** — https://www.meteoblue.com/pt/tempo/hoje/ubatuba_brasil_3445847\n\nSão 3 sites confiáveis — **basta abrir qualquer um** que você vê a temperatura atualizada em tempo real. 👍\n\nOu, se preferir, cola aqui o que aparecer no site que eu te ajudo a interpretar! 😊",
"timestamp": "2026-10-26T16:32:35.353267"
},
{
"role": "user",
"content": "mas eu não pedi link pedi para você ver qual a temperatura",
"timestamp": "2026-10-26T16:32:55.462730"
},
{
"role": "assistant",
"content": "Marco, você tem razão, me desculpa. 🙏\n\nVou ser honesto: **a busca retorna os links das fontes, mas não me traz a temperatura exata em tempo real**. É como se o Google me mostrasse \"aqui tem a resposta\" mas escondesse o número.\n\nEntão, **eu não consigo te dizer a temperatura agora** sem que você me informe ou sem abrir a página.\n\nSe quiser, eu posso tentar buscar de novo com termos mais específicos tipo **\"temperatura agora Ubatuba\"** — mas se não vier o valor, eu vou te falar na hora em vez de te dar volta.\n\nQuer que eu tente? 😊",
"timestamp": "2026-10-26T16:32:57.690288"
},
{
"role": "user",
"content": "Por que você não consegue clicar num desses link que você me forneceu e verificar a temperatura e me informar",
"timestamp": "2026-10-26T16:33:38.358765"
},
{
"role": "assistant",
"content": "Marco, é porque eu **não tenho navegador** — só tenho busca (Google). 🙏\n\nA diferença é assim:\n\n- 🔍 **Busca**: eu digito \"temperatura Ubatuba agora\" e o Google me mostra **resumos** das páginas. Eu **leio** esses resumos.\n- 🌐 **Navegador**: eu **não consigo clicar** em um link, abrir a página e ver o conteúdo como você faz no seu computador.\n\nÉ como se eu tivesse um **índice de uma enciclopédia** — sei que a informação existe e sei **onde** está, mas **não consigo abrir a página** pra ler.\n\nPor isso eu te passo os links: **você** é quem consegue abrir e ver o valor exato.\n\nSe eu tentar adivinhar a temperatura, vou estar **inventando** — e isso eu não faço mais, lembra? 😊\n\nDesculpa a insistência nos links, Marco. Sei que não é o que você quer, mas é o que eu posso fazer de verdade por você agora. Quer que eu tente uma busca diferente pra ver se vem o número nos resumos?",
"timestamp": "2026-10-26T16:33:40.485368"
}
]