Selo de estado:
Preview(teto atual do produto) · Curso ACD-410 — Ingestia AI: perguntar aos dados com proveniência · Aula 5 de 8 · Atualizado em 2026-10-04.
Objetivo#
Ao final desta aula você vai verificar citação contra o visual — abrir uma resposta do Q&A, encontrar no painel o número que cada citação aponta e reconhecer, pelo tipo de recusa, por que a IA preferiu não responder.
Vídeo#
Identificador no manifesto: acd-410-05-qa-do-dashboard-com-citacoes · duração-alvo 7 min · tela do produto: /query.
Roteiro de gravação (5 capítulos):
| # | Minutagem-alvo | Capítulo | Tela do produto |
|---|---|---|---|
| 1 | 0:00–0:45 | Abertura: título + selo Preview. O Q&A responde só sobre o snapshot já materializado — "sem custo de consulta", mas com custo de token. | /dashboards/[id] (painel comercial da Aurora) |
| 2 | 0:45–2:30 | Perguntar no ✨ e ler a resposta com as evidências. Mostrar o que é um id de widget e de linha, e que o LLM é obrigado a citar esses ids. | /dashboards/[id] (painel lateral ✨) |
| 3 | 2:30–4:15 | Conferir ao vivo: a citação aponta para o número que está no visual? Trocar o filtro da tela e repetir a pergunta — os filtros voltam ecoados pelo lado determinístico. | /dashboards/[id] |
| 4 | 4:15–6:00 | As quatro recusas: fora do contexto (custo zero), sem evidência, evidência fraca, IA indisponível. Provocar uma e ler o texto. | /dashboards/[id] (painel lateral ✨) |
| 5 | 6:00–7:00 | Custo real na resposta e o mesmo opId na auditoria; proibição de afirmar total sobre amostra; encerramento com o "faça você mesmo". | /auditoria |
Conteúdo#
A ideia central: o LLM redige, o código verifica
O Q&A do dashboard é a capacidade onde a arquitetura de honestidade fica mais explícita. Você pergunta algo sobre o painel; o LLM escreve a resposta; e quem decide se aquela resposta tem lastro é código puro, não o modelo.
O mecanismo é simples de entender e difícil de burlar: cada widget enviado ao prompt recebe um id — [W1], [W2] — e cada linha um sub-id — [W1.r3]. O LLM é obrigado a citar esses ids. Depois, um verificador confere cada citação contra o índice do que realmente viajou no prompt, não contra o texto que o modelo escreveu. Citação forjada não passa: se o modelo inventar [W9.r9], a verificação não encontra esse id no índice e a citação cai.
| O que o LLM faz | O que o código faz | |
|---|---|---|
| Texto da resposta | redige em português | — |
| Citações | precisa citar ids [W1.r3] | confere cada id contra o índice do que viajou |
| Filtros considerados | declara o que diz ter considerado | ecoa os filtros reais da tela e marca divergência |
| Amostra | é instruído a não afirmar total | o widget já chega marcado como amostra, com quantas linhas foram enviadas e quantas existem |
| Recusa | pode recusar | transforma "nenhuma citação confere" em recusa, mesmo que o texto parecesse bom |
| Custo | — | reserva → liquidação, com custo real formatado na própria resposta |
Nas telas
No painel, o botão ✨ abre o painel lateral. Embaixo dele há a caixa "Pergunte aos seus dados…"; cada pergunta respondida aparece como um bloco com "Você: …", o texto da resposta e, abaixo, uma lista de evidências. O rodapé avisa: "respostas baseadas nos dados já carregados — sem custo de consulta". Leia com cuidado: sem custo de consulta significa que nenhuma query roda no datalake; não significa de graça — o token é cobrado do orçamento de IA.
Os filtros ativos da tela entram na conta: o painel lateral lê o estado dos filtros da URL e manda essa lista junto. Sem isso, a IA responderia sobre o snapshot inteiro como se fosse o recorte que você está vendo. E o que volta como "filtros considerados" vem do lado determinístico, nunca da boca do modelo.
Em /auditoria, a pergunta fica registrada como pergunta sobre o painel, com marca quando foi recusada ou quando a evidência era fraca, e o uso em ai.usage.
As quatro recusas (e quanto cada uma custa)
| Recusa | Quando acontece | Custo |
|---|---|---|
| Fora do contexto | a pergunta não toca nenhum termo do painel | zero — recusa antes de gastar token |
| Sem evidência | o LLM respondeu, mas nenhuma citação confere contra o dado | o custo real é liquidado: gastou, reporta |
| Evidência fraca | a maioria das citações é ruim | a resposta sai com aviso, e só as citações que conferem entram como evidência |
| IA indisponível | sem provedor de modelo ou erro na chamada | fallback honesto, citações vazias — nunca evidência fingida |
Recusa é resposta correta
A regra da casa é "a IA recusa e avisa — ela não finge". Uma recusa bem fundamentada vale mais do que um número bonito sem lastro. Nos exercícios deste curso, provocar uma recusa é um objetivo, não um acidente.
Exemplo: a Aurora Varejo
Ana abre o painel comercial da Aurora com o filtro de período em "últimos 30 dias" e a filial em Campinas, e pergunta no ✨:
"qual categoria mais caiu vs o mês anterior neste painel?"
Resposta esperada: uma frase curta nomeando a categoria e a queda em pontos percentuais, seguida de evidências apontando para as linhas do visual de categorias — algo como [W2.r4] para a linha da categoria citada. Junto, os filtros considerados ecoados: período dos últimos 30 dias e filial Campinas. Ana então olha o visual na tela e confirma: o número da evidência é o mesmo que está no gráfico.
Agora Ana pergunta "qual a previsão para dezembro?". Resposta esperada: recusa — previsão não está no snapshot. E se ela perguntar "quanto foi o total de pedidos?" sobre um visual que chegou marcado como amostra, a resposta esperada é dizer que o número exato exige agregar no SQL, em vez de somar o que está na tela. Afirmar total, soma, "maior" ou "todos" sobre amostra é proibido.
Como conferir uma citação, passo a passo
- Leia a afirmação e identifique qual número ela usa.
- Encontre a evidência correspondente embaixo da resposta.
- Localize o widget citado no painel e a linha dentro dele.
- Compare o valor. Bateu? A afirmação tem lastro. Não bateu, ou não há evidência? Trate a frase como não verificada.
- Confira os filtros considerados contra os filtros que estão na tela: se divergirem, a resposta é sobre outro recorte.
Erros comuns
| Erro | Por que é grave | O que fazer |
|---|---|---|
| Aceitar número sem citação | é exatamente o que a arquitetura do produto tenta impedir; sem citação a frase não foi verificada | exija a evidência; sem ela, não leve o número para a reunião |
| Pergunta sem período | o painel tem um recorte na tela, mas a pergunta pode pedir outro | diga o período na pergunta e confira os filtros ecoados |
| Achar que a IA aprende com os dados | o Q&A não guarda histórico de conversa nem treina com o seu painel | cada pergunta é independente; repita o contexto necessário |
| Pedir "agora" | a resposta vem do snapshot da última atualização | atualize o painel ou use o text-to-SQL |
| Somar amostra | o número fica errado e a IA está proibida de ajudar nisso | use o text-to-SQL para o total exato |
O que o Q&A NÃO faz
Não roda consulta no datalake. Não afirma causa e efeito — correlação vista no painel não vira "X causou Y". Não responde sobre o que não está no snapshot (previsão, dado externo, "agora"). Não afirma total ou ranking sobre amostra. E não dá garantia de exatidão: o estado é Preview, com qualidade em produção NOT_MEASURED e avaliação humana pendente. As defesas — ids, verificação de citações, eco de filtros — são determinísticas e testadas, mas nenhuma defesa elimina 100% do risco. Revise sempre.
Faça você mesmo#
No painel comercial do workspace de treino Aurora Varejo. Atenção: cada pergunta no ✨ consome o orçamento de IA do workspace — a resposta mostra o custo real em reais, e o mesmo valor aparece em /auditoria. Confira o teto do mês antes de começar.
- Abra o painel comercial, aplique dois filtros na tela (período e filial) e abra o painel lateral ✨.
- Pergunte "qual categoria mais caiu vs o mês anterior neste painel?" e leia a resposta inteira, incluindo as evidências.
- Confira a citação nº 1: localize o widget e a linha apontados e compare o valor com o que está no visual. Anote "bateu" ou "não bateu".
- Confira a citação nº 2 do mesmo jeito. Se a resposta tiver só uma evidência, faça uma segunda pergunta e confira a dela.
- Confira os filtros considerados na resposta contra os dois filtros que você aplicou no passo 1. Divergiu? Registre.
- Provoque uma recusa: pergunte "qual a previsão para dezembro?" e anote o tipo de recusa e o custo informado.
- Em
/auditoria, localize as perguntas peloopIde confirme o custo real de cada uma, além da marca de recusa quando houver.
Você terminou quando tiver duas citações conferidas contra os visuais (com o valor anotado), uma recusa registrada com o texto exato e o custo real de cada pergunta encontrado na auditoria.
Checagem rápida#
Três perguntas no final da aula, corrigidas no servidor. A aula só conta como concluída depois da checagem.
Documentação relacionada#
Capacidades ensinadas#
C13.1 — o selo exibido na aula é sempre o estado mais conservador entre as capacidades citadas; nada aqui é "GA".