Saída Estruturada em LLMs: JSON Schema Explicado

Peça a um modelo para responder em JSON e na maioria das vezes json.loads() funciona sem problemas. As falhas são as que custam uma sessão de debug: um comentário de uma linha dentro do objeto, um code fence de markdown envolvendo tudo, uma chave escrita userEmail quando seu código espera user_email. Um prompt mais estrito (“responda APENAS com o objeto JSON, sem nenhum outro texto”) torna esses casos mais raros. Não os torna impossíveis, porque o modelo ainda pode ignorar o pedido. A saída estruturada remove o pedido da equação: você entrega à API um JSON Schema, que restringe a amostragem de tokens do próprio modelo para que a resposta tenha que corresponder a ele. ...

6 de novembro de 2026 · 9 minutos · 1875 palavras · SpaghettiCoder

ESLint vs Prettier: Diferenças e Como Combiná-los

Você salva um arquivo, o Prettier reformata, e o ESLint aponta imediatamente um erro na linha que o Prettier acabou de tocar. As duas ferramentas estão configuradas, as duas estão rodando, e em vez de ajudar, estão brigando uma com a outra. As duas ferramentas fazem trabalhos diferentes. O problema é que as duas têm opinião sobre uma única coisa: a aparência do código na tela. O que o ESLint realmente verifica O ESLint analisa seu código em uma árvore de sintaxe abstrata e executa regras sobre a estrutura dela. A maior parte do seu valor vem de regras que encontram bugs reais: uma variável nunca definida, um return inalcançável depois de outro return, um import que ficou sem uso depois de uma refatoração, uma chave duplicada em um objeto que sobrescreve a primeira em silêncio. São verificações semânticas: o ESLint lê o que o código faz. ...

1 de novembro de 2026 · 7 minutos · 1326 palavras · SpaghettiCoder

Como Criar um LLM Eval: Testar Prompts Como Código

Por que “parece certo” não é um teste para um prompt Você aperta a redação de um prompt que roteia tickets, testa nos três exemplos abertos no seu notebook de rascunho e coloca no ar. Uma semana depois, reclamações de cobrança que antes caíam na fila certa começam a cair em “pergunta”. Não os três casos que você checou: os outros quatrocentos que você não checou. Nada quebra. Não há stack trace. O prompt, lido em voz alta, ainda parece bom. ...

30 de outubro de 2026 · 9 minutos · 1737 palavras · SpaghettiCoder

Function Calling e Tool Use em LLMs, Explicados

O que o function calling realmente faz em um LLM Pergunte a um modelo “qual é a previsão do tempo em Austin agora” sem nenhuma conexão com o mundo externo, e ele tem duas opções: dizer que não sabe, ou inventar alguma coisa. O function calling dá a ele uma terceira opção. Ele descreve o que precisa, passa essa descrição para o seu código e espera uma resposta real antes de responder. ...

22 de outubro de 2026 · 8 minutos · 1611 palavras · SpaghettiCoder

npm vs Yarn vs pnpm: Qual Gerenciador de Pacotes Usar

Rode npm install em um projeto, depois pnpm install sobre o mesmo package.json, e você tem duas árvores node_modules diferentes e dois lockfiles diferentes. Acrescente um colega que usa Yarn e o repositório acaba com três lockfiles no histórico, cada um descrevendo uma árvore de dependências ligeiramente diferente. Os três leem o mesmo package.json e baixam do mesmo registro do npm. O que eles não combinam entre si é o que gravar no disco. ...

17 de outubro de 2026 · 8 minutos · 1522 palavras · SpaghettiCoder

Decoradores Python Explicados com Exemplos

O que um decorador realmente faz com sua função Você quer medir o tempo de cada função que chama uma API externa lenta. Pode colar chamadas a time.perf_counter() em cada uma, ou escrever a medição uma única vez e aplicá-la em todas. Um decorador é a segunda opção: é uma função que recebe outra função, a envolve em um comportamento extra e devolve a versão envolvida com o mesmo nome original. ...

7 de outubro de 2026 · 7 minutos · 1330 palavras · SpaghettiCoder

Ambientes Virtuais Python: venv, pip e uv

Instale dois projetos Python na mesma máquina e o segundo pode quebrar o primeiro. Um precisa de requests==2.28, o outro de requests==2.32, e o pip tem exatamente um diretório site-packages global para escrever. A última instalação vence, em silêncio. Você descobre quando o outro projeto começa a lançar erros que não têm nada a ver com o código que você acabou de alterar. Um ambiente virtual dá a cada projeto o seu próprio site-packages. Nada global é tocado, e dois projetos podem depender de versões incompatíveis da mesma biblioteca sem que nenhum perceba o outro. ...

30 de setembro de 2026 · 7 minutos · 1489 palavras · SpaghettiCoder

Como Funcionam os Agentes CLI de Código e Qual Escolher

O que diferencia um agente de CLI de código do outro Peça a um agente de CLI para código que conserte um teste que está falhando, e ele não vai responder com uma sugestão. Ele lê a saída do teste, abre o arquivo, edita uma linha, roda o teste de novo e avisa quando ele passar. Esse loop é o produto, não a janela de chat. O modelo dentro do loop recebe a maior parte da atenção, e é também a parte que muda mais rápido: os fornecedores trocam de modelo a cada poucos meses, e vários agentes deixam você escolher. O que fica fixo é o harness ao redor do modelo — quais tools ele alcança, como gerencia o contexto, o que pode rodar sem perguntar, e onde esses comandos executam. Dois agentes rodando o mesmo modelo podem se comportar de forma bem diferente por causa disso. O harness é o que você está de fato escolhendo. ...

23 de setembro de 2026 · 8 minutos · 1689 palavras · SpaghettiCoder