<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ai on Rafael Zago</title><link>https://www.rafaelvzago.com/tags/ai/</link><description>Recent content in Ai on Rafael Zago</description><generator>Hugo</generator><language>pt-BR</language><copyright>© Rafael Zago</copyright><lastBuildDate>Sun, 26 Jul 2026 11:00:02 -0300</lastBuildDate><atom:link href="https://www.rafaelvzago.com/tags/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>Migrei de Jekyll para Hugo com desenvolvimento agentic</title><link>https://www.rafaelvzago.com/posts/migrei-o-blog-de-jekyll-para-hugo-com-desenvolvimento-agentic/</link><pubDate>Sun, 26 Jul 2026 00:00:00 -0300</pubDate><guid>https://www.rafaelvzago.com/posts/migrei-o-blog-de-jekyll-para-hugo-com-desenvolvimento-agentic/</guid><description>&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/img/headers/migrei-o-blog-de-jekyll-para-hugo-com-desenvolvimento-agentic.png" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/img/headers/migrei-o-blog-de-jekyll-para-hugo-com-desenvolvimento-agentic.png" alt="Ilustração da migração de Jekyll para Hugo" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;p>Em 24 de julho de 2026 este blog deixou de ser Jekyll + Chirpy e passou a ser Hugo + Archie. Eu podia ter tratado isso como &amp;ldquo;troca o tema e torce&amp;rdquo;. Não tratei. Foi cutover com PRD, tickets verticais, preview local obrigatório e tag de rollback imutável.&lt;/p>
&lt;p>Já escrevi sobre &lt;a href="https://www.rafaelvzago.com/posts/como-eu-uso-ia-no-desenvolvimento/">como organizo skills e agentes&lt;/a> e sobre o &lt;a href="https://www.rafaelvzago.com/posts/claude-code-automatizando-workflow-prd-pr/">fluxo genérico de PRD a PR&lt;/a>. Este post é o estudo de caso: o mesmo playbook, numa migração real deste repositório. Processo na espinha, passos reproduzíveis no meio. Multilíngue fica para o próximo capítulo. Aqui o assunto é o cutover Jekyll → Hugo.&lt;/p></description></item><item><title>Como eu uso IA no desenvolvimento (Cursor e Claude)</title><link>https://www.rafaelvzago.com/posts/como-eu-uso-ia-no-desenvolvimento/</link><pubDate>Wed, 22 Jul 2026 00:00:00 -0300</pubDate><guid>https://www.rafaelvzago.com/posts/como-eu-uso-ia-no-desenvolvimento/</guid><description>&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/img/headers/como-eu-uso-ia-no-desenvolvimento.png" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/img/headers/como-eu-uso-ia-no-desenvolvimento.png" alt="" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;p>A pergunta que mais ouço sobre IA no dia a dia não é &amp;ldquo;qual modelo você usa?&amp;rdquo;. É &amp;ldquo;como você organiza isso para não virar bagunça?&amp;rdquo;.&lt;/p>
&lt;p>Eu uso IA o tempo todo, no código e neste blog. O que mudou a minha rotina não foi um prompt milagroso. Foi tratar o agente como alguém que entra no projeto sem contexto: se a regra não está em arquivo, ela não existe. Skills, &lt;code>AGENTS.md&lt;/code>, agentes com papéis estreitos e eu revisando o resultado. Sem mágica.&lt;/p></description></item><item><title>Claude Code: do PRD ao pull request com agentes</title><link>https://www.rafaelvzago.com/posts/claude-code-automatizando-workflow-prd-pr/</link><pubDate>Fri, 08 May 2026 00:00:00 -0300</pubDate><guid>https://www.rafaelvzago.com/posts/claude-code-automatizando-workflow-prd-pr/</guid><description>&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/img/headers/claude-code-automatizando-workflow-prd-pr.png" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/img/headers/claude-code-automatizando-workflow-prd-pr.png" alt="" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;h2 id="introdução">Introdução&lt;/h2>
&lt;p>Descobri o Claude Code há alguns meses quando nosso time estava lutando para manter a consistência em code reviews. Depois de seis semanas usando a ferramenta, conseguimos reduzir o tempo médio de PR de 4 dias para 1 dia — e isso foi só o começo.&lt;/p>
&lt;p>O Claude Code automatiza boa parte do workflow de desenvolvimento. PRDs, TDD, code review, até a configuração de MCP. Não é mágica, mas funciona bem o suficiente para fazer diferença no dia a dia.&lt;/p></description></item><item><title>Como funciona uma IA quando você conversa com ela</title><link>https://www.rafaelvzago.com/posts/o-que-acontece-quando-voce-conversa-com-uma-ia/</link><pubDate>Wed, 24 Dec 2025 00:00:00 -0300</pubDate><guid>https://www.rafaelvzago.com/posts/o-que-acontece-quando-voce-conversa-com-uma-ia/</guid><description>&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/img/headers/o-que-acontece-quando-voce-conversa-com-uma-ia.png" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/img/headers/o-que-acontece-quando-voce-conversa-com-uma-ia.png" alt="" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/uhxG2B96k7Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h1 id="desvendando-os-modelos-de-linguagem-de-grande-escala">Desvendando os modelos de linguagem de grande escala&lt;/h1>
&lt;p>Quando você digita uma mensagem pro ChatGPT ou pro Claude, o que acontece do outro lado é mais simples do que parece, mas opera numa escala difícil de visualizar.&lt;/p>
&lt;h2 id="a-essência-um-narrador-de-futebol-digital">A essência: um narrador de futebol digital&lt;/h2>
&lt;p>Imagine a cena: final de Copa do Mundo, Brasil e Argentina, últimos minutos de jogo. O Galvão Bueno está narrando, a bola chega no atacante brasileiro, ele dribla um, dribla dois&amp;hellip; e de repente o áudio falha. A transmissão continua, mas a voz do narrador desapareceu.&lt;/p></description></item><item><title>Skupper + InstructLab: controlando e protegendo IA (ato 3)</title><link>https://www.rafaelvzago.com/posts/controlando-progetendo-ia-deepseek-skupper-istio-terceiro-ultimo-ato/</link><pubDate>Mon, 05 May 2025 00:00:00 -0300</pubDate><guid>https://www.rafaelvzago.com/posts/controlando-progetendo-ia-deepseek-skupper-istio-terceiro-ultimo-ato/</guid><description>&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/img/headers/controlando-e-protegendo-modelos-de-ia-pt3.png" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/img/headers/controlando-e-protegendo-modelos-de-ia-pt3.png" alt="" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;h2 id="veja-a-solução-em-ação">Veja a Solução em Ação&lt;/h2>
&lt;p>Neste artigo, vamos implementar passo a passo o chatbot InstructLab no Kubernetes usando Skupper para conectar de forma segura um modelo de IA privado com uma interface pública. Esta é a continuação prática do padrão de solução apresentado no artigo anterior.&lt;/p>
&lt;h3 id="conceitos-e-comandos-usados-na-demonstração">Conceitos e Comandos Usados na Demonstração&lt;/h3>
&lt;blockquote>
&lt;p>NOTA: Os comandos a seguir são utilizados para configurar o ambiente e implantar o chatbot InstructLab. Eles são extraídos do projeto InstructLab e adaptados para esta demonstração.&lt;/p></description></item><item><title>Skupper + InstructLab: controlando e protegendo IA (ato 2)</title><link>https://www.rafaelvzago.com/posts/controlando-progetendo-ia-deepseek-skupper-istio-segundo-ato/</link><pubDate>Sun, 04 May 2025 00:00:00 -0300</pubDate><guid>https://www.rafaelvzago.com/posts/controlando-progetendo-ia-deepseek-skupper-istio-segundo-ato/</guid><description>&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/img/headers/controlando-e-protegendo-modelos-de-ia-pt2.png" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/img/headers/controlando-e-protegendo-modelos-de-ia-pt2.png" alt="" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;h2 id="veja-a-solução-em-ação">Veja a Solução em Ação&lt;/h2>
&lt;p>Neste artigo, vamos preparar todo o ambiente para servir o modelo de IA generativo Deepseek usando o InstructLab, baixando o modelo, convertendo-o para o formato GGUF e implantando o chatbot InstructLab. Além disso, vamos expor o serviço de forma segura usando Skupper.&lt;/p>
&lt;h3 id="conceitos-e-comandos-usados-na-demonstração">Conceitos e Comandos Usados na Demonstração&lt;/h3>
&lt;blockquote>
&lt;p>NOTA Certifique-se de explicar o que cada comando Skupper faz na primeira vez que você o usa, especialmente para pessoas não familiarizadas com o Skupper. Os seguintes comandos devem ser explicados:&lt;/p></description></item><item><title>Skupper + InstructLab: controlando e protegendo IA (ato 1)</title><link>https://www.rafaelvzago.com/posts/controlando-progetendo-ia-deepseek-skupper-istio-primeiro-ato/</link><pubDate>Fri, 02 May 2025 00:00:00 -0300</pubDate><guid>https://www.rafaelvzago.com/posts/controlando-progetendo-ia-deepseek-skupper-istio-primeiro-ato/</guid><description>&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/img/headers/controlando-e-protegendo-modelos-de-ia-pt1.png" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/img/headers/controlando-e-protegendo-modelos-de-ia-pt1.png" alt="" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;h2 id="a-história-por-trás-deste-padrão-de-solução">A história por trás deste padrão de solução&lt;/h2>
&lt;p>A crescente demanda por aplicações orientadas por IA traz um desafio importante: como implantar e operar modelos de IA com segurança em ambientes que exigem proteção rigorosa dos dados, ao mesmo tempo em que esses modelos precisam ser acessíveis por serviços públicos. Essa necessidade ficou clara durante o desenvolvimento de um chatbot de IA local, projetado para lidar com informações sensíveis e proprietárias, o que exigiu uma solução capaz de manter o modelo protegido dentro de um ambiente seguro.&lt;/p></description></item><item><title>InstructLab e Skupper: IA local sem expor seus dados</title><link>https://www.rafaelvzago.com/posts/running-local-ai-with-instruct-lab/</link><pubDate>Thu, 01 Aug 2024 00:00:00 -0300</pubDate><guid>https://www.rafaelvzago.com/posts/running-local-ai-with-instruct-lab/</guid><description>&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/img/headers/instructlab_workshop-skupper-patient-portal.jpg" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/img/headers/instructlab_workshop-skupper-patient-portal.jpg" alt="" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;h2 id="bem-vindo-ao-ollama-pilot">Bem-vindo ao Ollama Pilot&lt;/h2>
&lt;h2 id="problema-a-resolver">Problema a resolver&lt;/h2>
&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/instructlab_banner.jpg" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/instructlab_banner.jpg" alt="contest" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;p>O objetivo principal deste projeto é criar uma conexão segura entre dois sites, permitindo a comunicação entre a máquina do engenheiro e um modelo Instruct Lab. O modelo merlinite-7b-lab-Q4_K_M.gguf será usado no chatbot e está disponível no Instruct Lab. A licença do modelo está em &lt;a href="https://instructlab.ai/">Instruct Labs&lt;/a>.&lt;/p>
&lt;p>E por que o banner? Porque o engenheiro precisa saber quem é melhor: LeBron ou Jordan. O chatbot responde a essa pergunta: recebe o input do usuário, envia ao modelo e devolve a resposta do merlinite.&lt;/p></description></item><item><title>OpenShift AI e Skupper: prevenção de fraude em seguros</title><link>https://www.rafaelvzago.com/posts/ai-com-skupper-para-previnir-fraudes/</link><pubDate>Mon, 17 Jun 2024 00:00:00 -0300</pubDate><guid>https://www.rafaelvzago.com/posts/ai-com-skupper-para-previnir-fraudes/</guid><description>&lt;p>&lt;a href="https://www.rafaelvzago.com/assets/img/headers/AI-com-skupper-para-previnir-fraudes.webp" class="img-lightbox" data-lightbox>
	&lt;img src="https://www.rafaelvzago.com/assets/img/headers/AI-com-skupper-para-previnir-fraudes.webp" alt="" loading="lazy" decoding="async">
&lt;/a>&lt;/p>
&lt;h2 id="descrição">Descrição&lt;/h2>
&lt;p>Este workshop mostra como usar Skupper para conectar serviços de dados locais a ambientes de AI/ML na nuvem. Inclui uma aplicação Go em um container podman que expõe dados internos para conexão via Skupper. O treinamento do modelo AI/ML roda em um cluster OpenShift AI na AWS, usando os serviços de OpenShift AI/ML.&lt;/p>
&lt;h2 id="aviso">Aviso&lt;/h2>
&lt;p>Este lab usa o exemplo do &lt;a href="https://github.com/rh-aiservices-bu/insurance-claim-processing">AI/ML Workshop&lt;/a> criado pelo time Red Hat AI Services. O workshop original está no GitHub e traz tudo o que é preciso para rodar o lab. A adaptação aqui usa Skupper para ligar os serviços de dados locais ao ambiente de AI/ML na nuvem.&lt;/p></description></item></channel></rss>