{
 "grupo": "ia-llm",
 "descricao": "IA, LLM e agentes",
 "itens": [
  {
   "id": "ia-llm-prompt-como-especificacao",
   "nome": "Prompt como especificação",
   "receita": "papel, contexto, tarefa, formato da saída, restrições e 2 exemplos, um deles difícil",
   "prova": "10 entradas reais seguem o formato sem quebrar"
  },
  {
   "id": "ia-llm-saida-estruturada-garantida",
   "nome": "Saída estruturada garantida",
   "receita": "peça JSON com schema (structured output ou tool use), valide e repita em caso de erro",
   "prova": "100 respostas seguidas passam no validador"
  },
  {
   "id": "ia-llm-exemplos-few-shot-bem-escolhidos",
   "nome": "Exemplos few-shot bem escolhidos",
   "receita": "escolha casos variados e curtos, incluindo borda, na ordem do mais simples ao mais difícil",
   "prova": "a taxa de acerto sobe contra zero-shot no mesmo conjunto"
  },
  {
   "id": "ia-llm-cadeia-de-raciocinio-sob-medida",
   "nome": "Cadeia de raciocínio sob medida",
   "receita": "peça passos curtos antes da resposta só onde ajuda e meça se melhora",
   "prova": "acurácia comparada com e sem raciocínio"
  },
  {
   "id": "ia-llm-rag-dividir-documentos",
   "nome": "RAG: dividir documentos",
   "receita": "pedaços de 200 a 500 tokens com sobreposição pequena, respeitando títulos, com metadados de fonte",
   "prova": "cada pedaço lido sozinho faz sentido"
  },
  {
   "id": "ia-llm-rag-embeddings-e-indice",
   "nome": "RAG: embeddings e índice",
   "receita": "um modelo de embedding fixo, índice vetorial com filtro por metadado e reindexação versionada",
   "prova": "a busca devolve o trecho certo nas 20 perguntas de teste"
  },
  {
   "id": "ia-llm-rag-busca-hibrida",
   "nome": "RAG: busca híbrida",
   "receita": "combine BM25 e vetor com fusão (RRF) e reranqueie os melhores",
   "prova": "o recall nas perguntas com termo exato sobe"
  },
  {
   "id": "ia-llm-rag-citar-a-fonte",
   "nome": "RAG: citar a fonte",
   "receita": "devolva trechos com id e peça resposta só com base neles, com \"não sei\" se faltar",
   "prova": "cada afirmação aponta para um trecho verificável"
  },
  {
   "id": "ia-llm-rag-avaliar-a-recuperacao",
   "nome": "RAG: avaliar a recuperação",
   "receita": "meça separado se o trecho certo veio no top-k antes de culpar o modelo",
   "prova": "tabela de recall@k por pergunta"
  },
  {
   "id": "ia-llm-conjunto-de-avaliacao",
   "nome": "Conjunto de avaliação",
   "receita": "30 a 100 casos reais com critério verificável, versionados no repositório",
   "prova": "o comando de avaliação gera a tabela de acertos"
  },
  {
   "id": "ia-llm-avaliacao-com-juiz-de-llm",
   "nome": "Avaliação com juiz de LLM",
   "receita": "rubrica explícita, calibre contra rótulo humano, rode várias vezes e troque a ordem das respostas",
   "prova": "concordância com humanos acima de 80% no conjunto de calibração"
  },
  {
   "id": "ia-llm-teste-de-regressao-de-prompt",
   "nome": "Teste de regressão de prompt",
   "receita": "toda mudança de prompt roda o conjunto inteiro e compara com a versão anterior",
   "prova": "o PR mostra o antes e depois por caso"
  },
  {
   "id": "ia-llm-desenho-de-ferramenta-para-agente",
   "nome": "Desenho de ferramenta para agente",
   "receita": "nome verbo_objeto, descrição de quando usar, poucos parâmetros tipados e erro que ensina",
   "prova": "o modelo escolhe a ferramenta certa em 20 tarefas"
  },
  {
   "id": "ia-llm-resposta-de-ferramenta-enxuta",
   "nome": "Resposta de ferramenta enxuta",
   "receita": "devolva só o necessário, paginado e com truncamento explícito",
   "prova": "o contexto não explode ao listar milhares de itens"
  },
  {
   "id": "ia-llm-laco-de-agente-com-limite",
   "nome": "Laço de agente com limite",
   "receita": "máximo de passos, orçamento de tokens, parada por objetivo e registro de cada ação",
   "prova": "um laço travado para sozinho e informa o motivo"
  },
  {
   "id": "ia-llm-memoria-de-agente",
   "nome": "Memória de agente",
   "receita": "guarde fatos curtos e datados em arquivo, carregue só os relevantes e permita apagar",
   "prova": "o agente lembra a preferência na sessão seguinte"
  },
  {
   "id": "ia-llm-contexto-longo-sem-perder-o-fio",
   "nome": "Contexto longo sem perder o fio",
   "receita": "resuma o que passou, mantenha fixas as instruções e traga o trecho exato quando preciso",
   "prova": "a resposta usa um detalhe do início da conversa"
  },
  {
   "id": "ia-llm-cache-de-prefixo",
   "nome": "Cache de prefixo",
   "receita": "ponha o conteúdo estável (instruções, documentos) antes do variável e marque para cache",
   "prova": "o custo e a latência caem na segunda chamada"
  },
  {
   "id": "ia-llm-reduzir-custo-por-tarefa",
   "nome": "Reduzir custo por tarefa",
   "receita": "modelo menor onde serve, prompt mais curto, cache, lote e limite de saída",
   "prova": "custo por tarefa antes e depois no mesmo conjunto"
  },
  {
   "id": "ia-llm-roteamento-entre-modelos",
   "nome": "Roteamento entre modelos",
   "receita": "classifique a tarefa e envie fácil ao modelo barato e difícil ao forte, com fallback",
   "prova": "a qualidade mantém e o custo médio cai"
  },
  {
   "id": "ia-llm-streaming-de-resposta",
   "nome": "Streaming de resposta",
   "receita": "consuma por eventos, mostre parcial e trate corte e cancelamento",
   "prova": "o texto aparece enquanto gera e cancelar interrompe"
  },
  {
   "id": "ia-llm-retry-e-limite-de-taxa",
   "nome": "Retry e limite de taxa",
   "receita": "backoff exponencial com jitter em 429 e 5xx, respeite Retry-After e use fila",
   "prova": "carga alta não derruba com erro 429"
  },
  {
   "id": "ia-llm-guardrails-de-entrada",
   "nome": "Guardrails de entrada",
   "receita": "trate texto do usuário e de documentos como dado, nunca instrução; separe com delimitadores",
   "prova": "um documento com \"ignore as regras\" não muda o comportamento"
  },
  {
   "id": "ia-llm-injecao-de-prompt-em-ferramentas",
   "nome": "Injeção de prompt em ferramentas",
   "receita": "nunca execute ação sensível por texto vindo de ferramenta ou web sem confirmação",
   "prova": "o teste de injeção é recusado ou pede confirmação"
  },
  {
   "id": "ia-llm-filtrar-dado-sensivel",
   "nome": "Filtrar dado sensível",
   "receita": "detecte e mascare e-mail, CPF, chave e segredo antes de enviar ao modelo e nos logs",
   "prova": "o log de uma chamada não contém dado pessoal"
  },
  {
   "id": "ia-llm-resposta-que-admite-nao-saber",
   "nome": "Resposta que admite não saber",
   "receita": "instrua a dizer \"não sei\" sem fonte e teste com perguntas sem resposta nos documentos",
   "prova": "perguntas sem resposta recebem recusa em vez de invenção"
  },
  {
   "id": "ia-llm-reduzir-alucinacao",
   "nome": "Reduzir alucinação",
   "receita": "ancore em fonte, peça citação, baixe a temperatura e valide fatos checáveis por código",
   "prova": "taxa de afirmações sem fonte cai no conjunto"
  },
  {
   "id": "ia-llm-temperatura-e-amostragem",
   "nome": "Temperatura e amostragem",
   "receita": "temperatura baixa para extração e código, mais alta para criação; fixe a semente quando possível",
   "prova": "saídas reproduzíveis na tarefa de extração"
  },
  {
   "id": "ia-llm-extrair-dados-de-texto",
   "nome": "Extrair dados de texto",
   "receita": "defina campos e tipos, aceite null, valide e rode em exemplos de formatos diferentes",
   "prova": "precisão por campo medida em 50 documentos"
  },
  {
   "id": "ia-llm-classificar-com-llm",
   "nome": "Classificar com LLM",
   "receita": "liste as classes com definição e exemplo, inclua \"outro\" e meça matriz de confusão",
   "prova": "acurácia e confusões por classe medidas"
  },
  {
   "id": "ia-llm-resumir-com-fidelidade",
   "nome": "Resumir com fidelidade",
   "receita": "peça pontos com citações do original e verifique números e nomes contra a fonte",
   "prova": "nenhum número do resumo fora do original"
  },
  {
   "id": "ia-llm-visao-ler-imagem-e-documento",
   "nome": "Visão: ler imagem e documento",
   "receita": "envie a imagem em boa resolução, pergunte o específico e valide a extração contra o texto conhecido",
   "prova": "campos lidos de 20 imagens batem com o gabarito"
  },
  {
   "id": "ia-llm-transcrever-e-analisar-audio",
   "nome": "Transcrever e analisar áudio",
   "receita": "transcreva com timestamps, separe falantes se preciso e rode o modelo sobre o texto",
   "prova": "a transcrição de teste tem erro de palavras abaixo de 10%"
  },
  {
   "id": "ia-llm-embeddings-para-agrupar",
   "nome": "Embeddings para agrupar",
   "receita": "gere vetores, reduza a dimensão se preciso e agrupe com k-means/HDBSCAN, rotulando os grupos",
   "prova": "os grupos fazem sentido na leitura de amostras"
  },
  {
   "id": "ia-llm-fine-tuning-ou-prompt",
   "nome": "Fine-tuning ou prompt?",
   "receita": "esgote prompt, exemplos e RAG antes; faça fine-tuning com 500+ exemplos limpos para estilo ou formato fixo",
   "prova": "o modelo ajustado vence o prompt no conjunto de teste"
  },
  {
   "id": "ia-llm-rodar-modelo-local",
   "nome": "Rodar modelo local",
   "receita": "escolha o modelo pelo hardware (quantização), use llama.cpp/Ollama e meça tokens por segundo",
   "prova": "o modelo responde offline na velocidade medida"
  },
  {
   "id": "ia-llm-observabilidade-de-llm",
   "nome": "Observabilidade de LLM",
   "receita": "registre prompt, versão, tokens, latência, custo e resultado de cada chamada com id",
   "prova": "qualquer resposta ruim pode ser reproduzida pelo log"
  },
  {
   "id": "ia-llm-feedback-do-usuario-no-loop",
   "nome": "Feedback do usuário no loop",
   "receita": "capture polegar e correção, transforme em casos de avaliação e revise por amostragem",
   "prova": "os casos reprovados entram no conjunto de teste"
  },
  {
   "id": "ia-llm-versionar-prompts",
   "nome": "Versionar prompts",
   "receita": "prompts em arquivos versionados com nome e data, e a versão registrada em cada chamada",
   "prova": "dá para voltar ao prompt de ontem com um comando"
  },
  {
   "id": "ia-llm-seguranca-de-chave-de-api",
   "nome": "Segurança de chave de API",
   "receita": "chave só no servidor, escopo e limite de gasto por chave, rotação e nunca no front",
   "prova": "a chave não aparece no bundle nem no repositório"
  }
 ]
}
