E aí Galera seguinte tá a hoje vai ser um dia bacana porque eu acredito que muitos de vocês vão ver coisa nova apesar que eu acho que vocês também viram coisas novas nos dois primeiros dias né quem aqui teve bastante gente que participou aí do dia e do segundo dia. Como é que estamos aí, galera? Olha, eu achei que foi muita informação para eu poder assimilar em três dias. Mas eu estou tentando assimilar. Cara, então segura hoje ainda que também vai ter muita informação. Eu estou com o Rafael aí, cara. Nesses dias aí o negócio é fechado. Só quero saber quando é que entra na plataforma. Mas é positivo, tá? É positivo. É uma coisa ruim. A ideia do evento, cara, principalmente de fazer esses três dias, é muita informação, é denso, é só ver o tempo que a gente ficou e as coisas não foram aprofundadas. Entendeu? Isso, quando a gente vê essa situação, a gente percebe como a gente tá fora da bolha que a gente tá acostumado. Entendeu? Tem coisas situações, a gente percebe como a gente tá fora da bolha que a gente tá acostumado, entendeu? Tem coisas que a gente tá falando aqui, eu tava falando, por exemplo, hoje eu tava conversando, não sei com quem, acho que era com o Leonan. Cara, por exemplo, todo mundo manja de API REST, certo? É natural pra gente, é um negócio comum. Entendeu? Agora, IA tem os, vai ter, entre aspas, aquela parada que é comum, entendeu? É chamar um agente, é chamar um MCP, é conversar não sei o quê. Tem patterns. Hoje vocês vão aprender design patterns de A, entendeu? Então, começa a entrar no outro mundo. Como que você faz teste de A? Tipo, não digo um TDD, mas como você faz o teste automatizado cara, tudo muda, entendeu? a arquitetura da parada muda, então tudo muda a gente começa a ter problema que a gente não tinha a gente começa a ter situações que a gente nem imaginava que existia o que eu acho que é bom desse evento pra vocês não é nem questão de nível de profundidade porque não dá pra aprofundar mas, pelo menos, quando alguém falar alguma coisa com vocês, aquela parada, aquele nome já não é estranho, aquele conceito já não é estranho, entendeu? Apesar de você não ter o detalhe. Fora que se você pegar o que a gente falou, mesmo que muita gente não vai estudar, não vai fazer curso com a gente, nada disso, já tem uma bela base de pontos que são importantes você conhecer e aos poucos se aprofundando. Porque, cara, é muita informação. Eu tenho que admitir pra vocês que é muita informação. E pensa que a gente não chegou na parte de agente, cara. Entendeu? Que é um outro mundo que a gente vai falar hoje. A gente não falou de agente, a gente não falou em MCP. Ontem, no final, a gente falou sobre reggae, né? Mas hoje a gente tem bastante coisa pra ver. O interessante é, vou mostrar conceito, quem me conhece sabe que eu não dou curso de cursor, de forma geral. Mas a gente vai ver algumas coisas na prática. Eu vou mostrar código, vou mostrar comportamento e vou tentar alinhar para a aula não ficar uma aula só de Scalidraw. Tem uns exemplos, preparei algumas coisas para vocês. Mas eu acho que vai ficar bacana, pelo menos para vocês conseguirem, como se diz, pegar a ideia do negócio. Eu acho que se vocês saírem nesses três dias, pelo menos tendo uma visão geral dessa parada de A, dessa bolha que a gente está tendo que furar e entrar, vai ser o nosso novo REST, vai ser o nosso novo DDD, vai ser a nossa arquitetura em camada. Toda essa coisa que é básica para a gente, orientação a objetos, é natural. E aí A, em algum momento, vai ficar natural para todo mundo, porque todo mundo vai ter que desenvolver aplicações que tem A. Não tem como mais fugir. É só uma questão de tempo. Você vai ver a sua empresa já começar a falar para você fazer isso e você vai começar a perceber que tem dores, mas hoje já tem patterns, já tem aplicações de filtro, de guardrails que vai evitar um monte de coisa de segurança, de prompt inject. Cara, então tem muita coisa legal, e eu vou, a gente vai cobrir hoje, tá? Então, galera, só para a gente alinhar a expectativa, tá? Hoje é um dia interessante, porque a gente vai falar sobre MCP, que é um protocolo, eu acho que todo mundo já ouviu falar, ou se não ouviu falar, vai ouvir falar hoje, eu tenho até vídeo no YouTube, quem se não ouviu falar, vai ouvir falar hoje. Eu tenho até vídeo no YouTube. Quem faz parte da nossa pós-graduação em um MBA em arquitetura, eu fiz um laboratório específico sobre MCP. E depois que a gente falar sobre MCP, a gente vai falar de agentes de ar. E aí vocês vão começar, principalmente... É muito louco, cara, porque a gente não sabe o que é um agente de ar. Saca, tipo assim, o nível que a gente está começando a entrar de consciência, qual que é a diferença de um agente para uma aplicação comum? O agente é um microserviço? Começa a entrar essas perguntas, qual que é a diferença de uma coisa com a outra? E vocês vão perceber que é bem diferente o trabalho com um agente do que o trabalho com a aplicação. Apesar de todos terem que ter deploy, terem que ter banco de dados, trabalham de forma isolada, tem todos os mesmos conceitos de software, mas a ideia central da parada é outra. Beleza? Então, vamos lá. Tem duas mãozinhas levantadas. Eu vou responder três mãos levantadas. O Edson, o Luciano e o Wagner. E daí a gente começa. Daí o Cristiano, numa pausa, eu levanto você, eu tiro a sua dúvida e daí a gente vai formando uma fila e liguem a câmera para tirar dúvida. Fechou? Vamos lá, Edson. Se a gente começar. Começa você, Edson. Por favor, você chegou primeiro. Ah, eu estou? Tem uma fila aqui. Para mim, aparece uma fila. A ordem que a galera levantou fica fácil. Sou eu mesmo? O Edson levantou primeiro que eu. Tá, massa. Então, massa, então. Galera, boa noite aí e parabéns a todos que estão aqui, tentando se atualizar e manter a mente aberta, né? E parabenizar a Fulsaico aí, o seu aluno lá, por ajudar pra caramba, eu vinha voltando. Mas, cara, duas perguntas, uma é mais focada sobre a questão do negócio, né, Wesley? Queria saber, tirar dúvidas, se a gente que já é aluno consegue estender para o começo do mês que vem esse pagamento e uma outra como eu já venho mexendo algumas coisas assim, estudando documentação, já fiz alguns projetinhos de computação para, fugiu o nome agora visão computacional. E, cara, parece um pouco com o que vem sempre a toda vez que tem uma nova virada de tecnologia, esse sentimento também, você que tem um network bem maior aí com as grandes empresas, é como teve a questão da implementação dos ORM, depois lá, toda a questão que vem com... Pô, fugiu o nome do framework agora, de Ruby. Rails. Isso, isso, Rails. São os pontos de virada, né? As viradas que todo mundo começa a fazer. Tá aí todo mundo. Agora, você acha que também é um novo... Eu acho não, cara. Esse é o maior de todos, tá? Esse é o maior de todos, cara. O que todo mundo fala hoje é... A IA... O que a IA tá fazendo hoje é maior do que a própria criação da internet. A internet virou apenas uma estrada agora entendeu? é basicamente essa pegada então a IA é colocada sobre pagamento, essas coisas, cara eu não tenho todos os detalhes mas o que eu sei que às vezes o pessoal nosso faz é ah, eu não tenho todo o dinheiro agora e eu vou receber até semana que vem cara, às vezes a gente faz um bem bolado que você dá um sinal, entendeu? que não seja um sinal muito às vezes, muito grande, mas consegue te ajudar. E daí a gente marca uma data de pagamento. Se vocês entrarem no site nosso, tem um banner ali para clicar e entrar em contato. Aí a gente consegue conversar e ajustar esses detalhes. Então, se vocês querem fazer, eu acho que o importante, principalmente nessa semana, no final dessa semana, vai ter, como se diz, virada de lote. Então, o valor vai subir um pouco. Então, quem tiver interesse, às vezes, ah, meu cartão de crédito não fechou, conversa com a nossa equipe, a gente conversa. Cara, a real é o seguinte, a gente tem todo o interesse em fazer com que vocês estudem com a gente. O que a gente tenta fazer sempre é honrar, tipo, os prazos, os lotes, esses tipos de coisa, entendeu? Mas a gente sempre tenta flexibilizar, porque tem gente que tem dois cartões e quer pagar uma parte no Pix, uma parte no cartão, no outro cartão da mulher. Cara, eu vou falar, não. O cara vai querendo fazer. Na real é essa, entendeu? Você percebe que a pessoa está ali se virando exatamente para conseguir participar, tá? Então, entre em contato quem estiver nessa mesma sensação aí a falar aí com a nossa equipe. Eu vou, inclusive, mandar o link aqui. Leona, coloca o link no chat da nossa página, só para quem não sabe ou que chegou hoje, etc. A gente criou um MBA em Engenharia de Software com o IA. É um MBA reconhecido pelo MEC a gente tem uma faculdade que chama FCTec Faculdade Full Cycle de Tecnologia e o nosso MBA, ele é um programa de 12 meses e a gente tem um foco muito grande que é engenharia de software resumo a história, é algo feito pra desenvolvedor, sacou? hoje o que mais a gente vê no dia a dia é, você vai ver uma pós-graduação, um curso de A, qualquer coisa assim, você vai perceber que machine learning, deep learning, treinamento de modelo, visão não sei o que, é um cachorro, é um gato, tem cauda, classificação, análise de sentimento, não que essas coisas não sejam importantes, são muito importantes mas isso não tem necessariamente uma ligação tão forte com o nosso dia a dia de desenvolvimento de software enquanto a bolha da ciência de dados de machine learning, etc criam modelos, treinam esses modelos trabalham dessa forma, nós somos usuários desses modelos então o nosso objetivo aqui no final das contas é o que? conseguir mostrar pra vocês como é a nova, o novo mundo da arquitetura de software, a real é essa entendeu? a arquitetura de software mudou entendeu? a forma de como você arquiteta uma aplicação hoje mudou antigamente eu tinha que pensar como que eu escalo a minha aplicação, como que eu trabalho com componentes. Hoje, eu tenho que pensar como que eu escalo usando o LLM. Como é que eu escalo sem estourar meu custo por token? Como é que funciona isso? Como é que funciona a parte de segurança? Como é que funciona um monte de aspecto, entende? Então mudou muito o jogo. E é uma coisa que todo dia a gente tá tendo que estudar, tá se atualizando. Tem muita coisa que é que nem framework JavaScript, mas tem algumas coisas que são interessantes, caras. Sabe o que que é? E aí que eu bato sempre na tecla. Fundamento. Entendeu? Vai mudar framework? Vai mudar versão? Vai mudar modelo? Vai. Mas, cara, a ideia do LLM é a mesma. As chamadas são as mesmas. Tokens de entrada, tokens de saída, quantidade de tokens, caching, tem as variações dos providers, tem diversas situações, mas no final das contas, tem alguns conceitos que são fundamentos. Entendeu? E você entendendo bem esses fundamentos, você consegue navegar nesse mundo que está, no final das contas, mudando o tempo inteiro. E esse é o nosso principal ponto. Dar fundamento, mas ao mesmo tempo mostrar coisa prática. Porque também não dá pra ficar só na teoria. Então a gente vai te ajudar a ser mais produtivo com workflow de desenvolvimento. Quem aqui pegou algum insight ontem, galera, de desenvolvimento? Cursor, alguma dica de analisar bug, conseguir um prompt mais decente? Faz diferença, fala a verdade. Faz a diferença. Então, a nossa ideia é conseguir fazer com que você fique produtivo o suficiente para ter fundamento para programar e conseguir programar e desenvolver mais rápido. A sua visão vai ser muito mais arquitetural do que ficar dependendo de framework. Mas, novamente, a gente não consegue. Se você nunca ouviu falar num reg, que eu mostrei ontem, onde a gente pega e guarda as coisas no banco de dados, vetorizadas, com chunking, com overlapping, com splitter e etc, você não consegue desenvolver uma aplicação dessa. Porque você não sabe nem o que é um overlap, você não sabe como é que funciona o text splitter, você não sabe como é que funcionam os chunks, como estruturar metadados. Quando eu digo você, eu digo quem nunca ouviu falar. Então, você não consegue desenvolver algo que você não entende o fundamento. E por isso que eu bato muito no pé, cara. Eu sou chato com isso e tem muita gente que às vezes prefere só coisas na prática, ficar vendo os códigos sendo desenvolvidos, mas hoje em dia não tem nem mais graça ver códigos sendo desenvolvidos, porque não é mais a gente que desenvolve, entendeu? Então, acaba ficando mais perdido do que qualquer outra coisa. Então, a nossa ideia é que você consiga entender essas novas mudanças no mundo de arquitetura, você ser mais produtivo, você aprender a desenvolver aplicações que são integradas com IA. Ontem, por exemplo, eu mostrei um tipo de aplicação que está integrado com IA, mas não necessariamente é um agente de IA. Hoje, IA, mas não necessariamente é um agente de IA, hoje a gente vai falar de agente. A parte de DevOps, entrega de software, qualidade de software é extremamente importante. Hoje eu vou dar um exemplo pra vocês de uma aplicação multi-agente que acaba tendo a ver com a parte de SRE, por exemplo. Mas, essa é a pegada. A gente tem a parte gravada do curso, que são fundamentos, e a gente tem... Essas sessões que a gente está fazendo no Tech Week, a gente tem isso praticamente toda semana nos nossos programas de MBA. Entendeu? Então, cara, se você tiver afim de fazer um ano essas sessões comigo, não só comigo, com gente melhor que eu em diversos assuntos. Entendeu? Então, o MBA é para você. Semana que vem a gente sobe o preço de novo. A gente tem lotes que a gente está fazendo. E você não precisa ser formado. Se você não tiver graduação, não terminou graduação, você consegue fazer. A gente emite um certificado de extensão universitária pela faculdade também. Maravilha, galera. Show de bola, vamos nessa. Vamos seguir para o Jabá. Mas temos o nosso amigo, né? Tem gente na fila que eu prometi, que é o próximo Luciano, né? Isso. Eu não vou tomar o tempo não, pessoal. Eu vou só... Eu ia fazer uma pergunta, mas você já respondeu, mas eu vou fazer só um relatório, só um relato aqui, que hoje teve um pesquisador, um sociólogo, que ele é um doutor, e ele é amigo meu, um sociólogo, que ele é um doutor, e ele é amigo meu, e ele tinha uma tese de doutorado de 650 páginas, e ele tinha que entregar um resumo dessa tese dele em até 15 páginas para um evento que iria acontecer, que ia entrar para os anais. Ele estava com a mão na cabeça, já tinha 10 dias e ele não sabia o que fazer, procurou alguns analistas da universidade que trabalham lá na área de tecnologia, de TI. E o pessoal fez uns trabalhos com crença artificial e não saiu nada que prestasse. E hoje, eu utilizando as técnicas que eu aprendi lá no curso do Cycle, são as mesmas que o Wesley ensinou nesses dois dias pra gente aqui, no 4.0. São as mesmas que, ele estudou mais aqui ainda ontem, e eu consegui entregar pra ele o trabalho em uma hora e dez na frente dele, ele ficou encantado, porque eu fiz a tese dele, que tinha 600 páginas, acabei resumindo em dez, com o estilo literário dele, com a carga semântica que ele utilizava, sem faltar nada, ele disse, velho, eu tô me vendo aqui, eu tô me vendo, ele nem identificava que fosse um IAC escreveu, porque eu utilizei as técnicas e eu frisei pra ele manter a carga semântica e o estilo literário do autor, foi impressionante, cara, foi impressionante. Cara, prompt muda o jogo, cara, é assim, parece uma coisa boba, é chato, tem que ficar vendo, escrever, ninguém gosta de parar, ficar escrevendo. Mas muda o jogo, cara. Muda o jogo. Ele ficou chocado. Eu disse pra ele, velho, você tá aqui, você tá aqui utilizando quase o estado da arte da DGN Prompt, velho. Então, isso aqui que você tá usando é alta qualidade. Ele ficou chocado, porque ele tentou, ficou dias tentando isso contra as pessoas, usou várias internet especial de inteligência artificial, eu fui na frente dele, usando a mesma o chat GPT que ele tem a conta dele, da conta dele que ele criou e não conseguiu fazer nada, eu consegui dar saída no material em 1h15, ele é disposto a demorar no mínimo 15 dias fazendo isso cara, prompt muda o jogo, cara muda o jogo, e da mesma forma que você faz isso pra um documento você consegue fazer isso pro código é esse que é o negócio. E daí acaba tendo uma diferença muito grande do resultado de um código de um desenvolvedor pra um outro. Entendeu? Porque todos têm a mesma Ferrari. A diferença é que quem chega primeiro é o cara que consegue entender melhor essas coisas. Vamos lá, Wagner, meu amigo. O que que manda? Acho que você tá mudo. Ok, boa noite noite para todo mundo aí ontem eu acompanhei a aula e eu sou desenvolvedor de uma base desenvolvedor .NET back-end e trabalho com a AWS e tal um banco aí e você até mencionou ontem sobre criar, colocar a IA em uma aplicação que já exista. Então eu tentei ficar fazendo, tentando entender a ideia que você estava apresentando com a do Visual Studio, o Professional mesmo, que a gente usa hoje em dia como back-end. Não tenho muita afinidade com o Code. E pelo que eu entendi ontem, mesmo, que a gente usa hoje em dia como back-end. Não tenho muita afinidade com o code, né? E, pelo que eu entendi ontem, todo aquele texto explicativo, o prompt e tudo, se tratava de você criar a sua, toda a sua infraestrutura, criar o que a gente estava acostumado a fazer com pipeline, CICD, tudo pelo, usando o AIA, né? Especificando se vai ter replicação, crescimento horizontal, vertical, o que for. E eu não entendi onde exatamente que você recomenda retificar, passar a IA de novo para analisar toda a infraestrutura que você pode ter montado para a sua aplicação. Se seria na hora do desenvolvimento, manda para uma branch de desenvolvimento lá no repositório, se é só para quando vai para a produção. Cara, depende muito do fluxo da sua empresa. Você pode fazer essas verificações como desenvolvedor, você pode fazer essas verificações automáticas com a gente, plugado lá no GitHub. Então, assim, tem diversas formas, principalmente da forma como você trabalha na nuvem, por exemplo. Então, sei lá, você trabalha com Terraform, você pode criar coisas específicas para fazer verificação do seu manifesto lá do Terraform, para ver se ele está tudo certo, por exemplo. entendeu? Você pode fazer isso pra fazer as validações da sua pipeline de CICD. Ou eu quero adicionar algum passo a mais no processo de CICD, né? Ah, eu quero botar um processo automático de code review. Então, eu quero criar uma issue automaticamente quando um bug for identificado. Então, esses tipos de coisa vai depender muito do seu fluxo, sacou? Então, estuda o seu fluxo porque é aquela parada, sabe aquela parada de cortar cabelo? Tem gente que é careca, tem gente que tem muito cabelo, tem gente com pouco cabelo, então o cabeleireiro tem que conseguir fazer o corte de acordo com a pessoa. Então, tenta entender qual é o seu fluxo, tá? E não pensa assim, aonde que eu enfio IA, tá? Porque daí você tá pensando só querendo enfiar IA. Fala assim, o que eu faço hoje que eu consigo fazer melhor? Ou que é uma dor pra mim, tá? Porque se você quiser apenas enfiar IA é interessante pra testar a prova de conceito, pra brincar. Mas quando você vai colocar na empresa, você botou IA você tá aumentando o custo, você tá aumentando a complexidade, porque tem mais código, tem mais coisa então você tem que pensar em quais são os gargalos que eu tenho no meu fluxo de desenvolvimento hoje, até a minha aplicação tá sendo projetada, desde a arquitetura até o SRE, entendeu? Mapeia isso e veja como é que você consegue trabalhar. Hoje a gente vai falar de agentes e vai ficar um pouco bem claro em relação a funções que a gente consegue desenvolver, tá? Funções que eu digo é roles, objetivos específicos de cada aplicação e nesse caso a gente vai falar que é baseado em agente. Beleza? Fechou, galera? Então, pessoal, vamos aí para o nosso bate-papo de hoje. A gente tem bastante coisa para ver e eu estava pensando por onde começar. E como eu disse para vocês, a gente não consegue ir tudo a fundo de todos os assuntos, tá? Porque é impossível em três dias. Eu tô fazendo o meu melhor. Mas existem duas coisas que são importantes a gente falar. Uma coisa que é palavra modinha no dia de hoje, mas tem que saber e ponto que é MCP, tá? Todo mundo aqui já ouviu falar. Quem nunca ouviu falar em MCP? Tá? que é MCP. Todo mundo aqui já ouviu falar. Quem nunca ouviu falar em MCP? Beleza. Tem uma galera que nunca ouviu falar em MCP. Show de bola. É importante aí para a gente seguir. Então é o seguinte. Eu vou dividir esse nosso bate-papo hoje sobre falar sobre MCP, que é um assunto extremamente importante. E em seguida a gente vai falar sobre agente, a gente vai botar essas coisas pra rodar, eu vou passar os conceitos principais de agente eu vou mostrar código de agente do zero, do zero que eu digo algo muito simples pra você entender a ideia e depois vou mostrar uma aplicação multi-agente passando pelos agentes, explicando como é que funciona essa ideia e depois vou mostrar uma aplicação multi-agente passando pelos agentes, explicando como é que funciona essa ideia e vocês vão, eu acredito que vai ficar bem claro pra vocês, cara é muito louco você ter que explicar a diferença de um agente pra um software, era mais ou menos qual a diferença de um micro serviço com uma aplicação comum entendeu? Então tudo é aplicação, tudo que faz deploy, acessa banco de dados mas a essência é diferente, tá? Então a gente vai ver isso. Então vamos lá falar sobre MCP, eu tenho o material que eu usei esse tempo atrás, eu gravei um vídeo no YouTube, teve coisas que eu aprofundei no MBA que a gente tem de outras turmas, mas eu vou dar uma passada geral aqui pra gente se ligar, tá? Então é o seguinte pessoal, MCP é um protocolo que foi criado pela Antropic todo mundo sabe o que é Antropic, no final das contas, quem não souber escreve eu não sei mas basicamente existem players no mercado e players como mas basicamente existem players no mercado, players como a OpenAI, a gente tem o Google com o modelo famoso dele, que é o Gemini, o Palm II, a gente tem a Microsoft, a gente tem a AWS, então essas empresas estão nesse mundo de IA. E existe a Anthropic, que também é mais uma empresa nessa área. E o modelo dela principal, e daí eu acho que você vai associar, é o Cloud. Toda vez que vocês ouvirem falar no Cloud, sabem que quem faz o Cloud é a Anthropic. E a Anthropic é muito interessante porque ela tem uma, vamos dizer assim, não digo uma visão diferente das outras empresas, mas eu acho que como ela acaba sendo, vamos dizer, muito focada, inclusive, em desenvolvedor e integrações e coisas desse tipo, ela começou a pensar em formas diferentes de como que eu consigo fazer o meu LLM, o meu modelo, conseguir falar com o mundo externo. E o que acontece? Hoje em dia, antes do MCP, isso aí inclusive é uma crítica, dá até discussão no final do dia. crítica, dá até discussão, tá? No final do dia. Antes do MCP, a gente sempre tinha algo, vou colocar aqui o meu modelo, e eu tenho o user, faz uma chamada pro modelo, o modelo ele não tem toda a informação, e ele faz algo chamado de Tool Call, tá? Essa Tool Call. Essa Tool Call basicamente é um software que você cria ali na sua aplicação que faz com que o agente execute isso aqui pra trazer informações, pra executar ações de outros lados. Então a Tool Call é a forma que basicamente a gente tinha de fazer a nossa IA falar com o mundo externo. Basicamente é isso. E não é a forma que a gente tinha. A gente tem e usa pra caramba, inclusive. O grande ponto é que normalmente essa tool call eu tenho que desenvolver. Eu tenho que desenvolver. Ou seja, isso aqui está diretamente acoplado... Opa, eu acho que o meu browser implodiu, galera. Só um segundo aqui, rapidão. Pra eu ver como é que eu resolvo essa parada. Pera aí. Que... O meu zoom... Deixa eu parar aqui. Deixa eu tentar subir o meu browser, galera. Eu senti que o meu computador estava lento e o meu zoom, deixa eu parar aqui deixa eu tentar subir o meu browser, galera eu senti que meu computador tava lento e meu browser, cara, realmente meu browser morreu, cara bem na hora da live, né então, vamos nessa, vamos fazer nossa, agora tá subindo tudo de uma vez aqui, que tá abrindo 10 mil janelas, agora eu entendi porque que ele caiu beleza, deixa eu ver se eu volto aqui novamente vez aqui que está abrindo 10 mil janelas. Agora eu entendi porque ele caiu. Beleza? Deixa eu ver se eu volto aqui novamente. Vamos lá. Vamos lá. Todo mundo está vendo, né? Show de bola. Então, vamos lá. Então, a gente trabalhava e trabalha ainda com tool call. Eu personalizo ferramentas que o meu LLM vai chamar conforme ele precisa e essa ferramenta faz chamadas internas. O grande ponto é que eu tenho que, em tese, desenvolver essa ferramenta. Ou seja, é isso que tem um acoplamento bem forte com o meu LLM. O grande ponto aqui é que o MCP veio com uma ideia um pouco diferente. Basicamente, eles criaram um protocolo. Esse protocolo tem um client e um server. E o que acontece? Eu tenho a minha aplicação host. E essa minha aplicação host, o que ela faz? Ela tem o client de MCP. E esse client de MCP pode consultar um servidor de MCP. E esse client de MCP, ele pode consultar um servidor de MCP. Então, por exemplo, imagina que eu tenho um MCP de Postgres. Então, o que eu faço? Eu configuro esse meu servidor MCP ou eu subo esse servidor MCP. Imagina que eu falo, eu quero saber quantas tabelas eu tenho no meu banco de dados. Eu pergunto, escrito em texto, quais são as tabelas do meu banco de dados. A minha aplicação vai perceber como eu sei se existe algo no banco de dados. Ele vai falar, opa, eu tenho um MCP de Postgres aqui para mim. Deixa eu dar uma olhada. Ele vai chamar esse servidor MCP. Esse MCP vai consultar o banco de dados e vai retornar aqui para a nossa aplicação. Então perceba que o que está acontecendo agora é que todos os serviços e as grandes empresas estão criando servidores MCPs que eles compartilham para que as outras pessoas possam integrar e ir nelas, ao invés de a gente sair desenvolvendo um monte de biblioteca e framework. Então isso aí é importante vocês entenderem a principal diferença entre o MCP e o Matulcall. O Matulcall é uma ferramenta que eu fiz. O MCP eu tenho milhares de MCPs que eu posso utilizar. É como se fossem plugins aí no meio dessa história. E eu posso ter diversos MCPs de tudo quanto é forma. Hoje, inclusive, eu vou mostrar para vocês MCPs funcionando. A gente não vai mostrar o desenvolvimento de um MCP, código- MCPs funcionando, tá? A gente não vai mostrar o desenvolvimento de um MCP, código fonte de MCP, mas eu vou mostrar pelo menos MCP funcionando aqui pra vocês, tá? Fazendo o jabá, né, na nossa pós, obviamente a gente vai ensinar você a construir os servidores MCPs e tudo mais. Mas vamos lá. Um ponto importante aqui, né, pra gente se ligar, é que um MCP, tá? Eu tenho, para a gente se ligar, é que um MCP, eu estou dando o exemplo do Cursor, porque o Cursor suporta MCP. Apesar de ser um protocolo novo, galera, essa parada se consolidou, porque tem gente que fala, um protocolo novo, será que vale a pena eu usar, eu gastar meu tempo com isso? Então, no final das contas, o que acaba acontecendo? Essa pegada de MCP, ela se consolidou tão rápido e tão forte que no último Microsoft Build, a própria Microsoft adicionou suporte a MCP no Windows. Então o Windows agora suporta MCP. Vocês entenderam o nível que a parada chegou? Então essa que é a grande pegada. Então basicamente eu tenho a minha aplicação, tá? Então, essa que é a grande pegada. Então, basicamente, eu tenho a minha aplicação, que tem um client de MCP, ou seja, tem um SDK de MCP, alguma coisa desse tipo, que é um client, chama o servidor, e o servidor, ele tem duas formas de rodar, tá? Esse servidor ele pode estar rodando local no seu computador, né? Ou esse servidor pode estar rodando remotamente em outro local. Então, você consegue trabalhar dessas duas formas. E aplicações que, por exemplo, usam MCP servers. Toda vez que a gente está falando em GitHub Copilot, o Cursor, o Cloud Desktop, o Cloud Code, eu estou dando um exemplo na nossa bolha de desenvolvimento. Mas, da cada dia que ir para fora, as aplicações que nós vamos desenvolver vão usar MCP. Vocês vão ver que o agente que eu fiz hoje está usando MCP. Então, isso aí é importante para caramba. Então, a gente tem essa pegada. E eu posso ter diversos MCP servers. MCP server de uso geral, vamos dizer, um Google Drive, um Postgres, o GitHub, hoje eu vou mostrar pra vocês o GitHub, o Discord, Docker, Kubernetes, tudo isso a gente pode utilizar MCPs prontos. Mas o ponto é que muitas vezes a gente vai criar o nosso servidor MCP pra pegar dados da nossa própria empresa. Ontem eu não mostrei pra vocês quem participou o REG, onde eu pego a base de dados da minha empresa, coloco num banco de dados vetorial e faço a minha aplicação a consumir esse banco de dados pra injetar essa parada no prompt. Então, o que acontece com o MCP é que tem muita gente que fala que o MCP veio para substituir o RAG. Porque o problema é que a nossa IA não conseguia fazer chamada OpenAPI, por exemplo. E agora, com o MCP, eu consigo fazer chamadas de API, fazer um monte de coisa utilizando o MCP. Então tem gente falando será que eu vou precisar fazer o RAG que é o que eu mostrei ontem pra vocês? Depende, uma coisa complementa a outra porque às vezes você tem informações que você não tem em todos os endpoints você ia ter que sair criando API pra tudo quanto é lado. Então às vezes é mais fácil indexar um banco de dados, tá? Mas é uma coisa que é complementar. Você pode pegar dados que são importantes pra você via MCP Server e você pode pegar outros tipos de dados que você pode vetorizar e colocar num banco de dados, que nem a gente mostrou ontem com o Reg, tá? Então, essa aqui é a ideia principal, tá? Um ponto importante pra vocês se ligarem. O MCP, ele é separado em três componentes. Tools, Resources e Prompts, tá? Quais são as diferenças? As tools, elas sempre executam ações, tá? Então, normalmente eu mudo o estado de algo, tá? Eu executo uma função que vai mudar uma ação algo, vai mudar algo. Significa que eu não posso chamar uma tool pra fazer uma chamada REST? Não tem problema nenhum. Mas a ideia é que a tool, o objetivo dela é realmente conseguir executar ações. Tá? Então, esse é o grande ponto. Um outro ponto importante é que a tool, quem decide na hora da chamada é o próprio LLM. Então, eu pergunto, ah, quais são os usuários que eu tenho cadastrado? Quais são os containers que eu tenho rodando? E daí o LLM vai falar, putz, será que eu tenho alguma tool que fale de container de execução? Ele fala, ah, eu tenho, esse do Docker. E ele vai trazer para mim os containers Docker que eu tenho rodando. Entendeu? Então, a tool decide quando chamar. A gente não tem controle por isso. O que a gente pode fazer é reenforçar isso através de prompt. Por exemplo, por exemplo, vamos imaginar que eu posso falar para o prompt. Toda vez que eu falar para você de container, você tem que chamar a tool tal do MCP tal. Então, eu estou reenforçando, mas de forma geral, o LLM, ele sabe qual tool chamar na hora que ele vai executar o MCP. Uma outra coisa que a gente tem no MCP e é aí que um monte de gente começa a não se ligar da importância do MCP, é a parte de resources e prompts. Porque até então, todo mundo que fala em MCP tá pensando nesse cara aqui, ó. Tá? Nesse quadrado, porque é o mais próximo que a gente tinha de tool call. E provavelmente é o que a gente mais usa quando a gente tá falando em MCP. Mas o MCP também permite a gente ter acesso a resources. Então, eu preciso ter acesso a documentos da empresa, a um banco de dados, a um monte de imagem, artefatos da empresa. Eu consigo dar esses acessos através de resources. Então, ao invés de agora eu ter que consultar um banco vetorial, se eu tenho alguns documentos para mim que são importantes, eu posso falar, toda vez que ele pedir uma lista de clientes para mim, eu já configuro no client, usa o resource tal, onde tem o lista de clientes .pdf. E aí você pega os dados desse PDF e processa o texto dele e retorna o resultado para mim. Então, a parte de resource é basicamente onde eu quero dar fontes de dados para mim. Então, tools executam ação, resources são fontes de dados que a gente consegue colocar. Quem decide qual resource é utilizado naquele contexto, não necessariamente aqui é a LLM. decide qual resource é utilizado naquele contexto, não necessariamente aqui é a LLM. A LLM decide a tool, mas normalmente quem decide o resource é o client. É a aplicação que está desenvolvendo o processo da IA. Ou seja, eu, Wesley, estou desenvolvendo um software, toda vez que pedir uma informação tal, eu peço para consultar o resource tal. Então, quem está pedindo isso sou eu, não é o modelo de inteligência artificial. A tool já não, o modelo se toca sozinho e chama a tool sozinha. E prompts, normalmente, quem escolhe quem utilizar é o usuário final. Ou seja, o que são prompts? São prompts criados que vão evitar o tipo de repetição que você tem que fazer o tempo todo. Então, eu posso, por exemplo, eu tinha um exemplo aqui, que eu dei na pós, mas eu não consigo mostrar, porque a gente vai ficar muito, é muito conteúdo. Mas, de forma geral, eu posso... Imagina que toda hora eu tenho que criar um e-mail que tem uma tabela de preços do cara. O que eu posso fazer? Eu posso falar eu quero pegar um resource com a minha tabela de preços, tá? E eu quero fazer um prompt. O prompt é para gerar a proposta. Então, na hora que eu falo gerar proposta, a proposta vai para o Rafael e quando ele dá um enter, com aquele prompt, a proposta vai ser gerada baseado na tabela de preços do resource. Fez sentido para vocês o que eu quis dizer, galera? Então, o resource é um fonte de dados e prompt são coisas que eu reutilizo ao invés de eu ficar digitando as coisas tudo do zero. Quem escolhe a utilização do prompt é o usuário. O MCP tem duas formas de comunicação. Um é standard I.O., basicamente, ele roda na sua máquina. O servidor MCP, ele executa... Não é que necessariamente ele roda na sua máquina, mas basicamente você tem que fazer uma chamada da sua máquina para um processo que vai rodar na sua máquina. Entendeu? E basicamente ele trabalha com o JSON RPC. Então você faz a chamada, ele retorna o resultado para você. É como se você estivesse usando um CLI. E existe uma segunda forma que é o SSE. Eu não sei se todo mundo já ouviu falar aqui em SSE. Mas o SSE é como... Eu vou falar de uma forma bem grosseira. Mas o SSE é como, eu vou falar de uma forma bem grosseira, mas o SSE é como se ele fosse uma espécie de um WebSocket. Você consegue manter uma conexão persistente entre cliente e servidor, mas essa conexão persistente ela não é bidirecional. O WebSocket é uma conexão bidirecional. Tanto o client quanto o server ficam trocando informações. O SSE,SE já é diferente, ele é unidirecional. A utilização via SSE para MCP é muito louca, porque eu posso desenvolver um server MCP que qualquer pessoa pode se conectar nesse servidor para pegar as informações. Mas, fazendo isso, a gente já tem um monte de outras complexidades. Qual é a complexidade? Cara, eu tenho que trabalhar com escala, eu tenho que trabalhar com servidores, eu tenho que trabalhar com autenticação, tem um monte de coisas que entram na hora que você vai falar que você vai trabalhar com SSE. Então, a infraestrutura é diferente. Então, essa aqui é a grande sacada. Então, SSE significa Server Sent Events. Então, SSE significa Server Sent Events. Então, dêem uma olhada, é uma conexão HTTP persistente que a gente fica conseguindo receber informações. Então, toda vez que você tiver um dashboard onde as informações são carregadas automaticamente, você usa WebSockets, mas você não precisa ficar mandando informação para o servidor, você não precisa usar o WebSocket, você usa o SSE, é mais simples inclusive, porque o SSE fica, o server fica atualizando o client o tempo todo com as modificações, tá? Então é basicamente isso aí. Uma coisa interessante tá? É que uma das formas muito hoje em dia importantes pra utilização de MCP é o Docker, cara. E isso eu estou acompanhando de perto. Inclusive, antes de ontem, eu participei. Eu não sei se vocês sabem, eu sou Docker Captain. É tipo um MVP, ou Google Developer Expert, para Docker. Então, junto com a Docker. Então, todo mês a gente tem reuniões semanais com a para a Docker, tá? Então, junto com a Docker. Então, todo mês a gente tem reuniões semanais com a galera da Docker, que está desenvolvendo o Docker e a última reunião foi especificamente sobre MCP, tá? E o problema do MCP nos dias de hoje, principalmente porque a maioria dos servidores a gente roda aqui com o Standard I.O., o que que acontece? Ele roda na sua máquina, cara. E se tem uma coisa que dá medo, né, é você rodar um um software na sua máquina, tá? Então, esse aí é um ponto importante. E o que que começa a acontecer nesse tipo de situação, tá? O Docker acaba caindo como uma luva. Por quê? Porque se tem algo que consegue rodar de forma, como que eu posso dizer, de forma contida e segura, é com o Docker, porque o Docker sobe um container isolado. Então, trabalhar com o Docker, com o MCP, na minha opinião, é a grande tendência que as coisas estão acontecendo. Na realidade, já estão acontecendo, tá? E como o Docker, na minha opinião, é a grande tendência que as coisas estão acontecendo. Na realidade, já estão acontecendo, tá? E como o Docker, na hora, se tocou disso, a Docker se tocou disso na hora, o que que eles criaram? Uma parada, tá? Você, primeiro, você pode chamar o seu próprio MCP, você pode criar o seu MCP normal e botar ele dentro de um container e fazer execução chamando via Docker Run, mas o Docker, ele teve uma ideia genial, tá? E ele criou algo chamado Docker MCP Catalog, tá? E é isso que é uma das coisas que a Docker tem trabalhado muito forte. Por quê? Tá? O que que acontece é o seguinte, imagina que você tem o seu MCP Client. O seu MCP, o seu Client, a sua IA fala assim, eu quero saber informações de tal banco de dados. E o MCP que foi desenvolvido para isso, foi feito no Node na versão 18. Aí eu tenho outro MCP que foi rodando na versão 24. O outro no Python 8, o outro no Python 10. Então, o outro no Python 10 então o que acontece o ambiente da sua máquina teria que suportar a execução de múltiplas versões para os MCPs serem compatíveis e já dá para perceber que dá ruim ou você vai ter que ter um monte de versão do Node um monte de versão do Python, um monte de versão do PHP um monte de versão de TypeScript, o caramba 4 só para rodar MCPs na sua máquina então o que o Docker faz? Você cria um MCP dentro de um container. E daí, quando você faz a chamada desse MCP, o que acontece no final das contas? Simplesmente, o MCP é executado no container e vai ter o ambiente isolado, exatamente com as configurações que você precisa. Mas, eles tiveram uma ideia mais genial ainda, porque qual que é o ponto? Toda vez que eu estou chamando um MCP, eu tenho que cadastrar todos esses MCPs num arquivo TXT que eu vou mostrar para vocês daqui a pouco, e daí eu fico fazendo chamadas de client para um monte de gente. Então, cada vez aqui eu estou dando um monte de docker run sozinho, somente para chamar esses caras aqui. Mesmo que eu não use esse MCP, eu estou dando um docker run, executando essa parada aqui na nossa máquina. Então, isso aí é importante a gente conseguir se ligar. O que a Docker fez no final das contas? Ela criou algo chamado Docker MCP Catalog. O que esse MCP Catalog faz no final das contas? Ele faz o seguinte. ao invés de você fazer chamadas diretamente para as imagens Docker de MCPs, você faz o seguinte, ele cria um container, tá? Principal, um container único, que gerencia todos os MCPs que você quer utilizar. E daí o que acontece? Imagina que eu tenho um MCP do Postgres. Então, quando eu falar, eu quero saber quais são as tabelas do meu banco de dados, eu não vou chamar diretamente o MCP do Postgres. Eu vou chamar o MCP do Docker Catalog. O MCP do Docker Catalog vai falar, o cara está chamando de Postgres, deixa eu chamar o MCP de Postgres que o cara habilitou. E daí ele faz a chamada, sobe o MCP e daí retorna os dados. Então, eu não preciso mais cadastrar manualmente um trilhão de MCPs. Quem aqui já começou a instalar MCPs e começou a cadastrar um monte de MCPs? Com o JSON, tá? Então, no final das contas, o Catalog, ele acaba resolvendo essa história, tá? Porque você sobe, você cadastra um único servidor MCP e quando você chama esse servidor, ele sabe qual MCP, servidor MCP realmente você quer chamar. Então, você só cadastra um, tá? E isso aí é muito louco, tá? É muito louco e etc. Então, eles criaram um MCP Toolkit. Spoiler pra vocês, tá? Hoje, se você for aqui no Docker, deixa eu ver se eu tenho meu Docker Desktop aberto, tá? O que que acontece? Se você olhar, aqui é a interface do MCP Server Catalog que tem. Então, basicamente, eles têm diversos MCPs aqui, servidores MCPs. E todos esses servidores MCPs são verificados. Então, são servidores MCPs que a gente tem um nível de confiança maior para evitar malware e um monte desses tipos de coisa. Se vocês perceberem, o que acontece é que eu posso dar um enable nesse MCP. E quando eu fizer a chamada, o que vai acontecer? O Docker automaticamente vai falar. Toda vez que o cara quiser fazer uma chamada curl, ele vai chamar esse MCP. Então, tem um único MCP cadastrado e daí no final das contas, o que acontece pra mim, eu tenho acesso a todo esse catalog. Spoilers pra vocês do que vai acontecer em breve, o que a Docker tá trabalhando. É que nós poderemos criar o nosso próprio catalog de MCPs e cadastrar os nossos próprios servidores MCPs nesse catálogo. E aí eu entro no melhor dos mundos, né? Porque eu tenho esse recurso que a Docker tem geral, mas particular pra mim, tá? Cada um tem o seu próprio catalog, tá? Então, isso aí acaba ajudando pra caramba. E quem tá perguntando sobre isso é no Docker Desktop, tá? É uma solução da Docker Inc. e não do Docker Community Edition. Só para vocês saberem. Então, essa é a grande sacada. Então, eu tenho servidores e eu tenho clients. Então, se eu quiser, por exemplo, conectar o Docker, o MCP Docker com o Cursor, eu conecto. Se eu quiser com o Cloud, eu conecto. Então, eles estão trabalhando com vários caras. Então, por exemplo, se vocês olharem aqui, eu tenho um MCP ativado do GitHub. Agora, qual uma outra vantagem do MCP? O que acontece? Se vocês perceberem, quem aqui já usou MCP e tem que passar alguma chave de API de autenticação? Por exemplo, se eu quiser utilizar o MCP do GitHub, eu tenho que passar minha chave de API. E aí, o que acontece? Eu tenho que passar essa chave de API no meu arquivo JSON, caras. Deixa eu mostrar aqui para vocês um arquivo JSON de MCP. Então, basicamente, esse é um MCP que eu tenho no meu computador. Rodando sem Docker. Então, eu tenho um MCP de users, nem sei se está funcionando, eu peço para ele rodar o comando do Node nesse caminho do meu computador. Então, para cada MCP, você tem que cadastrar uma linha aqui, cara. É horrível. Tá? Com o Docker, eu tenho esse MCP Docker, que vai subir esse container aqui, especificamente, da própria Docker, e automaticamente ele vai mostrar para vocês quantas tools disponíveis ele tem ali para você. Então, por exemplo, aqui eu desabilitei, mas eu posso habilitar aqui o meu MCP do Docker. Estou excedendo a quantidade de tools. E agora, essas 50 tools, o meu cursor vai conseguir utilizar. Se eu clico aqui, eu consigo ver quais as tools que estão liberadas aqui para mim. Então, como vocês podem ver aqui, eu tenho o tools focado aqui no... que está liberado aqui, provavelmente é do GitHub. Então, eu consigo ter essa parada. E o cursor, ele permite apenas 50 tools. Eu estou até passando a quantidade de tools aqui. Então, essa que é a ideia. Wesley, como é que funciona a ideia de MCP, tá? Eu vou fazer um exemplo aqui pra mim, pra gente. Qual quais containers eu tenho em execução? Vou dar um enter. Todo mundo tá conseguindo ver bem a minha tela? Vou verificar quais os containers. Putz. Ele deu um do Docker pass aqui por conta das minhas rules, cara. Eu vou ser mais específico em conta de execução usando o MCP de Docker. É que nas minhas rules aqui eu falo pra ele executar o container na mão. Vamos ver se ele vai trabalhar. Cara, ele não tá executando, cara. Na realidade, eu nem sei se ele atualizou essa parada aqui. Pera aí. Deixa eu dar um stop aqui. Deixa eu colocar. Use a tool só pra... Ah, na real, cara, eu não tô com o MCP de Docker ligado, né? É por conta disso. Não tem nada a ver. Eu vou falar assim. Le os meus repositórios no GitHub nunca ia funcionar o de Docker mesmo porque eu não estou com o MCP de Docker ativo eu vou listar os seus repositórios no GitHub e aí o que está acontecendo aqui ele está chamando os repositórios ali para mim no GitHub, ele está fazendo as chamadas aqui para mim. E daí ele está trazendo aqui. Você tem 68 repositórios públicos. Eu vou sumarizar esse conteúdo todo aqui. Isso aqui eu vou explicar depois para vocês. Isso aqui é automático do cursor. Quando ele acha que uma conversa vai ficar muito grande, para ele não ficar tendo que mandar para a LLM todo o conteúdo, ele sumariza aquele conteúdo para ele ganhar a janela de contexto. Então, olha só aqui. Ele está trazendo informações dos repositórios que eu estou trabalhando aqui. Se eu perguntar para ele quais são, ele vai conseguir... Se eu pedir exemplos dos repositórios, eu posso pedir para ele trazer quais repositórios têm algo sobre MCP. Eu nem sei se tem algum repositório meu que fala sobre MCP. Então, ele vai dar um search repositories e ele está consultando. Galera, deu para vocês entenderem um pouquinho qual que é a ideia do MCP? Tá? Deu para você conseguir sacar? Perceba que eu estou perguntando para a minha IA em linguagem natural. Ela consegue se tocar do que eu estou falando e daí ela faz uma chamada para um servidor MCP. Ela consegue se tocar qual é o usuário do meu MCP porque eu tenho cadastrado, e ele consegue trazer essas informações para mim, tá? Cara, isso aí muda o jogo, porque se eu falo assim, quantos clientes eu tenho cadastrado na minha coisa? Ele vai consultar, tá? Então, esse aqui é o grande ponto, tá? Então, se eu não me engano, eu tenho que eu cadastrar aqui esse MCP de usuários, eu nem sei se ele está funcionando. Eu posso colocar assim, ó, cria um usuário com o ID 10, com o nome de www e o e-mail www.com. Quando eu der um enter, em tese esse meu MCP é de usuários, olha o que ele vai fazer. Ele vai chamar um MCP de create user e falou usuário criado com sucesso e cadastrou o cara num banco de dados. Fez sentido isso pra vocês, galera? Agora, imagina você criando a sua aplicação, o seu servidor MCP e falar, cara, qual é o faturamento da minha empresa? Ele vai lá, verifica que é o faturamento, você faz uma chamada de API, pega o balancete, qualquer coisa e coloca aqui. Entendeu? Muda o jogo, tá? Então, quando você começa a entrar nessa parada de MCP, você começa a ir pra um outro nível, sacou? Então, muda completamente o jogo. E eu vou mostrar hoje aqui para vocês utilizações de MCPs do GitHub, que eu tenho ativo, e também do Discord, tá? Porque eu vou mostrar agentes para você de A que usam esse MCP. O mais louco é que quando a gente for falar de agentes de A, a gente pode fazer o nosso agam esse MCP. O mais louco é que quando a gente for falar de agentes de IA, a gente pode fazer o nosso agente usar MCP. Entendeu? Então, o mundo mudou na nossa vida, porque a gente tem uma forma agora de fazer a nossa IA falar com o mundo externo. Tá? Tem gente perguntando, como que isso vai pro front-end? Cara, na real, é uma chamada back-end, tá? A não ser que... É uma chamada back-end, de forma geral, o MCP. Aí, vai bater no back-end, vai pegar o resultado e vai trazer pra você retornar pro front-end. Entendeu? Então, essa que é a grande sacada. Então, as possibilidades são infinitas, tá? Se eu estou trabalhando aqui com o Docker, deixa eu... Cara, meu Discord está desativado. Estou achando até que a minha IA não vai funcionar na hora que eu mostrar os exemplos. Ah, eu posso habilitar um MCP de Git. Cara, tem um trilhão de MCPs. Tem MCPs até do Notion, se você quiser trabalhar. MCP do Postgres, que eu posso utilizar aqui. Então, eu boto o Postgres para trabalhar. Essas são as tools que eu acabo tendo aqui com o meu Postgres. E daí, na hora que eu quiser utilizar, ele vai fazer a consulta no meu banco de dados. Já penso... Cara, isso aí é uma coisa que eu uso bastante, tá? Só pra vocês saberem. Sabe quando você quer saber se um usuário foi cadastrado no banco de dados? Você tem que entrar no banco de dados, dar um select, ficar digitando SQL ou qualquer coisa desse tipo, ou ficar clicando visualmente naquelas ferramentas? Agora você pode perguntar e falar o seguinte, cara, quantos usuários eu tenho no meu banco de dados, onde o ID é igual a 1, e também aproveita e faz isso e isso aquilo. Ele vai chamando o MCP e ele vai calculando e vai fazendo tudo automático pra você. Entendeu? Então eu consigo fazer isso com Kubernetes, eu consigo fazer isso com tudo quanto é coisa que a gente pode imaginar, tá? Então é desde Shopify, Stripe, pra eu ver quanto que a minha empresa vendeu hoje, cara. Se eu tô usando Stripe, eu consigo fazer uma consulta no MCP deles, sacou? Transcrição, cara, e aí você pode criar o seu, tá? Eu gosto muito desses MCPs. Existem bancos gigantes com milhares de MCPs que você pode utilizar, tá? Mas, pra mim, a coisa mais importante, na minha opinião, é eu criar o meu próprio servidor MCP. Porque daí eu faço o que eu quiser. Que é o exemplo que eu dei aqui para vocês. Esse MCP aqui com o node de usuários de cadastrar foi eu que criei. Então, quando eu peço para ele cadastrar esse usuário, a IA entende os parâmetros que o meu MCP pede, ela passa esse JSON, e o meu MCP retorna que deu certo e traz aqui pra ele. Entendeu? E é muito louco, porque você pode pedir qualquer coisa. Porque se a IA tem o dado, ela pode fazer a coisa da forma que eu quiser. Por exemplo, qual é o faturamento da minha empresa? Traga pra mim o faturamento, traz isso, traz isso, traz aquilo, e gere um relatório pra mim em PDF. Cara, eu consigo fazer isso somente chamando a IA, cara. Sem eu ter que programar o relatório. Entendeu? Então, essa parada muda a vida, tá? Então, pra quem tá trabalhando com IA hoje, primeira coisa, você já pode começar a usar MCPs amanhã, tá? Então, você já consegue utilizar MCPs amanhã simplesmente plugando essa parada aí no seu, na sua aplicação, no seu cursor, no seu cloud, code, eu acho que o chat GPT agora também dá pra cadastrar MCP, então você cadastra e você sai utilizando esses caras aí. Beleza? Então, o que eu dou mais cautela pra vocês é, usem MCPs que estão rodando em Docker, beleza? Então, o que eu dou mais cautela pra vocês é usem MCPs que estão rodando em Docker, tá? Porque todos os MCPs que rodam o standard I.O., por exemplo, esse MCP aqui que eu mostrei pra vocês, perceba que eu tô chamando ele direto com Node, né? Tem muitos que usam NPX pra chamar. Mas, aí o que vai acontecer? O meu Node, ele tem acesso ao meu sistema de arquivos. Então eu posso fazer algo malicioso na sua máquina. Com Docker você já isola isso. Você já isola, porque você não dá acesso à sua máquina. O container roda isolado. Então isso aí acaba trabalhando. O Rafael falou, não entendi como integra isso com aplicações tradicionais, cara, não é que integra com aplicação tradicional, a sua aplicação tradicional, em algum momento vai usar IA quando ela utilizar IA e você fizer uma pergunta, uma chamada qualquer coisa pra IA você tem a possibilidade de fazer a IA chamar um MCP server então basicamente é isso o MCP ele permite em linguagem, basicamente, é isso. O MCP, ele permite em linguagem natural, eu acessar, executar ações. Eu posso cadastrar usuário, eu posso criar cliente, eu posso pegar dados de ordem de serviço. Imagina uma empresa que tem ordens de pagamento e quer saber se, tipo, eu tenho um aluno, eu quero saber se o neto com o e-mail tal pagou o MBA. O neto do e-mail tal é meu cliente? Aí a BAT consulta a minha base de dados, verifica de qual aluno, de qual curso ele faz parte minha. Eu simplesmente perguntando pra IA sem eu precisar acessar o meu sistema, fazer isso, fazer aquilo. E daí, de repente, eu tenho um MCPD se cadastrado no meu cloud, no GPT, aí eu falo por voz. Cara, o Silvio do e-mail tal, ele é meu aluno? E daí ele consulta e fala, sim, o Silvio é seu aluno, ele tá no MBA e tal, assim, assim, assado. Quantas vezes ele acessou o curso nos últimos dias? Ah, ele acertou tantos dias. Perceba, eu tô convers ela está processando informação para mim, resolvendo essa informação para mim e pegando dados do meu banco de dados. Fechou? Fez sentido para vocês, galera? Maravilha? Então, perguntando, a camada repository pode fazer chamadas MCPs? Cara, isso é muito interessante. Não é que a camada repository, o que você tem que entender é que quando a gente está falando em arquitetura de software e a gente está falando em MCP, o MCP é um acesso externo. Então, em tese, um repository pensando em acesso externo não necessariamente faz uma chamada MCP. Pode até fazer, mas o importante é que ele retorne os valores de uma forma que você consiga hidratar as suas entidades, os seus agregados. Porque é isso que define um repositório. Conseguir fazer a hidratação dos seus agregados. Então, esse é o conceito de repositório. Maravilha? Mas as coisas vão mudando. Por isso que eu digo, a arquitetura de software está mudando, galera. Onde que a IA agora está no meio das camadas minhas da minha aplicação? Então, é muito louco essa parada aí. Fechou? Galera, entendendo um pouco de MCP, tá? Acho que deu pra pelo menos apresentar a ideia aqui pra vocês e o que a Docker tá fazendo, que na minha opinião é muito bom, porque me dá muito mais tranquilidade. Ah, eu não falei, tá? Por que que dá mais tranquilidade usar o Docker? Sabe aquelas chaves que você fica passando de chave de API aqui no seu JSON, o Docker está trabalhando com o quê? Ele tem o seu próprio OAuth Server. Então, eu passo a minha Osecret aqui e eu não tenho que ficar mais cadastrando. E agora, eles estão trabalhando que você pode ter o seu próprio OAuth Server personalizado da minha empresa para fazer autenticação. Inclusive, eles mostraram isso na última reunião. A versão do Docker deles tá meio que diferente, tá? Inclusive não tá mais como extensão, tá? Que MCPs do Docker Toolkit sem ser extensão, que eles não liberaram essa release, mas eu consegui ver internamente. Curiosamente, galera, hoje eu fui renovado ao meu Docker Captain, então eu fiquei mega feliz, fui renovado por mais um ano, então ainda Captain, então eu fiquei mega feliz foi renovado por mais um ano então, ainda sou Docker Captain, anualmente eles verificam todas as suas contribuições e hoje eu recebi e-mail de Docker Captain de novo, maravilha? Galera feito isso, dito isso vamos pra um outro assunto agora tá que é a parte de agentes de IA. Ontem a gente falou sobre, começamos a falar um pouco sobre REG, Retrieval Aumented Generation, que é quando a gente pega informações, guarda no banco de dados vetorizado, para que a nossa IA consiga ter acesso a essas informações e tudo mais. vetorizado, para que a nossa IA consiga ter acesso a essas informações e tudo mais. Agora, hoje, a gente vai começar a falar especificamente de agentes de IA. E aí a coisa começa a mudar um pouco. Deixa eu colocar aqui e deixa eu botar a minha cola do meu outro Scalidro aqui, carregando, porque o meu browser fechou aquela hora e me enrolou. Espera um pouquinho só. Só um segundinho, galera. Beleza. Deixa eu pegar aqui. Calma aí. Deixa eu olhar aqui onde que tá. Beleza. Então, é o seguinte, galera. Deixa eu pegar aqui. Maravilha. Vamos lá. Que eu tô botando aqui também pra para não perder o chat de vista. Então é o seguinte. Quem assistiu o meu vídeo vai ver algumas coisas repetidas que eu botei recentemente no YouTube. Mas acredite que o que eu vou mostrar hoje aqui vai muito além do que o vídeo no YouTube. Mas eu não quero ficar refazendo a roda aqui com vocês, tá? Então, agora a gente vai falar especificamente sobre agente de IA, tá? E essa parada, galera, é muito importante a gente entender. Porque a gente tá passando pela seguinte transição. A gente tá começando a integrar aplicações com IA e em seguida a gente tá começando a desenvolver agente de IA. O grande problema é que a gente não sabe. A maioria, hoje em dia, dos devs, etc., que não estão ainda tão interados com inteligência artificial, não entende muito o que é um agente. É mais ou menos a época do microserviço que era difícil explicar o que era um microserviço. Então, o que acontece aqui nesse caso é que o que é um agente de IA? É aqui nesse caso, é que o que é um agente de IA? Tá? É um software normal, como qualquer outro software. Eu tenho que fazer deploy, ele tem banco de dados, ele tem que escalar, ele tem que fazer basicamente tudo que um software faz. Ele é um software, tá? Mas a diferença, tá? É que o core da de um agente é o LLM. Ele vai receber um input, Uma vez que ele recebe esse input, vai ser chamado o modelo de inteligência artificial e a partir dessa chamada do agente, esse agente começa a tomar decisões. Então, o grande ponto é, hoje, a gente está num mundo que a gente está num mundo de ifs e else's. Todo mundo aqui mexe com ifs e else's, tá? Todo mundo aqui mexe com if else no dia todo? Certo? Todo mundo mexe com if else? Sim, né? Pra que que você usa if else? Pra você condicionar a sua aplicação. Se o saldo for maior que zero, né? O cara pode coisar. Se não, saldo insuficiente. Ou seja, a gente força o fluxo da nossa aplicação. Então, isso a gente chama de fluxo determinístico. Ou seja, quando a gente mantém o fluxo da nossa aplicação. Quando a gente começa a trabalhar com agentes de A, de forma geral, não é mais agente que determina, você pode determinar, mas não é necessariamente você que determina qual que é o fluxo da aplicação. Eu vou dar um exemplo aqui para vocês. Quem aqui já percebeu que, dependendo de o que você chama no chat GPT, ele faz uma consulta na web pra retornar pra vocês? Alguém já percebeu isso? Tá? Quem já percebeu? Né? Normal. Mas por que que ele tá chamando? Por que que ele tá buscando aquela informação na internet? Porque provavelmente, na hora que eu perguntei aquela informação, ele percebeu que ele não tinha todos os detalhes que ele precisava e falou, sabe de uma coisa? Deixa eu entrar no Google. E trouxe aquela informação pra mim. Fui eu que falei, se você não tem essa informação, entra no Google? Não. É a própria inteligência artificial que determinou que ele vai achar que ele precisa do Google naquele momento. Se eu falo assim, agenda para mim uma reunião amanhã às 14 horas. O que ele vai falar? Bom, para eu precisar agendar uma reunião, eu preciso entrar na agenda dele. Então, eu vou entrar na agenda dele e marcar. Ponto. E ainda anota para mim não sei o quê. Ele vai lá e anota para mim não sei o que. Ele vai lá e anota. Ou seja, o próprio agente se vira para conseguir tentar resolver aquele problema. Sacou? E isso aí muda completamente, porque sai do nosso controle. Entendeu? Esse é o grande ponto. Não é a gente mais que fala o if e o else. Baseado no contexto que esse agente está, com a informação que ele tem, com as ferramentas que ele tem, ele decide se ele vai fazer uma chamada, se ele vai chamar o MCP, ou se ele já tem aquela informação que ele consegue retornar, ou se ele precisa, entendeu? Ou seja, até o fluxo de chamada do agente, necessariamente não é a gente que controla, eu posso controlar, tá? Mas cada agente também tem algo importantíssimo tá? O agente ele tem um papel, tá? Então, cada agente de inteligência artificial normalmente ele tem um objetivo específico, manja microserviço cada microserviço tem um objetivo mais específico sobre isso, sobre aquilo? O agente é mais ou menos assim, tá? Mas o objetivo dele está na tarefa que ele executa, tá? Eu sou um agente especialista em consolidar uma tese de mestrado em 15 páginas, de 650 para 15 páginas. Ou seja, o prompt desse agente vai fazer isso. Esse agente vai ter ferramentas que ele pode acessar. Esse agente pode ter banco de dados que ele pode consultar. Ele pode fazer um monte de coisa. Então, esse é importante. Agora, olha só que interessante. Imagina que eu quero ter um agente que ele verifica se a minha tese de mestrado, ela tem algum assunto que eu estou infringindo a parte de plágio. Então, eu posso ter um agente que vai fazer o quê? Vai, toda vez que eu mandar aquela informação, ele vai consultar todos os bancos de dados de plágio e vai falar, isso aqui é plagiado, tá? Então, perceba que o agente, ele tem um objetivo específico, ele resolve um problema específico, tá? Então, isso aí é importante. Aí tem gente que fala, mas aí um sistema simples já não seria o suficiente? Depende, tá? Porque o agente ele consegue processar informação e trazer informação da forma como a gente quiser, tá? Por exemplo, para você fazer algo no sistema específico, como que você consegue pegar 650 páginas, tá? E verificar qual parte ali está com plágio, e ainda fazer um relatório para mim daquelas partes, e ainda se eu perguntar, gere uma tabela para mim, disso aqui eu faço assim, e faça mais daquele jeito. Um sistema simples não consegue fazer isso. Por quê? Porque um sistema simples precisa de dados estruturados. Tá? Então, a gente precisa de um JSON. A gente precisa de um esquema. Tá? O agente de A ele interpreta a linguagem natural. Eu posso mandar um JSON, eu posso mandar um texto, eu posso mandar a informação do jeito que eu quiser. Eu posso mandar a informação em inglês e pedir para ele retornar em coreano. Ele retorna para mim isso naturalmente. Entendeu? Então, por isso que eu digo, uma aplicação simples, dependendo, se for, posso fazer uma chamada de API e retornar, sim. Eu tenho uma aplicação simples. Dependendo, se for, posso fazer uma chamada de API e retornar? Sim, eu tenho uma aplicação simples. Mas o lance é que quando você tem um agente ali, você tem uma quantidade de possibilidades muito grande. Essa que é a grande sacada. Então, esse tipo de informação acaba mudando muito a forma de como você interage com o seu sistema, sacou? Então, essa pegada. O que a gente está falando? Um agente é o mesmo que um GPT Action? Não necessariamente, tá? O grande ponto é que a gente precisa entender que o agente tem um contexto, ele tem a tarefa, ele sabe qual o ambiente, ele sabe as tools que ele pode fazer, ele pode adaptar, ele consegue se adaptar ao ambiente que a gente está colocando. Ele trabalha com dados estruturados, ele consegue fazer simulação de cenário para mim e ele consegue ter memória a curto e a longo prazo. Eu vou fazer uma pergunta para vocês. Vamos imaginar que eu estou fazendo um atendimento com um cliente. Imagina que vocês estão querendo contratar o MBA em Engenharia de Software com o IA. E daí, de repente, você entra e começa a tirar dúvidas. E você está falando com um agente de IA. Quando você começa a fazer algumas perguntas, esse agente, ele pode, ele vai pegar a sua informação, ele vai interpretar essa informação, vai acessar um banco de dados para trazer aquela informação. Qual é o preço? Ele consulta o banco de dados e tal. Dá para dar tanto de desconto? Ele vai consultar e fala, será que dá para dar desconto? Daí ele pergunta, você pergunta, você tem desconto? Daí ele fala assim deixa eu ver se ele é aluno. Aí ele vai e consulta o banco de dados. Daí ele fala, esse cara é aluno. Ele é aluno desse curso logo eu posso dar tanto de desconto. Você consegue perceber que fazer isso num sistema comum é muito complexo? E você teve que fazer esses ifs e else's na cabeça? O agente, ele já entende isso naturalmente. Entendeu? Ele tem ferramentas pra verificar se é aluno, ele tem preços e ele vê que naquele curso tem preço especial pra aluno. Então, naturalmente, ele fala, bom, eu vi aqui que tem preço pra aluno. Esse cara é aluno? É, então deixa eu melhorar o melhor preço aqui pra ele. Fez sentido o que eu tô falando pra vocês, galera? Sacou? Qual que é a grande sacada? Então, esses ifs e else's, tá? A gente não tem mais que ficar tão preocupado ou olhando esse tipo de coisa. Porque eu tenho um agente específico pra isso, tá? Então, ele consegue pegar. E o mais louco de tudo é o seguinte, tá? Vamos imaginar consegue pegar, e o mais louco de tudo é o seguinte, tá? Vamos imaginar que eu tive uma conversa, você, todo dia você entrou pedindo desconto pra mim. Todo dia você entrou pedindo desconto. Quando você vai falar de novo comigo, eu consigo pegar todas as conversas anteriores, resumir e entender o seu histórico que você está pedindo desconto pra caramba por exemplo, ou se você está mentindo, uma hora ele mandou uma informação outra hora outra, eu falo a gente fique esperto porque pode ter pessoas que estão querendo passar a perna conseguir desconto que não pode faça algumas verificações inclusive pra ver se esse cara tem coerência com o que ele está falando nas outras sessões ou seja, ele consegue pegar o histórico das sessões anteriores e tomar decisão, né, vamos imaginar que eu falo, olha, se o cara entrar no ali pra tentar pedir desconto e se ele fizer isso por 5 dias cara, vê se você consegue dar um desconto até o limite da tabela daí o agente vai lá, beleza, o cara entrou 5 dias, deixa eu dar um desconto ali pra ele tá, mas aí o agente fala assim ó, e eu falo assim, sempre tente negociar o melhor preço, daí eu falo olha, eu vou te dar um desconto de 5% ah não, não dá pra fazer mais? daí o agente fala, bom 9? então a gente vai falar assim, então é 8 sacou como é que o que eu estou querendo dizer aqui pra vocês galera, o agente entende o contexto, ele tem ferramentas ele tem histórico, ele tem memória, e ele consegue processar essas informações vocês conseguiram perceber que o agente, ele é um software mas ele é um software diferente galera, vocês conseguiram perceber que o agente é um software, mas ele é um software diferente, galera? Vocês conseguiram sacar essa diferença de um software para um agente? Fez sentido para vocês? É tipo um mágico, né? Tu colocou, é mais ou menos um mágico, porque ele toma a decisão própria. Ele funciona como se ele fosse uma pessoa, tá? Se eu pego um vendedor, falo pra ele que ele pode dar até tanto desconto, que ele pode fazer isso, que ele pode fazer aquilo, o agente, ele tem essas informações. Entendeu? Ele tem esses dados. Ele consegue consultar a memória. Ele consegue negociar. Entendeu? Então, esses tipos de coisa mudam claramente como o sistema é desenvolvido, por quê? Porque o núcleo do sistema, tá? É baseado na chamada do modelo de inteligência artificial, tá? Agora, o lance é o seguinte, o que que a gente não pode confundir, tá? E essa é a confusão que acaba gerando, que é o seguinte, um agente não é um LLM mais regra de negócio, tá? Por que eu estou dizendo? Eu posso ter uma aplicação normal que vai chamar uma inteligência artificial que vai verificar, por exemplo, se aquilo é fraude ou não e daí vai retornar se o pagamento está aprovado ou não. Eu posso ter isso naturalmente no meu sistema. Vocês conseguem entender? Sacou o que eu estou dizendo? Então, se você pegar a aplicação que você tem hoje, botar uma IA para fazer uma verificação de um dado que veio, isso não é um agente. É uma aplicação que tem, que chama um modelo de inteligência artificial. Entendeu? Ou, por exemplo, lembra que a gente fez ontem um reg, que ele consegue pegar os dados de um lugar e gravar num banco de dados? Não necessariamente isso é um agente. Pode ser uma aplicação normal que pega dados e guarda no banco de dados. Um agente não é um MCP. O MCP é um protocolo. O agente pode usar esse protocolo. Um chatbot. Um agente não é um chatbot. Eu tenho um monte de chatbot por aí que não é um chatbot de IA. Agora, eu posso ter de chatbot por aí que não é um chatbot de IA. Agora, eu posso ter um chatbot que é um agente? Posso. Mas nem todo chatbot é um agente. Fez sentido isso aí pra vocês, galera? Tá? Então, é essa que é a grande sacada, tá? Um agente pode ter tudo que uma aplicação normal tem, entre aspas. Mas uma aplicação normal tem, entre aspas. Mas uma aplicação normal, que a gente está tradicional, não necessariamente um agente. Então, não é porque a sua aplicação usa inteligência artificial que ela é um agente. Mas todo agente utiliza inteligência artificial. Ok? Então, isso aí é um ponto importante. Agora, o ponto é que as coisas elas apesar de aumentar essas possibilidades a gente começa a entrar numa outra coisa que começa a deixar a gente mais na hora que você falou assim cara, eu tô tentando internalizar a gente, daí eu vou chegar e vou fazer o seguinte. A gente tem aplicações agora que são multiagênticas. Ou seja, é um agente falando com o outro. É um agente falando com o outro. E eu vou mostrar isso para vocês hoje na prática, para ficar bem claro aqui para vocês. Então, o que acontece é o seguinte. Imagina que eu tenho um agente que recebe um log do servidor. E esse agente classifica aquele log. Ele normaliza aquele log. Então, imagina que eu tenho um log que é em linha inteira, eu tenho um log que é em JSON, eu tenho um log que é desestruturado, eu tenho um stack que é em linha inteira, eu tenho um log que é em JSON, eu tenho um log que é desestruturado, eu tenho um stack 3 solto e eu preciso receber esse log e deixar esse log formatado. Galera, imagina quanto de expressão regular que você ia ter para fazer isso. Mas beleza, a gente tem ferramentas focadas em fazer isso, mas vamos imaginar que eu tenho um agente que recebe esse log. Aí o que acontece? Uma vez que esse agente recebeu esse log, ele vai fazer o seguinte. Uma vez que esse agente recebeu esse log, ele vai mandar esse log para um outro agente. E esse agente verifica se esse log é um bug, ou se é um log normal se é um log de erro ou se é um log normal e daí ele fala, cara, esse log ele é realmente um erro crítico aí o que esse analyzer vai fazer ele vai gerar um relatório falando, olha, esse log com esse nível de gravidade é esse o erro que aconteceu, é desse jeito, etc. Aí o que acontece? Eu tenho um outro agente que pega esse log e fala, deixa eu fazer um rascunho para isso ser uma issue do GitHub. Aí ele faz um rascunho. Mas vamos imaginar que eu quero garantir que esse rascunho ficou realmente muito bom. Então o que eu posso fazer? Mand que esse rascunho ficou realmente muito bom. Então o que eu posso fazer? Mandar esse rascunho que foi feito para um outro agente que somente, que apenas verifica se aquele draft está exatamente no conforme como ele deveria estar. Beleza? Aí ele analisa e fala, não, olha, essa informação aqui ficou meio vaga. Aí se a gente faz esse report falando, olha, esses são os pontos de melhoria. Aí ele manda para um agente que serve apenas para refinar pull requests. Ele vai pegar a informação que o outro agente fez e vai melhorar esse documento da pull request. Aí tem um agente que faz da pull request, não, de uma issue. Aí tem um agente que ele cria issues no GitHub. Então ele vai pegar a informação do agente que pegou o log, que pegou a issue refinada e cria lá no GitHub. E daí eu tenho um agente que é apenas o papagaio da empresa. Ele comunica as coisas. Daí o cara que fez a issue fala para o agente da... O cara que criou a issue fala para o agente de notificação. Ô, notifica o criador dessa issue, o cara que mexeu nesse código, tá? Porque eu abri uma issue com um erro que foi feito do commit dele. Aí, ele verifica quem é o dono, vê qual que é o discord do cara e manda uma mensagem. Oi, aquela issue foi criada porque deu esse erro pra você. Você quer dar uma olhada? Fez sentido o que eu falei pra vocês, galera? Cada cara tem um objetivo específico, tá? Agora, pense pra mim como seria você desenvolver um software onde você recebe um log e esse log se transforma numa issue do GitHub. E daí você pode ter um agente que vai resolver essa issue, eu tenho um outro que faz o code essa issue, eu tenho outro que faz o code review, eu tenho outro que faz o deploy para mim. O que vai acontecer, galera? Eu já estou adiantando isso para vocês no mundo do desenvolvimento. A gente vai ter um momento em que todos os bugs vão ser detectados, as issues vão ser abertas, elas vão ser corrigidas, eles vão para a produção e a gente nem ficou sabendo. Tá? Vai acontecer isso. Sacou? Assim, está muito na cara que vai acontecer isso. Entendeu? A gente nem vai saber mais dos bugs, porque eles já vão ser corrigidos automático. Pegou no log, já vai ser corrigido. Então, esse tipo de coisa já vai ser meio que automática. E isso são aplicações multiagentes. E o que é o mais interessante é que essa aplicação multiagente, ela conhece os agentes que estão em volta dela. Então, se eu estou falando, cara, eu preciso criar uma issue do GitHub, eu falo, deixa eu delegar para esse cara aqui, porque ele é um criador de issue. Se tem um cara, esse cara faz code review, ele fala com outro. Agora, sabe o que é o mais louco de tudo isso, galera? Posso falar o que é o mais louco de tudo isso, galera? Posso falar o que é o mais louco para vocês? Sabe como é que os agentes se comunicam? Quem aqui pode dizer para mim qual é o protocolo de comunicação que os agentes falam? Esquecendo o H-Way. Cara, o protocolo de comunicação de um agente é português, é inglês. Basicamente, ele chama o outro agente como se ele fosse um usuário comum. Eles se comunicam em linguagem natural. Não é que você passa ID igual a 1. Ele fala, olha, o resultado do relatório do Aisho é isso aqui, tá? Eles se falam em linguagem natural. Sacou? E se eu quiser, eu posso pedir pra um xingar o outro, pra quem tá falando aí no chat, tá? Então, eles se falam em linguagem natural. Deixa eu ver se tá... Cara, eu tô com medo de eu ter mexido nos meus MCPs aqui e não funcionar meu agente, porque eu desabilitei uma parada aqui, galera. Eu estou morrendo de medo de não funcionar. Se não funcionar, eu vou ficar triste, tá? Mas, de qualquer forma, eu tenho uma interface aqui. Vamos ver se esse cara roda. Deixa eu ver aonde que eu posso pegar um exemplo de log errado. Esse agente aqui, eu chamei ele de bug finder, tá? Ele é um agente principal que tem um monte de agente embaixo dele, tá? Então, deixa eu tentar pegar um problema aqui. Problema aqui. Deixa eu pegar aqui. Mais erros. Cara, eu vou pegar, sei lá, um bug aqui, tá? Então, o que acontece? Eu tenho aqui uma interface de um framework de agente, tá? Esse framework é o ADK, Agente Development Kit da Google, tá? Então, ele tem uma interface, mas nem todo agente... Aqui é uma interface para testar, galera. Isso aqui é para testar, basicamente. Então, estou colando um log de erro aqui para mim. O que acontece? Um agente recebeu a chamada que recebeu o log. Agora, ele está percebendo que o log... Ele mandou para o agente que analisa o log. Esse cara analisou o log. Agora, ele vai delegar para um cara que vai fazer um draft da minha issue. Agora, o que acontece? Ele está delegando para o cara que vai revisar esse meu log. E agora que ele revisou, ele vai mandar para um agente que refina aquela minha issue. Entendeu? E agora, ele vai mandar para um agente que refina aquela minha issue. Entendeu? E agora ele vai mandar, depois que ele fez isso, para um agente responsável para criar uma issue no GitHub. Entendeu? Vamos ver se ele vai criar por conta do meu MCP. Criou. E agora ele manda para um agente para ele notificar que a parada rodou. E aqui eu tenho a minha resultado final do usuário. Quando eu clico aqui, tá? Olha isso aqui, galera. Ele recebeu aquele log de erro, e ele já retornou a issue aqui pra mim. Então, ele trouxe a descrição, ele trouxe a ideia da issue, a versão detalhada da issue, ele deu o exemplo do que aconteceu, a tecnologia, ideias e sugestões para melhoria, como que ele pode investigar e quais são as consequências desse cara não resolver esse bug. E ainda ele identificou se a prioridade é alta ou baixa e se é um bug ou não. Cara, vocês conseguem entender o poder que isso tem? Fala pra mim se vocês conseguiriam desenvolver um software que fazia isso sem inteligência artificial. Fala a verdade pra mim. Eu não tenho ideia de como eu faria isso sem inteligência artificial como que eu recebo um log, identifico refino, crio uma PR cara, não dá pra fazer isso tá? é sem chance sacou? é sem chance de fazer isso tá? e quando você for ver o código desses agentes trabalhando, é simples tá? e deixa eu pegar... Cadê o... Cara, eu abri uma outra janela e perdi o histórico. Deixa eu botar ele fazer a mesma coisa de novo. Ah, uma outra coisa que eu acredito que dá para fazer, que eu mandei ele fazer, imagina que eu recebo um log normal, e não é um log de erro. Eu mandei aqui para a gente. Ele recebeu essa verificação, aí o bug analyzer vai verificar, e ele vai falar, esse log mostra uma aplicação que iniciou normalmente, não é um bug. Então, ele nem vai criar a issue, não vai nem passar pra frente, entendeu? Agora, se ele olhar e receber um outro log, de um outro formato, agora perceba, galera, que esse log tá num formato totalmente diferente dos outros, sacou? Então, esse aí é a parada. Agora, tem gente que deve tá perguntando pra mim, Wesley, você mentiu na hora que um agente fala com outro em português, tá? E, cara, na realidade eu não menti. Mas eu vou mostrar aqui pra vocês como é que funciona, tá? Isso aqui é algo meio focado no ADK, tá? Mas, e só pra vocês saberem, tá? É que eu não vou mostrar o meu Discord pra vocês, mas eu recebi uma notificação aqui no Discord falando do bug, tá? Mas aqui são os eventos que eu tive, tá? Então, eu tive uma função que recebeu o log do meu agente, aqui ele mostra. E aqui, ó, basicamente é o seguinte. Ele recebeu essa informação, tá? E aqui é o conteúdo do log. Aqui deu algum erro, sei lá o que que é. Aqui é o conteúdo do log que ele recebeu. Aí tem a resposta, não, né? Aqui ele já tem a chamada inicial. Aqui é quando ele analisou a parada. E aqui é o resultado, né? Então, aqui é a resposta que ele retornou. Esse JSON que ele respondeu nesse formato, tá, galera? Eu que falei para ele retornar em JSON. Eu poderia falar, olha, o bug é isso. Eu poderia ter pedido para ele escrever isso em linguagem natural. Aí, o que acontece? Se eu chegar no agente de revisão, quer ver? De review agente, olha o que ele retornou aqui. O draft não foi aprovado, o status foi isso aqui, as sugestões de melhoria e as consequências. Ah, tem que melhorar enquanto a descrição tem que prover mais contexto. Adicione o detalhe do número de problemas que foram afetados. Por exemplo, acesso ao login, se tem algum pattern que foi observado, melhore a clareza disso. Inclui esse ponto relevante. Faz isso. Sugestões. Por favor, dê pelo menos isso. Pelo menos isso. Cara, o outro agente recebeu essa informação. Eu escolhi retornar isso em JSON, mas eu poderia ter retornado isso numa poesia. Eu poderia ter retornado isso num poema no formato do Camões, pra ele seguir aquela regra de rimas dele lá. Entendeu? Então, essa que é a grande pagada aqui pra mim. Tem gente que falou, e duplicação de issues? Galera, eu não tô preocupado com o problema desse software, tá? Esse software não daria pra rodar em produção, só pra vocês saberem. Porque eu não posso fazer uma chamada pra cada log que eu receber. Meia hora eu vou ter gastado não sei quantos mil dólares só com essa verificação. Então você tem que ter outras estratégias pra escala, só pra vocês saberem. Então, aqui eu tenho essa pegada. Então aqui tem o drafter, o outro, o criador. Então ele fala, olha, essa aqui é a minha request, eu consigo ver as responses, eu consigo saber o que que chamou, o que não chamou eu consigo saber a ordem e o mais louco, eu começo a ter conceitos de observabilidade né, então olha só um agente chamou esse que chamou a LLN, que chamou uma call que chamou um outro cara, que fez isso que demorou tanto tempo, que foi isso até gerar o problema final. Entendeu? Eu consigo ver o fluxo de chamada desses caras. Olha isso. Esse cara chamou esse, que depois chamou esse, que mandou a responsa, que fez isso. Eu consigo ver o fluxo inteiro até saber quanto tempo ele gastou pra fazer esse tipo de coisa. Porque agora, a gente tem a parte de observabilidade. E o mais louco é que quando eu quero compartilhar a informação entre um agente e outro, eu posso, porque eu tenho memórias do agente. E eu tenho diversos tipos de memória. Aqui, por exemplo, eu criei um state onde eu tenho as memórias. Então, eu criei o conteúdo do log, eu coloquei o análise de bug, o draft do meu issue, o resultado da minha review, e eu consigo trabalhar aqui da forma que eu quiser. Então, o ponto que eu estou querendo trazer aqui para vocês, pessoal, é que não é uma questão agora apenas de um agente. A gente está falando agora de múltiplos agentes rodando, um chamando o outro e etc. Então, a gente acaba indo pra um outro nível, tá? Existem diversos exemplos que o pessoal dá genérico, tá? Mas eu vou dar um exemplo um pouco mais vou dar um exemplo que a galera dá só pra vocês entenderem imagina que eu falo o seguinte, cara, eu quero viajar pra Ponta Cana no dia 10 de agosto até tal dia, por favor, pra mim, por favor, agenda o voo pra mim, faça uma, marque o transfer pra mim do aeroporto, faça a reserva no hotel, e ainda faça pra mim um itinerário de tudo que eu tenho que ver, baseado nos eventos, e crie uma agenda passo a passo de o que eu vou fazer em cada dia. Tá? Partindo das 8 da manhã até meio-dia e da meio-dia às 6 da tarde e das 6 da tarde até às 8 da noite. Quando eu falo isso, cara, o que vai acontecer? Eu mando isso pra um agente e daí eu consigo falar você, agente, reserva passagem aérea. Você, agente, verifica hotéis 5 estrelas que possam ter naquela localização você analise naquele período quais são os eventos que estão acontecendo naquele dia e quais são as atrações tá? aí ele manda os resultados, daí ele fala, olha eu consegui um voo de tanto, o outro fala não, mas o hotel nesse dia tá colocado aí eles ficam se conversando até falar, beleza, olha, eu consegui um voo de tanto. O outro fala, não, mas o hotel nesse dia está colocado. Aí eles ficam se conversando até falar, beleza, olha, consegui, a minha reserva dá para fazer, a passagem dá para fazer, isso aqui dá para fazer, beleza, vamos reservar? Vamos. Aí ele só retorna para mim, sei lá, meia hora depois, Wesley, está tudo reservado, está aqui o itinerário que você vai fazer todos os dias na manhã e à tarde lá em Punta Cana e você vai ficar no hotel tal, aqui tá o mapa do hotel tá, e se você clicar aqui tem o link do Google Maps na hora que você chegar do avião vocês entenderam o que eu tô querendo dizer aqui pra vocês galera? essas coisas vão ser completamente possíveis com agentes, tá e o mais louco de tudo isso é que simplesmente esses caras se coordenam. Se você perceber, tá? É isso que uma agência de viagens faz. Vocês concordam comigo? E o que uma agência de viagens faz no final das contas? Elas consultam o Google, eles vão lá no hotel, vê o guia turístico. Cara, o agente faz turístico. Cara, o agente faz a mesma coisa. Você entendeu? Então, essa parada vai ser comum, galera. E são esses tipos de software que a gente vai fazer daqui pra frente, tá? Agora que vocês entenderam de forma geral a ideia desse tipo de aplicação aí de agentes, galera, uma coisa que eu quero perguntar para vocês, do fundo do coração. Vocês conseguiram entender a diferença de um agente e de um software comum? Ficou claro, bem claro para vocês a diferença? Tá? Então, isso para mim, cara, se vocês saírem daqui desse jeito, eu já tô muito feliz, tá? é bem diferente, não é simplesmente um LLM com uma regra de negócio a parada, ela é muito mais monstruosa, tá? então, essa é a parada que a gente tem aí e vocês vão ter que aprender a desenvolver tá? essa que é a grande pegada cara, como que eu desenvolvo agentes? Hoje em dia a gente tem frameworks para fazer isso. Eu estou colocando aqui alguns frameworks que eles são bem conhecidos aí no mercado. Tem outros aí que não fiquem bravos se vocês não verem o seu framework preferido de agentes aí. Mas, por exemplo, o Langchain, apesar de ser uma biblioteca, um framework, eu consigo hoje em dia criar um agente de A com o Langchain. Apesar de não ser aquela parada tão estruturada de uma forma como eu acabei de mostrar para vocês, mas você consegue trabalhar hoje em dia com agentes com o Langchain. Existem outros frameworks, por exemplo, como Langgraph, que usa Langchain, que te ajuda a trabalhar de forma mais determinística. O que significa? Você consegue fazer esse agente seguir passo a passo e ter os UIFs e ELFs que a gente gosta. Mas eu quero controlar esse fluxo de uma forma muito determinística, mas ainda dar liberdade para os agentes. Eu tenho um agente, um outro framework chamado Crew AI. Esse agente é um agente, basicamente, é um framework multi-agentes. É como se você tivesse uma equipe, como se fosse uma empresa. Então, eu tenho o chefe, eu tenho o cara de produto, eu tenho o desenvolvedor, e eles têm umas tarefas para desenvolverem, eles picam essas tarefas e saem desenvolvendo. Tem o Google ADK, que é o que eu vou mostrar hoje aqui para vocês. Tem o AutoGen também. Então, a gente tem diversos frameworks. E essa que é a grande pegada aí para vocês. Então, tem diversos frameworks aqui no mercado que dá para a gente utilizar. Wesley, qual que é o seu framework preferido? Eu não quero entrar nessa. Faz muito tempo que eu não fico brigando por qual tecnologia é melhor. Então, eu já passei dessa fase da minha vida. Mas, existe alguns frameworks que eles estão ganhando bastante espaço. E um framework que eu estou apostando bastante é o Google ADK, que é esse cara aqui, tá? Que ele chama Google Development Kit. E antes de vocês acharem que eu não vou mostrar código, que teve gente já pedindo código, eu vou mostrar, tá? Só para vocês saberem. Eu só quero trazer aqui um pouco o conceito básico aqui do ADK, tá? Só pra vocês saberem. Eu só quero trazer aqui um pouco o conceito básico aqui do ADK, tá? Então deixa eu colar aqui pra vocês. Chegamos agora, galera, na parte um pouco mais técnica. Então o que que acontece? O Google ADK significa Agent Development Kit. Esse framework ele foi desenvolvido em 2024 na Google e a Google começou a utilizar esse framework. E daí, em 2025 agora, ele lançou esse framework open source. Então, apesar de ser um framework que é super novo open source, ele já rodou em produção por um ano na Google. Então, por isso que me dá um pouco mais, me dá uma tranquilidade maior de utilizar esse framework, entendeu? Se ele fosse um framework que nunca tivesse rodado em produção e tivesse sido liberado há um mês atrás, eu não estaria mostrando ele aqui para vocês. Mas ele é um framework que já roda em produção. E ele é um production ready e ele tem muita ferramenta integrada nele mesmo para que eu consiga ter observabilidade, para que eu consiga fazer esses testes que eu acabei de mostrar pra vocês, que eu consiga fazer um monte de coisa, tá? Então, basicamente, no final do dia, eu tenho, tá? Então, basicamente, no final do dia, eu tenho, tá, o Google ADK pensando sempre no seguinte ponto. Ele é um framework de desenvolvimento de agente. Então, já que ele é um framework de desenvolvimento de agente, ele tem um base agent, tá? O que que é o base agent, no final das contas, tá, só pra vocês saberem, é uma classe abstrata. Né? Ele tem uma interface aqui pra Só para vocês saberem, é uma classe abstrata. Ele tem uma interface aqui para eu criar outros tipos de agente. Então, todo agente nele aqui é baseado no meu base agent. E aí, eu tenho três tipos de agentes. Um agente focado em LLM. O que significa? É o agente que a em LLM, o que significa? É o agente que a gente chama a IA mesmo e ela processa. Ou seja, eu chamo o Gemini, eu chamo o GPT, eu chamo o Cloud, eu chamo o DeepSeq, não interessa. Então, esse agente é o cara que fala com a LLM. Aí a gente tem um outro tipo de agente, que são agentes focados em workflow. Lembra que eu falei para vocês que dependendo da situação, eu quero que o agente siga uma ordem? Então eu posso criar agentes sequenciais. Então eu crio um agente sequencial que vai falar que esse agente A tem que ser chamado numa certa sequência pra ele ser executado. Beleza? Aí, eu tenho um outro tipo de agente que ele é um agente pra funcionar de forma paralela, tá? Então, o que que isso significa? Que eu posso... Ah, eu quero fazer a viagem pra Punta Cana. Ele consegue paralelizar e chamar vários agentes simultaneamente pra esses caras processarem. Tá? E eu tenho agentes que eles são baseados em loop. Vamos imaginar o seguinte. Sabe aquela minha issue do GitHub? Eu tenho um agente que faz a issue e eu tenho outro que revisa. Se o cara que recebe a revisão não aprovar, volta pro cara que faz. Se ele fizer de novo não aprovar, o cara revisa e manda de novo pra ele. Eles ficam num loop, tá? Até eu falar no máximo 10 vezes. Depois disso, sai do loop. Entendeu? E eu tenho um agente que são agentes customizados. Esses agentes customizados é quando eu, na minha empresa, quero criar um formato de agente que tem um fluxo muito específico meu, que vai chamar APIs internas minhas, que vai fazer um... Tipo assim, é a regra complexa de negócio que eu faço customização, tá? Então, é basicamente essa é a pegada, tá? Então, isso aí é importante pra vocês entenderem. Sacou a ideia, galera? Sacou a ideia? Então, quando eu tô falando em agentes no ADK, eu tenho esses três tipos, mas você vai perceber que se eu quero rodar um agente sequencial, roda esse agente e depois esse. O agente sequencial vai chamar dois agentes base, dois LLM-based para rodar na sequência, entendeu? O loop para rodar, ele vai chamar os agentes aqui que eles vão ficar em loop, sacou? Então, essa que é a grande pegada, beleza? No caso do Google ADK, a gente tem componentes. Eu vou falar pra vocês esses componentes, mas eu não vou falar todos de uma vez. Eu vou mostrar um exemplo de código pra vocês não ficarem tristes comigo pra dizer que eu só tô dando aula no Scalidro, tá? Então, o seguinte, eu tenho o componente do ADK, que são os agentes, que é o que eu acabei de falar para vocês. Então, eu tenho o agente de orquestração e agentes de LLM, que chamam um modelo. Basicamente, é isso aqui, tá? Ah, desses agentes, eu tenho um outro componente aqui no ADK, que são as tools, que são as ferramentas que eu consigo trabalhar. Ou seja, um agente, ele pode fazer uma chamada de função para fazer uma busca no Google. Uma outra coisa que eu posso fazer é que eu posso fazer um agente chamar um outro agente como uma ferramenta. Tá? E eu posso ter uma ferramenta que eu crie. Entendeu? Imagina que eu quero criar uma ferramenta que acessa a minha API e grava o dado no banco de dados. Eu posso criar uma ferramenta pra mim, ou eu posso dar uma Open API especificação pra ele e falo, cria um usuário. Ele vai ver a especificação da minha API REST e vai fazer a chamada. Entendeu? Então, essa aqui é a grande sacada aqui para vocês. Tá bom? Então, entenda que uma tool pode ser uma função como uma ferramenta. Uma tool pode ser um agente que está sendo chamado como uma ferramenta. Uma tool pode ser um agente que está sendo chamado como uma ferramenta. E ela pode ser uma ferramenta de suporte. Então, essa aí é uma parada. Uma coisa interessante para você entender em relação ao ADK, o ADK tem uma parada chamada de Built-in Tool. O que é uma Built-in Tool? é uma ferramenta que a Google já tem pronta e que você já pode utilizar sem se matar, então eu tenho uma ferramenta chamada o Google Search então toda vez que eu falo para o meu agente que ele tem um Google Search eu mando ele fazer uma pesquisa, ele vai fazer uma pesquisa no Google e vai retornar o resultado pra mim. Essa ferramenta a Google tá me dando pronta. Ah, tem uma ferramenta de busca no banco de dados. O Google, o ADK ele tem diversas ferramentas prontas que você já pode utilizar. Entendeu? E essa ferramenta Google Search já vai chamar a API do Google e eu não quero nem saber. Então eu tenho ferramentas built-ins, que vêm prontas com o framework. Então essa aqui é a grande sacada. Beleza? Agora tem ferramentas que eu posso criar. Eu vou mostrar para vocês uma coisa extremamente básica. Deixa eu achar aqui. ADK Simple Agent. Eu acho que é isso que eu fiz hoje aqui pra vocês e eu criei alguns exemplos aqui pra mostrar aqui pra vocês também e eu tenho que matar o meu outro agente pra eu poder subir esse aqui, pera um pouquinho galera, eu vou ter que matar esse meu agente do bug finder que tá rodando o adk e tenho que subir esse outro agente do Bug Finder, que está rodando o ADK, e tenho que subir esse outro agente aqui, que é um Simple Agent que eu criei, tá? O que é o Simple Agent? Só para vocês saberem, tá? Basicamente, basicamente é o seguinte, eu criei um, eu tinha que criar um exemplo para mostrar para vocês hoje, e eu falei, cara, eu preciso criar um agente eu falei, eu quero um agente que busque alguma documentação, alguma coisa de tecnologia então, galera essa é a parada mais básica de um agente no ADK e vocês vão olhar e vão falar, cara, que coisa babaca que é, de simples não é difícil, o problema é que os conceitos vão ficando complicados. Mas a ideia básica de um agente é isso aqui, galera. Deixa eu mostrar o código para vocês, porque é básico mesmo, tá? Então, a primeira coisa que eu estou fazendo aqui é carregar a variável de ambiente. Estou carregando a variável de ambiente de qual vai ser o meu modelo principal. Ou seja, aqui por padrão, o ADK usa os modelos da Google, o Gemini. Mas usando o Light LLM, que é uma outra biblioteca, eu consigo fazer o ADK usar qualquer modelo de inteligência artificial. Então essa aqui é a pegada. Para a gente, o Anderson que está falando, bem parecidocido com o Crew AI ele pode ser parecido, mas ele é muito diferente, tá Anderson? Ele é muito diferente do Crew AI ele faz coisas que o Crew AI faz, tá? Mas não necessariamente tudo que o Crew AI faz ou tudo que ele faz, o Crew AI faz na realidade o conceito deles são um pouco diferentes, porque o conceito do ADK, ele consegue ser um framework bem guarda-chuva. Ele consegue meio que cobrir bastante o que todos os outros frameworks fazem. Por isso que eu gosto dele. Tipo, o LandGraph, ele foca muito em ponto determinístico. O CruAI, ele trabalha muito focado em equipe. O ADK consegue trabalhar tudo isso de forma junta e misturada. E, pelo amor de Deus, não estou aqui falando mal de Crew AI ou qualquer coisa desse tipo. Todas essas ferramentas são fantásticas. Eu mesmo já fiz bastante coisa com Crew AI. Então, o lance é o seguinte, galera. Aqui eu estou criando uma instância de um agente. Eu falei que o nome dele é DocFinder agente, criei uma descrição aqui para ele e a descrição eu falei o seguinte que esse agente faz pesquisa de documentações técnicas e retorna dados relevantes sobre uma tecnologia e aqui eu estou criando aquela instrução do agente, você é um assistente especializado em encontrar documentação técnica importante, você apenas pode responder perguntas sobre tecn do agente. Você é um assistente especializado em encontrar documentação técnica. Importante, você apenas pode responder perguntas sobre tecnologias, frameworks de programação, ferramentas de desenvolvimento, etc. Logo, você precisa garantir que você nunca vai responder absolutamente nada sobre o que está fora do escopo. Por exemplo, qual é a capital do Brasil? Qual o faturamento da empresa X, mesmo que ela seja uma empresa de tecnologia? E daí eu coloco, primeiro passo, analise se a pergunta é sobre a tecnologia. Se você concluir que a pergunta não é sobre tecnologia, responda tal. Caso a pergunta seja sobre tecnologia, você deve usar a ferramenta do Google Search para encontrar a documentação na internet. Você deve retornar a informação encontrada num formato bem estruturado, sempre cite as fontes encontradas. E aqui, o que eu fiz? Falei qual é a tool aqui para mim, tá? E eu falei que a tool que ele vai usar é o Google Search. Se você olhar aqui, o import dele é a DK Tools Google Search, ou seja, é uma tool built-in, ou seja, já vem pronto aqui para a gente, tá? Perguntaram por que a descrição é em inglês? Porque quando eu criei o autocomplete saiu em inglês, tá, galera? Poderia ser em francês, inglês, português, tanto faz, tá? Porque a descrição é em inglês porque foi o autocomplete, tá? Do cursor aqui pra mim. Então, é basicamente isso que a gente faz. Galera, quem aqui achou isso difícil? Tá? Hein, galera? Quem achou isso difícil? Fácil pra caramba, né? De forma geral. Né? Agora, vocês entenderam, galera, o porquê que desenvolver um agente é diferente de desenvolver uma aplicação comum? Porque um agente aqui é uma entidade principal da aplicação. Se você tivesse que fazer isso com uma aplicação tradicional, você ia estar fazendo o quê? Você ia estar tentando parciar os dados, fazendo uma chamada lá na OpenAI, no Gemini, receber o resultado, daí fazer uma coisa, no Gemini, receber o resultado, daí fazer uma coisa que chama o Google, receber o resultado. Com a gente, você já tem isso estruturado. Entendeu? É essa que é a grande sacada. Então, o que eu vou fazer aqui? Eu vou fazer uma chamada aqui no ADK. ADK Web Agents. deixa eu ver se ele vai subir tá, então um agente é um hello world que a gente acabou de fazer aqui, tá então ele trouxe isso aqui pra mim deixa eu abrir essa parada deixa eu atualizar tô aqui no meu Doc Finder agora e eu falo Traga para mim Os detalhes do Apache Kafka E agora o que vai acontecer Em tese ele tem que funcionar Pronto Trouxe os dados do Apache Kafka aqui para mim O Apache Kafka é uma plataforma de streaming Blá blá blá blá blá blá Caracter dados do Apache Kafka aqui para mim. O Apache Kafka é uma plataforma de streaming, blá, blá, blá, blá, blá, blá, características, etc, etc, aqui para mim. Tá? E olha aqui. Ele mostrou aqui para mim que ele fez uma tool call, uma tool baseada no Google Search aqui para mim. Fez sentido isso aqui para vocês sacarem? O que aconteceu? E agora, se vocês olharem aqui, cada chamada, cada coisa que acontece com os seus agentes é gerado um evento. Então, o que acontece aqui é o seguinte. Aqui é o conteúdo. E aqui mostra a tool que ele tem ligada com ele. Então, fala. Aqui está o resultado do evento. O Apache Kafka é o conteúdo. E aqui mostra a tool que ele tem ligada com ele. Então fala. Aqui está o resultado do evento. O Apache Kafka é uma plataforma, ele trouxe aqui basicamente o resultado do evento. Mas olha só que interessante. Se você olhar aqui, o row que está trazendo aqui para mim é o model. Ou seja, quem retornou esse resultado aqui para mim é o modelo de A. Agora, olha só que interessante, galera. Quem aqui sabe o conceito de grounding? Alguém já ouviu falar em grounding? Tá? Grounding, basicamente, é o seguinte. Toda vez que você chama o chat GPT, ele é treinado com os dados que ele tem. Tá? Ou seja, ele pode trazer o dado que ele quiser. Quando você faz uma chamada para um agente, e esse agente usa alguma outra forma de consulta para trazer um resultado, essa informação que vem é chamada de grounding, porque não é um resultado que vem da LLM só, porque esse dado veio de outro lugar. Então, qual que é o grounding metadata que ele trouxe? Ele falou que pegou dados da web, desse site aqui, ele utilizou a chamada, usando o Vertex AI da Google para fazer a chamada, né? Ou seja, o Vertex AI tem a API de chamar a Google aí. Aí ele usou esse outro site, ele usou a IBM, ele usou o DataCamp, ele usou Alice.com.br, sei lá de onde que veio. E aqui ele traz o Grounding Supports. O que é o Grounding Supports? É o nível de confiança que ele tem no resultado que ele recebeu baseado em cada fonte de acordo com o que foi perguntado. Então, baseado na chamada zero, vem o nível de confiança de 0,93. No outro, de 0,87. Do outro, 0,86. Do outro, 0,97. Então, ele acaba trazendo. E ele fala o porquê em qual lugar que ele traz essa confidência essa confidência, a confiança e daí tipo, tá explicando o que é o offset, veio desse pedaço do teste, daquele site, entendeu? é basicamente isso que faz sacou? e ele fala qual é o pedaço do texto que eu peguei na internet que traz esse nível de confiança. Então, lembra que eu falei pra vocês do reggae, tá? Onde tem a... Onde ele pega chunks, aqui ele pega os chunks, fala, baseado nesses chunks, qual nível de confiança que tem a ver, ele gruda esses dados e retorna o valor pra mim. Então aqui, ó, é a busca do Google, com os dados que ele pegou, tá? E aqui tá a minha query de pesquisa, que é traga pra mim os detalhes do Apache Kafka. Foi no formato texto e chamou o meu agente. Então aqui, quem fez esse cara aqui é o meu agente. Então, aqui, quem fez esse cara aqui é o meu agente, não foi o modelo. Então, aqui, ele está retornando a resposta que ele trouxe. É basicamente isso que acontece. Fez sentido aqui para vocês, galera? O Marcos está perguntando qual o custo disso. Cara, a gente falou um pouco de custo no primeiro dia, tá? Mas você tem que entender qual é o tipo de modelo que você vai usar, para qual a função que você vai usar. Você tem que entender a quantidade média de token que você vai utilizar, tá? E você vai ter que entender quantidade de token de entrada, quantidade de token de saída, informações que podem ser cacheadas pra você pagar mais barato e você tem que verificar se o que você tá pedindo pro agente ele precisa retornar pra você de forma assíncrona ou assíncrona porque os preços mudam também tá? então essa que é a grande pegada. Beleza? Fez sentido aí pra vocês, galera? Então, perceba que esse agente, quando eu perguntei algo, ele saiu pesquisando na internet, grudou os dados e trouxe pra mim. Tá? Em tese, eu não consigo fazer isso com uma aplicação normal. Tá? E se você perceber, consigo fazer isso com uma aplicação normal tá? e se você perceber eu fiz isso com quantas linhas, galera? 30 linhas, sendo que grande parte das minhas linhas é instrução você entendeu? se eu escrever aqui em tese, tá? eu não foquei muito no prompt, né? quanto o McDonald's McDonald's McDonald's fatura por dia? Sei lá, vamos ver se ele vai retornar. Opa, desculpa, eu sou um agente especializado apenas em tecnologia. Pronto, então eu botei um filtrozinho ali pra ele só responder coisa de tecnologia aqui pra mim, tá? Então, essa aí que é a grande sacada. Agora, galera, o ponto importante, tem gente falando de infraestrutura e etc. Galera, a gente tem que lembrar sempre uma coisa, tá? Voltando no primeiro dia, quando a gente tá falando em A, a gente tem camadas infraestrutura, o cara de GPU CPU, TPU, infra provisionamento, entendendo, data center monitoramento de A gerenciamento de instâncias, o caramba 4 a gente tem model development basicamente o que a gente está fazendo é treinando modelos machine learning, deep learning, etc e agora existe uma nova camada, que é onde a gente está fazendo é treinando modelos, machine learning, deep learning, etc. E agora existe uma nova camada, que é onde a gente está. E por isso que, por exemplo, no próprio MBA que a gente tem, eu não fico focando nisso aqui, porque isso aqui está fora da nossa bolha de forma geral. O nosso foco agora está aqui, application development para IA. Então, esse aí é o foco que tá aqui, application development pra IA, tá? Então, esse aí é o foco que eu quero, toda vez que eu tô falando de IA hoje em dia, o que eu tô querendo falar muito é nesse layer de desenvolvimento. Porque se você for falar de machine learning comigo, eu também não sou especialista, eu não consigo dar uma aula, um evento de machine learning de três dias. É fora da minha bolha, galera. Eu não entendo disso, eu não tenho vergonha de falar, porque o meu foco é outro. É application development. Beleza? Maravilha, galera. Dá para disponibilizar isso para o cliente como uma aplicação real? Normal, Neto. Cara, o seu cliente, ele pode usar essa aplicação de várias formas. Ele pode fazer isso num chat, ele pode fazer isso num áudio, ele pode fazer isso via vídeo, ele pode fazer isso via WhatsApp. A forma de como você fala com a gente não importa, entendeu? Isso aqui que eu mostrei para vocês é uma interface de debug. Sacou? Isso aqui é uma interface de debug. Simples assim pra eu testar o meu agente de uma forma mais simples. Pra eu não ficar no terminal chamando a minha aplicação. Mas na hora de eu encaixar isso aqui, eu posso encaixar no WhatsApp, no Discord, eu posso encaixar isso aí num stream, numa ligação, numa reunião via Google Meet, onde eu peço pra esse agente entrar e tornar isso pra mim e ainda retornar isso em voz. Com a voz do Wesley ainda, eu consigo fazer. Entendeu? Então, esse aí é importante de vocês conseguirem entender. Legal? Então, essa interface é uma interface de debugging pra desenvolvimento, tá? Então, não é que o meu agente é assim, tá? O meu agente, o input dele pode ser de diversas formas. O input pode ser do usuário final ou o input pode ser de outro agente. Sacou? Então, essa que é a pegada. Fez sentido, galera? Beleza? Então, vamos lá, galera. Seguinte Então vamos lá, galera Seguinte, vamos lá Voltando aqui nos nossos agentes Então a gente tem componente como agente, como tool Aí a gente tem algo que é importante de vocês entenderem Que são sessions O que são sessões, galera? A sessão tem o histórico cronológico dos eventos. E ele gera um estado temporário de uma conversa. E ele pode ter artefatos que são gerados pelaquela sessão com arquivos binários e ele isola uma conversa da outra. Então, de forma geral, galera, uma sessão é uma conversa isolada que a gente tem com o nosso agente. Mais ou menos quando a gente faz login num site, a gente tem uma sessão. Ok? O ponto que a gente tem que se ligar, e é aí que caem as pegadinhas, é o seguinte, tá? e é aí que caem as pegadinhas, é o seguinte, toda vez que eu estou numa sessão e eu continuo conversando, normalmente todas aquelas informações podem ser enviadas de volta para o RLM. O que isso vai fazer? Aumentar o meu contexto, aumentar a quantidade de tokens e ficar isso muito caro. Então, por exemplo, quando eu vou trabalhar com logs, Aumentar o meu contexto, aumentar a quantidade de tokens e ficar isso muito caro. Então, por exemplo, quando eu vou trabalhar com logs, eu não vou criar uma única sessão e botando todos os logs lá. Porque senão eu vou ficar reprocessando outras informações dependendo da situação. Então, o que você tem que entender é que você vai criar uma sessão quando faz sentido você ter uma etapa cronológica para você utilizar informações naquele momento que você está trabalhando. Fechou? Fechou, galera? Então, isso aí é importante para vocês conseguirem se ligar. Agora, se você inclusive olhar aqui no debugging do ADK, eu tenho new session, está vendo? Eu criei uma nova sessão e falo. Fale sobre o PHP. Então, essa sessão aqui, que está falando sobre o PHP, ela é isolada da sessão onde eu falo sobre o Kafka. E aqui eu tenho as sessões. A sessão do Kafka e a sessão do PHP. Eu posso ter estados diferentes, resultados diferentes, conversas com outro agente diferente de forma isolada. Beleza? Então, isso aí é importante para vocês conseguirem se ligar. Outra coisa importante que tem, além das sessions, a gente tem memória. E essa parte aqui, galera, é uma parte complicada de explicar. Não é simples lidar com memória. O que é uma memory na realidade? Eu tenho dois tipos de memory. Que é uma memória a curto prazo tá? E memórias de longo prazo. O que é uma memória de curto prazo? É basicamente todo o estado que a gente gera dentro de uma determinada sessão. Onde está acontecendo aquela informação dentro daquela sessão. Memória a longo prazo, basicamente, no caso do ADK, ele tem um serviço chamado Memory Service e você tem diversas classes, vamos dizer, para você trabalhar com memória. Por exemplo, quando eu estou trabalhando aqui nessa interface, ele está utilizando In-Memory Service. O que significa? Significa que quando eu finalizar esse processo, eu perdi tudo. Normalmente você vai usar in-memory service, a coisa para você testar. Raramente você vai usar in-memory service para aplicação em produção, a não ser que você queira perder dado mesmo. Não for perder dado para você não seja importante. Mas eu tenho In-Memory Service, eu tenho memória para RAG, para ele acessar banco de dados, eu tenho In-Memory Service para banco de dados, com tudo que eu vou conversando, eu posso salvando esses dados no banco. Então, o que eu posso fazer? Eu posso invocar Add Session to Memory. E daí ele guarda essa informação para uma memória de longo prazo. E quando eu quiser fazer uma pergunta, eu estiver numa sessão e eu perceber que eu preciso de alguma informação de uma sessão passada, eu posso dar um Search Memory e ele vai buscar coisas em conversas passadas. Fez sentido? Fez sentido aí para vocês, galera? Então, essa parada de memória, ela é complexa. E por que eu estou falando complexa? Porque às vezes você tem muita conversa, uma coisa que teve muito conteúdo e eu gravei. Mas se toda hora eu quiser carregar tudo aquilo pra mandar pro LLM, eu vou gastar muito com token, então dependendo da situação, eu posso gravar esses dados em memória, mas eu posso criar, por exemplo, uma ação de fazer uma sumarização que é um resumo de tudo que tá na memória, para eu não precisar consultar a memória inteira. Fez sentido isso que eu estou falando para vocês? Ok? Essa que é a grande sacada. Tem gente que está falando aqui que o que está escrito está diferente do que que longo prazo não há um in-memory service. In-memory service é uma memória de longo prazo, tá? Porque ela fica gravada na memória, tá? É isso que vocês têm que entender. É tipo assim, é uma informação que eu consigo armazenar naquela minha sessão e ela fica gravada na memória. Entendeu? Basicamente é isso. Eu consigo resgatar, eu consigo adicionar uma session to memory no memory service. Mas quando o processo cair, como tá na memória, você perde. É a mesma coisa falar que o Redis não é um banco de dados. O Redis é um banco de dados em memória. Quando morrer, você perde tudo que está na memória. É basicamente isso. Beleza? Só para ficar um pouco mais claro aí para vocês. Tá? Então, o Memory Service, normalmente, você usa em modo debug para você testar a memória do seu sistema. Tá? Então, só para deixar um pouco mais claro aí para vocês. Tá? Mas, como eu digo, galera, essa parada de memória é complexa. Porque, como eu disse, essa parada de memória é complexa porque como eu disse você pode ter sessões muito longas daí você quer resgatar a sessão pensa num atendimento com o cliente que você atende esse cara faz um ano, todo dia conversando com ele então você tem que conseguir entender quais partes são relevantes da memória, de conversas anteriores pra você trabalhar, tá? outra coisa e entender quais partes são relevantes da memória de conversas anteriores para você trabalhar. Outra coisa aqui, galera, são artefatos. E lembrando, pessoal, que esses componentes que eu estou trazendo, eles são componentes específicos do ADK. Mas, mesmo como componentes do ADK, todas essas informações que eu estou passando são conceitos que servem para qualquer framework, eu tenho tools eu vou ter sessão, eu vou ter memória artefatos o que é um artefato para o ADK? são dados binários que eu consigo nomear e versionar toda vez que eu gerar um novo artefato com o mesmo nome, ele já vai gerar uma versão nova E eu consigo ter MIME Types Então eu posso subir uma imagem e falar que é uma imagem Eu posso subir um vídeo e é um vídeo Para que serve um artefato? Vamos imaginar que eu estou Fazendo algo aqui para o meu agente E o meu agente gera um vídeo Esse vídeo não vai ficar gravado Na minha memória da minha sessão. Então, o que eu vou fazer? Eu vou gerar um arquivo binário, tá? E nesse arquivo binário, eu vou gerar ele como um artefato. E na hora que eu gerar isso como um artefato, eu posso guardar esse artefato na nuvem, por exemplo. Por exemplo, ele tem padrão aqui com o GCS, que é o Google Cloud Storage. Então, imagina que eu gerei um vídeo com o meu agente, ele pega esse vídeo e guarda no Google Cloud Storage. Quando alguém falar, me passa aquele vídeo, ele fala, está aqui o meu artefato. Tem o nome, tem o caminho, está isso aqui pra você. Ok? Fechou, galera? Então, somente pra vocês conseguirem se ligar nessa pegada aí. Então, artefatos normalmente são dados binários, que você não vai guardar num state de uma sessão, mas você gera arquivos binários ali. E aí, a gente tem basicamente, tá? Uma parada chamada de contexto, tá? Então, é chamado de context, tá? E o que é o contexto, basicamente? São dados específicos daquele agente, daquela ferramenta, daquela callback. Então, eu tenho invocation context, eu tenho a tool context, eu tenho callback context. Por que isso é importante? Porque, por exemplo, eu tenho um agente que está no contexto desse agente, que fez uma chamada de ferramenta que tem aquelas informações. Eu tenho um outro agente que ele tem um contexto diferente, então ele não compartilha informações de um cara com outro. Sacou? Então isso aí é importante para vocês conseguirem trabalhar. Tem gente perguntando, é possível trabalhar com outros modelos? É possível. Se qualquer coisa que você for trabalhar com o Lite LLM, você consegue integrar com o ADK. Entendeu? Então, dá para você trabalhar. O ADK é agnóstico a modelos. Por padrão, ele aceita o Google, e se você usar o Lite LLM, você pode usar o modelo que você quiser. Então, essa que é a pegada aqui para vocês. Então, somente para ficar um pouco claro a visão geral da arquitetura da parada aqui, deixa eu tentar mover isso aqui pra cá pra eu conseguir copiar tudo de uma vez, tá? Somente pra vocês entenderem um pouco a arquitetura deixa eu, caramba, tá difícil de copiar pera aí, pra vocês entenderem um pouco a ideia geral do ADK, ele é mais ou menos nessa pegada aqui, tá? Basicamente é isso aqui eu tenho um usuário, e lembrando esse usuário não necessariamente é um humano pode ser um outro agente quando o ADK roda, ele tem um runner tá? o que acontece quando a gente está trabalhando aqui com o ADK nessa interface é que o ADK web, o ADK CLI, ele tem um runner criado só pra subir essa aplicação, entendeu? Quando você for rodar ele de verdade, você vai ter que ter um arquivo de um runner que vai criar uma nova sessão, que nessa sessão ele vai falar qual que é a memória e que ele vai falar qual que é o contexto, inclusive, entendeu? Aí você cria o runner para você e esse runner é o cara que vai utilizar. Então, na hora que eu vou criar o runner, eu vou falar como que eu vou armazenar a sessão, aonde que eu vou armazenar a memória. Eu vou gravar no Vertex? Aonde que eu vou gravar os artefatos? Eu vou guardar no Google Cloud Storage? Vai ser ali. Então, quando eu crio o meu runner, eu faço o setup o meu ambiente. Aí o meu runner vai possibilitar de mandar a invocação pro meu agente, tá? O agente, se ele precisar, ele pode chamar o Matu, e se ele chamar o Matu, ele pode acessar recursos externos, por exemplo. Beleza? Fez sentido, galera? Só pra eu saber aqui de vocês. E aí, tá? Só pra você entender como é que funciona a componente, cara, eu sei que é meio... Eu não sei nem se eu devia estar mostrando isso, não sei o quão é relevante, mas eu vou colocar aqui só para registrar. Então, eu tenho alguma interação com componentes. O user input chama o runner, o runner cria um novo contexto, um invocation context, daí ele faz uma chamada assíncrona, inclusive as últimas versões do ADK rodam somente assíncrono, aí o agente chama tool via tool context, as tool modificam o state e os artefatos, e o agente gera os eventos e a sessão guarda os dados das mudanças. Basicamente é isso, não quero... é muito techniqueis em relação a isso, tá? Agora, uma coisa que eu quero que você entenda, tá? É o seguinte. Eu tenho um cara, tá? No ADK. E agora, preste atenção, galera. Isso é no ADK, tá? Se você for no Crew AI, por exemplo, Landgraf, por exemplo, não é assim. Isso é do Crew do ADK, tá? Ele tem o conceito de agente e subagente, tá? Qual que é a ideia de agente versus subagente? Então, basicamente, é a hierarquia. Então, toda vez que eu crio um agente, e esse agente tem parâmetros como subagente, eu posso falar que esse agente é pai do subagente dele. Tem uma regra, eu só posso ter um pai, eu não posso ter dois agentes sendo pai do mesmo agente. Essa é uma regra ali da parada. E daí você deve estar se perguntando, Wesley, qual que é a diferença entre um agente e um subagente, tá? Porque tem diferença bem clara aí pra gente. autonomia, por quê? Vamos lá, autonomia significa quem que controla a execução, então o agente principal, tá, ou seja, que é pai de algum agente, ele consegue executar e ter autonomia de fazer o que ele quiser, ele pode chamar uma ferramenta, ele pode chamar o LLM, ele pode fazer o que ele quiser, tá, ele decide quando ele chamar a ferramenta para fazer as tarefas dele, ele pode iniciar uma conversa, ele pode iniciar um processo, ele pode fazer o que ele quiser o subagente, ele é executado apenas quando o pai dele decide que ele tem que ser executado ele não tem controle de quando ele é chamado, tá? e ele funciona como se ele fosse uma uma espécie de uma ferramenta pro agente pai dele fez sentido galera? A diferença de autonomia dos dois agentes? Fez, né? Aí, tem uma outra característica da diferença de agente pra subagente. Deixa eu copiar aqui e colar, porque eu exagerei no título desse aqui, peraí. Qual que é a outra diferença? É o escopo. Como é que funciona? No agente principal, eu posso transferir o controle para qualquer agente na minha hierarquia. Ou seja, eu tenho a visibilidade total da estrutura organizacional dos agentes. E eu posso escalar problemas, inclusive, para agentes filhos, filhos dos filhos e coisas desse tipo. Já o subagente, ele está limitado pela hierarquia dele, definida pelo pai. Ou seja, ele só pode interagir no escopo que o pai dele permitiu. Ele não pode pular nível hierárquico. Então, esse aí é um ponto importante. Então, quem determina o controle para esses agentes? Outra coisa que é importante vocês entenderem no diferença de agente para subagente, é que eu tenho... Espera um pouquinho aqui... vocês entenderem no diferença de agente para subagente, é que eu tenho, espera um pouquinho aqui, o estado. O estado é uma das coisas mais importantes. O agente principal, ele tem o seu próprio estado e o contexto. O estado a gente chama de state, tá? O state é quando eu processo alguma informação e eu guardo essa informação naquela minha sessão. Eu cheguei a mostrar no agente que fez a chamada que cria a issue, eu cliquei em state uma hora ali para vocês e vocês, acho que vocês viram, o state acaba sendo uma lista ali, como se fosse um array associativo, para que eu tenha os dados que eu posso acessar naquele momento. Tá? E o agente principal escolhe quais informações ele quer compartilhar com a gente, com o subagente. E ele pode manter informação privada dele. Então, deixa eu materializar um pouco isso aqui para vocês. Eu criei alguns exemplinhos, porque eu sabia que isso ia ficar meio entediante. Então, eu criei um exemplo para autonomia. Então, eu vou dar um exemplo bem simples para vocês entenderem de autonomia. Imagina que eu tenho um agente principal, que é um Customer Service Agent. Então, esse é o nome dele. Aí eu tenho um agente, que é um Customer Service Agent, tá? Então esse é o nome dele. Aí eu tenho um agente que é um sub-agente que vai ser um Order Agent, tá? Que ele chama Order Lookup Agent. Eu tenho um Refund Agent, que faz a... basicamente ele faz devolução de dinheiro. E aí o que eu falo? Eu falo o seguinte, que o Customer Agent ele tem como sub-agente o Order Agent e o Refund Agent aqui para mim. Ou seja, esses dois agentes só podem ser executados se o Customer Agent pedir para eles. Ok? Maravilha? Aí eu tenho o escopo, que é o que eu estava falando para vocês. Olha só, eu tenho um Company AI Agent. Esse Company AI, ele tem subagentes. Ele tem o Customer Service Agent e ele tem o Technical Support Agent. O Customer Service Agent, ele tem o Order Lookup Agent como subagente. Ele tem o Refund Pro agent como subagente. Ele tem o refund processor, a agent, como agente. E o technical support tem um diagnóstico e o outro de escalar problemas, certo? Então, o que cada um pode fazer aqui em relação a escopo? O customer service agent, que é o principal, ele pode transferir tá? Pro pai a informação, tá? Quando ele receber. E esse pai, ele tem acesso a esses dois agentes. O que mais que ele pode fazer? Ele pode transferir algo pro customer support, tá? Porque ele é irmão. E ele pode delegar algo pro filho dele, tá? Porque ele é irmão. E ele pode delegar algo pro filho dele. Tá? Agora, o que que o Order Lookup Agent não pode fazer? Olha aqui, ó. Esse aqui é um Sub Agent, certo? Então, o Order Lookup Agent, ele não pode falar diretamente com o Technical Support, ele não pode escalar nada pro agente paizão de todos, e ele só pode falar diretamente com o técnico ou suporte, ele não pode escalar nada para o agente paizão de todos, e ele só pode retornar o resultado para o pai dele, que é o Customer Service. Quer dizer que é o Customer Service, que esse cara só pode retornar para o pai dele. Fez sentido isso aí para vocês, galera? Cada agente faz uma coisa diferente. Esse é para atendimento ao cliente. Ele consegue ver a ordem de serviço e fazer devolução de dinheiro. Esse é o agente de técnico ao suporte. Ele pode pedir para a gente verificar em problemas e ele pode pedir para outro agente escalar o problema, o ticket para um outro nível, por exemplo. Então, é basicamente nessa pegada. E o estado é aquilo que eu falei para vocês. Então, vamos pensar o seguinte. Eu tenho um cliente que quer cancelar o pedido. Então, o agente pai principal é o Customer Service. Então, eu recebi o Customer ID, a conversa que eu tive com o cliente pedindo para ele cancelar o meu pedido. Eu tenho o meu nível de autorização, o nível de permissão, que é standard. Eu tenho notas privadas, ou seja, eu tenho dados que eu quero gravar somente para mim, com a gente pai. E eu tenho o session context, que é a tarefa atual minha é pedir para cancelar. E qual que é o mood do cliente? O cliente está bravo. Então, eu como agente principal, eu tenho essa informação. Esse cara está no authorization level standard, esse cara é um cliente VIP, que tem que ser cuidadoso, ele quer cancelar e ele está bravo comigo. E a ordem de serviço é ele. O que que pro agente filho eu preciso, eu posso compartilhar com ele? Eu posso falar, o cliente é um, dois, três, quatro, cinco, ele quer uma order cancellation e ele tá frustrado. Eu não preciso falar pra ele que ele é VIP, eu não preciso dar o histórico da minha conversa, eu não preciso falar que a authorization level dele é standard. É mais ou menos como se fosse uma empresa, saca, galera? Tem um cliente bravo que quer cancelar. Eu não preciso falar para o cara do financeiro, tá? A conversa que eu tive para o cliente, o cara do financeiro só tem que cancelar a ordem de serviço. Sacou? Então, isso aí é interessante para vocês conseguirem se ligar. Ou seja, o Private Note não é compartilhado e o Authorization Level não é compartilhado. Você sacou como é que o Estado, o pai consegue compartilhar somente o que ele quer? Sacou? Então, isso é Estado. Então, a diferença de um agente para um subagente em relação ao Estado é essa. O pai consegue escolher o que ele dá para o filho de ter acesso. E daí, eu tenho um fluxo completo aqui. Eu fiz um fluxo para não ficar tão colocado. Então, olha só o que acontece. Só para vocês entenderem. Então, a gente tem um sistema de verdade de atendimento. Então, eu tenho um agente principal que é o Customer Service. Então,? Então, eu tenho um agente principal, que é o Customer Service. Tá? Então, eu falei, ó, você é um agente principal, decida quando usar os seus especialistas. E aí, eu vou falar para ele, você tem um Order Lookup Agente, você tem um Refund Processor Agent, você tem um Technical Support Agent. Aqui, esse cara só procura pedidos. Esse cara só faz reembolso e esse cara só resolve o problema técnico, certo? Então, eu como customer service, eu tenho três subagentes para mim. Aí, como é que a conversa que acontece? O meu cliente chega e fala, o meu pedido 1, 2, 3 não chegou, eu quero reembolso. Então, o que acontece? O customer service agente recebe a mensagem, analisa e fala, eu preciso da informação do pedido e processar o reembolso. Então, ele decide automaticamente chamar os subagentes. Então, ele vai chamar o Order Lookup agente e vai falar, ele é chamado pelo pai com o contexto específico e fala, busque informações do pedido 123. Aí esse lookup agente vai buscar esses dados e ele não responde direto para o cliente. Ele vai retornar esse dado para o pai. Aí o que acontece? O pai também vai falar para chamar o customer service a gente vai falar, ok, eu recebi os dados do pedido aí eu quero verificar se o reembolso é possível, então eu vou chamar o refund processor agent aí o refund processor agent vai receber o dado de contexto e vai falar processo reembolso, ele verificar eu posso? beleza, ele retorna que ou reembolso? Ele verificar eu posso? Beleza. Ele retorna que o reembolso foi retornado pro pai e o pai fala, beleza. Aí o agente principal monta uma resposta pro cliente e fala, seu pedido 1, 2, 3 foi encontrado e o seu reembolso de 50 reais foi processado. Ou eu posso escrever, meu ah, me desculpa Wesley, eu sinto muito por você estar pedindo reembolso, me desculpe por todo inconveniente, eu processei aqui, os seus 50 reais foram colocados, tá? Só para você saber, vai estornar no seu cartão. Quem escreve isso, ou quem fala isso, é o agente. E eu posso escolher a forma como ele colocou. Então, por exemplo, se o cara tá frustrado, eu posso falar, putz, desculpa. Se o cara tá feliz, eu posso falar, poxa, cara, tô reembolsando, mas pera que semana que vem você volte e contrate de novo. Se o cara tá passando por problemas pessoais, aconteceu um acidente na minha família, eu preciso reembolso, ele fala, poxa, me desculpa, cara, poxa, me desculpa, cara que situação chata, eu vou processar aqui pra você sacou qual que é o negócio, galera? sacou qual é o negócio? eu posso ver o tipo, se o cara tá triste ou se ele não tá, se ele tá bravo e a minha resposta final e o meu comportamento com aquele cara, ser completamente uma resposta diferente da outra chacou? Então, essa que é a ideia de quando eu trabalho ali com subagentes. A ideia principal é essa. O agente pai, ele consegue trabalhar com o orquestrador. Mas, uma coisa que é importante vocês saberem, tá? Esses agentes aqui, eles podem ter subagentes dele. Que pode ter subagentes dele, que pode ter subagentes dele. Uma outra coisa que é importante aqui, é que esse agente, ele pode ter ferramentas para buscar a ordem de serviço. Ok? E o ADK, ele tem algo interessante, tá? Que é o seguinte, às vezes, eu não quero trabalhar com subagentes, porque eu não quero trabalhar com fluxo, eu quero trabalhar de uma forma mais simplificada. Eu não quero compartilhar estado, eu não quero nada disso. Então, sabe o que eu faço? Eu chego aqui e crio as minhas tools e na minha tool eu falo que eu quero criar uma agent tool, tá? Aqui pra mim. E eu falo qual é o agente que eu quero. Então, o que vai acontecer? O meu agente principal, ele vai chamar o outro agente como uma ferramenta, não como um subagente você entendeu qual que é o negócio? sacaram como é que funciona galera? deu pra vocês entenderem? então eu posso no ADK chamar agentes como se eles fossem ferramentas ou eu posso fazer com que esses agentes funcionem como subagentes. A ferramenta tem o escopo de ferramenta. O subagente tem o escopo de agente. É diferente. Legal? Conseguiram pegar a ideia, galera? Agora, a gente vai para algo interessante, que são design patterns. Design patterns. Eu tenho patterns na hora que eu vou organizar e estruturar os meus agentes. Então, esses patterns vocês vão começar a escutar ao longo dos anos, patterns vocês vão começar a escutar ao longo dos anos, ao longo do... ao longo das nossas vidas como estudantes de desenvolvimento com IA. Tá? Então, eu tenho um pattern que é chamado de coordinator barra dispatcher pattern. O que que esse pattern significa? Que é um LLM central, coordena e gerencia vários subagentes especializados para rotear a requisição de entrada. Então, todo mundo quando falar de coordinator ou dispatcher, você sabe que é um pattern. Beleza? Aí, você tem um outro pattern. Eu vou botar três patterns aqui de uma vez, que fica mais fácil. Aí, você tem alguns outros patterns que são interessantes, que são interessantes. Que são Sequential Pipeline Pattern, que é um agente sequencial que contém subagentes que forçam a gente a executar em ordem fixa para implementar um processo passo a passo. Com uma saída mais clara. Beleza? É bem óbvio o nome, né? E é sequencial aí eu tenho um outro pattern que é o parallel ou fanout ou gather pattern, que é o que? é um agente que consegue chamar diversos subagentes de forma concorrente e depois ele pega tudo aquilo e agrega o resultado beleza? aí eu tenho um outro pattern, que é o Hierarchical Task Decomposition. Então, basicamente, eu entendo a minha árvore de agentes, vejo qual é o agente superior, entendeu? E eu verifico como que eu vou fazer a delegação de tarefas para agentes que estão debaixo. Quando você vai criar um agente, galera, você tem que, antes de sair criando, você tem que arquitetar, ver como é que vai ser a hierarquia dos seus agentes. Quantos agentes eu preciso? O que cada um vai fazer? Como cada um vai fazer? Qual ferramenta cada um vai ter? Vocês entenderam o que eu tô querendo dizer aqui pra vocês, galera? Manjou? O que eu tô dizendo? Então, pra criar uma aplicação normal, eu não tenho, eu tenho, eu fico pensando em classes, em objetos, os patterns, como um microserviço chama o outro, e quando você tá falando em agentes, tem classes em todas essas coisas, mas você tem essa estrutura que você tem que montar na hora de você criar esses agentes. Aí a gente tem mais três patterns aqui que vocês vão ouvir bastante falar e que vale a pena citar. Que é o review barra o critique pattern, né? Que é um generator critique. Basicamente é um agente, tá? Que são compostos dentro de um agente sequencial, pra um criticar e o outro revisar o que cada um vai fazer, até validar a qualidade da saída gerada. Basicamente como eu fiz no meu agente da issue do GitHub. Manda para um revisor, daí o outro revisor nega, e daí o cara tem que melhorar e eles ficam num loop até sair o resultado final. Bacana? E eu tenho o pattern que é human deloop, que basicamente em algum momento o agente ele tem que pedir supervisão humana pra continuar com algum passo tá? então essa que é a ideia aí interessante aí pra vocês maravilha galera pra gente ir pro final da parada, tem muita gente que já escreveu, tá? Perguntando. Como, no final das contas, eu vou verificar de quem é a culpa? Qual que é o erro que eu tenho? Como que eu verifico observabilidade disso? Como que eu consigo verificar se as coisas estão funcionando da forma como estão fazendo? Tá? Beleza? Conseguiram sacar a ideia? Então, pra fazer isso, você vai ouvir pra caramba esse termo, tá? Você vai ouvir pra caramba esse termo, tá? Você vai ouvir pra caramba esse termo, que é chamado evaluation. Entenda evaluation como testes automatizados de agentes e de inteligência artificial de forma geral. A evaluation, no final das contas, o que ela faz é o seguinte, ele avalia o comportamento da inteligência artificial pra gente ter um determinado resultado. O ponto é que cada vez que a IA responde, ela responde de um jeito diferente. Cada vez que a IA trabalha, ela tem fluxos diferentes. Então, eu preciso de metodologias e ferramentas para eu fazer essa análise. Entendeu? E no caso, aqui, vocês vão ouvir bastante coisa sobre isso aqui. Trajetória e tool use. Então, como é que funciona essa parada? A trajetória e a utilização de ferramentas funciona assim. Eu analiso a sequência de passo que um agente toma para resolver um problema. Tá? E essa parada funciona da seguinte forma. Baseado nesses passos, eu tenho algumas métricas que eu tenho que entender. Tá? Quais são as métricas? Tem uma parada que eu posso escolher, inclusive, pra dizer se o meu teste passou ou se não passou, tá? Que é exact match, que é assim, o resultado que eu imaginava é exatamente aquilo que eu queria. Exatamente como um teste de unidade. Né? Um mais um tem que ser igual a dois. Acabou. Tá? Mas, às vezes as vezes pra mim eu tenho um outro match que é in order match ou seja, pra garantir que o fluxo que o agente seguiu é exatamente naquele que eu queria ou seja, chamou o agente 1 que chamou o 2, que chamou o 3, que chamou o 4 que fez isso e etc tá? mas o fato é que ele segue uma ordem mas ele pode executar outras ações mas o importante é ele ter essa ordem correta beleza? aí ele tem o any order ou seja, um agente pode chamar o outro que chama o outro, independente da ordem mas o importante é que eles chamem e aí, baseado nessas métricas eu tenho uma parada chama o outro, independente da ordem. Mas o importante é que eles chamem. E aí, baseado nessas métricas, eu tenho uma parada que é chamada de precision. O que é precision? É a relevância das ações. Como assim? Se eu tenho um exec match, e se não deu o match certo, a minha precisão é de zero. Mas se eu colocar em order match e ele deu um resultado 0.7, significa que baseado naquela ordem, ele teve uma margenzinha de erro ali. Então na hora de eu testar os meus agentes, eu coloco meio que a margem de erro. O nível de precisão que eu tenho no comportamento Então, na hora de eu testar os meus agentes, eu coloco meio que a margem de erro. O nível de precisão que eu tenho no comportamento do agente. E qual o nível de precisão mínimo que eu tenho que ter para eu ter confiabilidade. Então, para operações mais críticas, eu coloco um nível de precisão maior. Algo menos crítico, eu diminuo o nível de precisão. Tem o recall, que é quantas ações foram capturadas, e aí eu tenho o final das contas, que é o final response, tá? O final response, ele verifica a qualidade, a relevância e a correção que ele teve durante o passo na saída final que é retornada pro usuário. E a métrica é chamado de response match score, tá? O que que é isso, na realidade? E a métrica é chamada de Response Match Score. O que é isso na realidade? O Response Match Score, ele compara a resposta final que o agente deu para o usuário com a resposta que eu esperava que ele deu para o usuário. E daí ele vai gerar para mim um score. Ele pode dar 0.8, 0.9. Então, eu sei que a resposta está muito próxima. Por exemplo, a sua ordem 1, 2, 3 foi cancelada com sucesso. E daí, o resultado que estava ali é, a ordem 1, 2, 3 foi cancelada. Ou seja, não é idêntico, mas é muito igual. Então, não vai ser 100%, mas o match está ali. E ele usa um algoritmo, uma métrica, basicamente para fazer isso, que é chamado ROUG. Só para vocês saberem, ROUG significa Recall Oriented Understood For Distinct Evaluation. oriented, understood for gisting evaluation. Basicamente, é uma métrica que já existe de diversos algoritmos e métricas que comparam qualidade de resumo a tradução para ver o resultado. Sabe quando você faz um Google Translator, quando você pede para pegar um texto e esse texto ser resumido? E você quer ver a precisão que esse texto teve, o quão mais acurado que aquela parada foi, então existe uma parada que é chamada de Roge Metric que usa várias métricas pra dizer o quanto que aquilo foi positivo o quanto que aquilo foi preciso ali pra vocês, entendeu? Então a grande sacada que a gente tem que se ligar é que existem formas, então, de a gente analisar o comportamento do agente, tá? E na hora que eu analiso esse comportamento do agente, eu consigo verificar se ele tá passando nos meus testes, é como se fossem testes, tá? Então, eu acho que eu tenho um exemplo aqui para vocês olharem mais ou menos como é que é. Quer ver? Bug Finder Agents. Se vocês olharem aqui, eu tenho uma pastinha de Evol. No Evol Config, eu coloquei o critério e eu falei Tool Trajectory Average Score de 0.5. E o Response Match Score de 0.5. E o Response Match Score de 0.8. Então, o critério pra ele passar nos meus testes é que a média da trajetória, ou seja, as chamadas dos agentes, sejam pelo menos 0.5. E o Match Score dele é 0.8 pra resposta. E aí, o que que acontece? Eu tenho o meu EVOL 7. O que é o meu EVOL 7 no final das contas? É um arquivo que vai mostrar uma conversa de um passo inteiro de uma chamada de agente. Esse aqui é como eu imagino que deve ser. Ou seja, eu criei um EVal aqui de no error. Sabe quando eu chamo o meu agente, coloco um bug, um log ali, e no log eu coloco que ele detecta que não foi um erro? Tá? Sacou o que eu estou dizendo? Então aqui, eu estou fazendo essa evaluation. Ou seja, eu criei um no error, esse aqui é o texto de input. Está vendo? Do meu log. Ok? Aqui está o meu final response. Aqui tem os dados intermediários de chamadas de tools, etc, etc. Aqui para mim. O session input, etc. Aí o que acontece? Eu rodo um programa que vai executar o meu agente com aquele mesmo prompt aí ele vai verificar baseado nessa chamada aqui com esses critérios, se o meu teste passou ou não. E quando ele faz isso, ele gera um ADK que são os meus sets. Que é toda a resposta aos dados prontos para ele fazer essa simulação. Então é basicamente essa que é a pegada. Manjou? Então eu consigo criar vários sets de treinamento como eu imagino que se a gente ele consiga trabalhar. E aí o interessante é que eu posso criar vários sets de treinamento, como eu imagino que se a gente, ele consiga trabalhar, tá? E aí o interessante é que eu posso criar vários sets e eu posso cada vez ir mudando o modelo de LLM para chegar no modelo mais barato possível, que tenha latência, que eu imagino, e ver se ele consegue se comportar da mesma forma de um agente muito bom, de um modelo muito bom. Porque daí eu sempre tento trabalhar com agente mais barato e que entregue o resultado que eu estou esperando. Entendeu? Então, essa que é a grande sacada aí que estão colocando. Perguntaram aí, esses testes ou analisadores são outros agentes, outras IA? Nesse caso aqui, tem uma ferramenta do próprio Google, tá? do próprio coisa tá? aqui ó deixa eu ver se ele vai funcionar mas aqui eu tenho um set, tá vendo? eu dou um evolve aqui pra ele passando o meu set tá? e ele vai ele não achou o meu diretório porque o meu diretório não tem o SRC. Eu acho que é Agents. Deixa eu ver se vai. Ah, não. Na realidade é outra coisa. Eu estou fazendo viajando aqui. Ele está procurando aonde está o meu config. Onde que está o meu config? Acabei de abrir o meu config aqui, galera meu Deus, aqui tá na pasta eval, né? ah, então tá aqui, meu config tá na pasta não, meu config tá no teste config dentro de eval, eu acho. Eu vou dar um evol no agente que é bugfinder. No endereço que é agents bugfinder. Cara, meus caminhos estão todos errados aqui. Mas basicamente é isso aqui, galera. É como se você rodasse um teste de unidade. Como que chama o meu cara aqui? Evol config. Como é que eu estou chamando o cara aqui? Teste config. É, por isso que ele não vai rodar. Evol config. Mas eu acho que ainda assim ele tem caminho errado. O agente, o set do cara tá... Eu nem tô mais com o set aqui na realidade, né? Cadê o meu set? Tá aqui. Tá dentro de Evol também. Deixa eu ver se eu consigo aqui evol a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ele tá em ele tá em evol barra bug finder evol e eu tô pedindo pra ele ver esse agente, vamos ver se ele vai rodar, aí, agora tá rodando tá dando um monte de warning e ele falou se o meu teste passou ou não, então olha o seguinte ele falou que o meu result não ou não. Então, olha o seguinte. Ele falou que o meu result não passou. Mas tem coisa que passou. Tá? A métrica do resultado final falhou. Provavelmente falhou porque o resultado final do agente não foi o mesmo. O texto do usuário final não passou. Mas se você olhar, a evaluation deu 0.55. passou. Mas se você olhar, a evaluation deu 0.55. E se eu olhar aqui no evalconfig, é 0.5. Então eu passei, tá? O meu teste de trajetória passou, mas o de resultado não passou, tá? Então só pra vocês saberem, ó. De evaluation, de trajetória passou, e o de o meu resultado não passou. Basicamente é isso aqui do meu sumário. Entendeu? Sacou, galera? Fez sentido para vocês? Então, galera, quando alguém chegar para vocês a partir de hoje e falar que a gente é um software normal, o que vocês vão falar para eles? O que você vai falar para a galera que falar que a gente é um software normal, o que vocês vão falar pra eles? O que você vai falar pra galera que falar que a gente é só um software, é só chamar uma API, só chamar a API do OpenAI e fazer um chat completion no GPT? Sacou? Agora, uma coisa interessante pra vocês saberem, é que não é complexo desenvolver. Ele começa a ficar complexo quando você começa a controlar estado, o caramba 4, entendeu? Mas, de forma geral, ele não é difícil. Por exemplo, nesse meu agente do Bug Finder, eu tenho subagentes. Se eu vou botar aqui o agente que cria a minha issue no GitHub, eu tenho um arquivo. Olha que ridículo que é, cara. Eu tenho um arquivo, aqui, que eu verifiquei a coisa, falei qual que é o nome dele, falei qual o modelo, coloquei a descrição pra o outro agente saber quando chamar ele, falei qual que é a instrução, que eu tenho um prompt dele aqui, ó. A instrução do meu prompt. A um prompt dele aqui, ó. A instrução do meu prompt. A output key. Output key é o resultado final que grava no estado, tá? Sabe aquele state? O output key gera o state com essa chave. E o tools, olha só o que eu tô fazendo. Eu tô chamando, adivinha quem? Um MCP como tool. Chamando o Docker como tool, chamando o Docker como MCP e o Docker tem acesso ao quê? Ao meu GitHub. Porque o Docker, ele está no Docker Catalog, que está ativo aqui no meu GitHub. Entendeu? Sacou qual que é o negócio? Então, essa que é a grande pegada então o meu agente pra criar uma issue eu uso uma tool MCP, e no prompt dele olha o que eu falei, você é responsável por criar issues no GitHub a sua tarefa tá? é criar uma issue no GitHub usando o MCP create issue tool usando o seguinte draft e aí eu passei o issue draft da onde que veio o issue draft? tá no meu state que foi gerado pelo agente que criou a issue então eu tô compartilhando estado entre agentes e daí eu falei, instruções extraia o título do agente com a primeira linha do draft. Bota o título da issue com a primeira linha. Pega o critical level da issue e determine isso nas labels do GitHub. Crie uma issue, use a issue tool do GitHub MCP, com os seguintes parâmetros. O owner é o Wesley Williams, o repositório é a DK Issue Creator, o título extraído da issue, o body, o conteúdo completo do draft e as labels usando a prioridade. Crie no GitHub a issue exatamente como foi provida no draft. Importante, o owner do repositório tem que estar separado com parâmetros. Não combine Wesley Williams, que é a coisa. Aqui, o output requirements. Aqui eu estou falando como ele tem que retornar o resultado para mim. Então, ele vai estar trazendo para mim se falhou, o título, o sumário, o critical level e a URL do GitHub issue. Por que eu preciso desse resultado? Porque o meu Issue Notificator, que é o meu agente, o que ele faz? Ele manda mensagem para o Discord notificando, usando o MCP, inclusive, aqui também. E no prompt dele, eu pego o resultado da Issue feita pelo cara do agente que criou a issue, como resultado e dou a instrução extrai o título, pega a mensagem chama o discord no canal tal se você não conseguir mandar essa mensagem no discord fale que falhou não mande a reposta, blá blá blá e o formato da mensagem tem que ser esse, já com o link do GitHub, e o resultado fala que foi criado lá no Discord. Entendeu? Então, galera, se você olhar, foi ridículo criar uma issue no GitHub, concordam comigo? Eu só falei o que ele tem que fazer e passei a tool, que é um MCP do GitHub. Manjou? É que as coisas vão começando a ficar mais complexas. Você tem memória, aí você gera um artefato, daí você sobe o artefato. O cara perguntou, você chama um search, o cara perguntou o documento da empresa, você chama o reg. Então, as coisas, elas começam a escalar. documento da empresa, você chama o REG. Então, as coisas, elas começam a escalar. Por isso que é interessante entender essa estrutura multiagente. Tá? E aí, você vai longe. Sacou? São coisas bem simples. Mas, se você não entender o conceito, você não faz. Sacou? Fez sentido, galera? Tá? Então, por isso que eu sempre pego o pesado e eu sempre digo fundamento, galera. Porque se você entender fundamento, vai ser mais fácil você entender como outros frameworks de agentes funcionam. Tá? E o mais importante é você conseguir diferenciar um agente de uma aplicação que use IA. Tá? Essa que é a grande sacada nessa parada aqui. Entendeu? Então, galera, uma coisa que eu tenho absoluta certeza, tá? Todos nós teremos que aprender a desenvolver essas paradas tá porque ou você acha que o software que você vai fazer vai ser só a chamada payrest pra sempre na sua vida entendeu então é coisa pra caramba, eu entendo tá pessoal tem gente que falou a coisa, eu tô até com dor de cabeça de tanta informação desculpa meu amigo Neto cara, eu não queria gerar e causar essa dor de cabeça cara, mas o lance é que tem cara, é muita informação mesmo meu amigo, é muita informação sabe o que é o pior de tudo? é que um monte dessas informações mesmo você perguntando no GPT, você usando a própria IA, é difícil de achar. Entendeu? E por que que eu tô dizendo isso? Porque eu tô meses estudando essa parada. E como foi difícil? Vocês não tem noção como foi difícil eu chegar num ponto de eu conseguir dar essa aula pra vocês. Entender? Sacou? Porque quando eu comecei a aprender, eu não sabia o que eu não sabia. Aí como que eu vou perguntar né? Patterns e agentes. Como é que eu vou entender conceito de memória? Built-in tools. Cara, simplesmente se você não entender Patterns e agentes Como é que eu vou entender conceito de memória Built in tools Cara, simplesmente se você não entender Essas bases, esses fundamentos Você não tem ponto de partida Sacou? E eu acho que essa que é a grande sacada Saca? Então o que a gente tem que tomar cuidado, pessoal Nos dias de hoje Com chat GPT, com cloud Com cursor e tudo mais, é o quê? Se você não tem fundamento e não entender, você corre o risco de fazer muita M, entendeu? Tenta você ir no cursor e pedir pra criar vários agentes desse sem entender essa estrutura, sem entender essas hierarquias, sem entender essas paradas. Não vai sair. E sabe como é que eu consigo falar pra você que não vai sair? Porque eu tentei. Algumas coisas saíram, mas quando eu fui ver, tava tudo errado, cara. Tava tudo desconce... Funcionava. Mas sabe que funcionava tudo errado? Sacou? Então, essa que é a parada. Fica tudo errado. Entendeu? Ah, porque eu queria fazer um revisar o outro. Daí eu não sabia que tinha o loop agent. Depois eu não sabia que o loop agent tinha uma quantidade máxima de tentativa. E ele podia ficar num loop tentando ficar num loop infinito. Aí eu queria que um agente acessasse o estado do outro. E daí não dava, porque ele era o pai. Eu não conseguia acessar o estado do pai. E a parada vai ficando mais ou menos dessa forma, sacou? Então, como tudo nessa vida, galera, estudem bastante, tentem entender bem esses conceitos, porque daqui pra frente essas paradas esses patterns essa conversa que a gente teve vai ser o novo REST sacou? vai ser o novo, a forma de desenvolver software, tá? então cada dia vai ser mais natural isso, tá? hoje que eu tô fazendo, pode parecer, ah, não sei o quê, bem diferente. Mas daqui dois anos, daqui um ano, isso aí vai ser, cara, entender método post, put, get, delete e coisas desse tipo, entendeu? É que acaba mudando essas paradas, fechou? Então, a nossa vida, ela está bem diferente para desenvolvimento de software perto do que ela era antigamente. Teve um shift muito grande. Mudou o conceito da parada. Entendeu? Tem protocolo? Tem. Tem internet? Tem. Tem rede? Tem escalabilidade? Tem banco de dados? Tem REST? Tem tudo, cara. Tem tudo, mas é tudo diferente sacou? o Arthur falou aqui uma coisa interessante prompt injection, seria com prompt também? sim mas olha só que interessante, tem algo chamado pra você trabalhar com LLMs, que é chamado de guard rails guard rails são Tá? Guard rails são filtros que você coloca antes de chamar a IA. Então, eu posso fazer filtros antes de chamar o meu agente. Eu posso fazer filtros depois de chamar o meu agente. Eu posso fazer filtros antes de chamar o Matu, depois que chamou o Matu, antes da resposta, e depois da resposta. E tem filtros e guardrails prontos. Por exemplo, a Google tem um pacote de gene AI deles que são filtros clássicos. Por exemplo, quero que seja proibido qualquer coisa de pornografia. Quero qualquer coisa que é proibido em discurso de ódio. Quero qualquer coisa que é proibido isso. Quero qualquer coisa que é proibido em discurso de ódio. Quero qualquer coisa que é proibido isso. Quero qualquer coisa que é proibido aquilo. Já existem alguns guardrails que o próprio a infraestrutura já dá pra você, tá? E tem guardrails que você pode criar depois que passar por essas camadas de filtro. E você pode criar agentes que são esses guardrails. Então, o agente chama o outro para filtrar, para garantir que não vai dar rolo. Entendeu? Fez sentido, galera? Tem framework de guardrails. Ok? Porque isso é o nosso novo... É o nosso novo Firewall, é o nosso novo... o nosso novo Firewall, é o nosso novo SQL Injection cara no final das contas vai ser tudo via prompt, então eu consigo colocar esses filtros e não, é tipo, os básicos são simples, porque é desenvolvendo mas tem coisas que é complexas porque é seu negócio né, então essa que é a grande pegada aí pra você tá, então você consegue sanitizar essas paradas aí com diversos guardrails que você começa a conseguir colocar fechou? Então essa parada é importante. Galera, eu vou abrir pra perguntas mas antes de abrir pra perguntas eu não posso deixar novamente de citar, tá até o final dessa semana a gente tem o nosso lote para você poder entrar no nosso MBA em Engenharia de Software com o IA. Basicamente, o que você viu nesses três dias, você vai ver por um ano. De uma forma muito mais profunda. De uma forma muito mais prática. Você vai entender a arquitetura de software de verdade numa realidade muito diferente do que a gente estava acostumado. A gente vai entender como que eu precifico a utilização da minha A. Qual modelo eu vou utilizar? Quantos tokens eu vou precisar? Como que eu vou estruturar os meus agentes de A? Como que eu vou estruturar o meus agentes de A como que eu vou estruturar o meu banco de dados em vetor né, como que eu consigo pensar em segurança, como que eu consigo, se vocês perceberem, mudou galera, a arquitetura de software mudou e a arquitetura de solução também mudou, eu vou integrar meu agente com o Kafka pra receber stream como é que eu consigo escalar meu agente pra não gastar? Como é que eu faço subidados em batch pra eu economizar nos meus prompts? Como é que eu trabalho com cache? Sacou? Tudo isso basicamente acaba mudando bastante. Então, a arquitetura de software, ela está se transformando, porque desenvolver software mudou. Outra coisa que mudou é como você desenvolve. Cursor, usar MCP, trabalhar com workflows, trabalhar com prompts, trabalhar com... Grande parte de coisas que eu mostrei ontem ler documentações, gerar documentações trabalhar com design docs cara, todas essas coisas mudou muda a forma de como que a gente trabalha com software e é por conta disso que no final das contas a gente tem essa parte focada em fazer você ser muito mais, programar cinco vezes mais e eu mais programar 5 vezes mais e eu coloquei 5 vezes mais aqui, tá galera de forma conservadora na minha opinião é muito mais que 5 vezes mais, tá mas se eu coloco 10 vezes mais daqui a pouco eu ia começar a ser linchado na internet, tá então eu coloquei 5 vezes mais de uma forma conservadora, porque na minha opinião é bem mais que isso, tá? Então, eu coloquei cinco vezes mais de uma forma conservadora, porque na minha opinião é bem mais que isso, tá? Outro ponto é como que eu desenvolvo aplicação e agentes. Ou seja, o que a gente falou agora, né, em algumas horas, são módulos que, cara, a gente vai a fundo nisso, né? A gente vai fazer isso às paradas bem práticas, a gente vai trabalhar bastante nisso. E a outra parada é DevOps e SRE, cara. Entregar software. Verificar software em produção. Garantir a confiabilidade do software. Então, isso aí muda. DevOps mudou completamente como é que a gente consegue trabalhar. Então, isso aí é importante. Desconto, galera. A gente tem um preço especial pra quem é aluno do curso Full Cycle ou não. Quem é aluno da Full Cycle. Então, se você é nosso aluno, você tem desconto de aluno, tá? E se você é nosso aluno, você não tem desconto de aluno, e daí você vai virar nosso aluno e num próximo curso ou numa outra situação, você pode ter algum desconto de aluno ou fazer outros cursos nossos com desconto de aluno, tá? Uma coisa que é interessante é que, nesse processo, galera, uma coisa que eu tenho focado muito quando a gente está falando em MBA é essa proximidade que a gente tem, tá? Por que que eu estou dizendo? Na minha opinião, e eu acho que vocês devem compartilhar dessa opinião talvez um pouco comigo, aquela história de fazer curso, de só assistir vídeo, tá acabando só. É importante, mas é como se fosse um extra, é como se fosse a parte mais, não digo mais básica, mas como se fosse um extra é como se fosse a parte mais não digo mais básica mas como se fosse meio que a base do negócio mas no final do dia hoje com coisa uma das coisas que eu mais estou valorizando é exatamente isso que a gente está fazendo agora a gente aqui no Zoom conversando, poder trocar ideia estando um perto do outro, você conhecer outras pessoas, você ter networking com outras pessoas, você ter talks, lives fechados no Zoom, conversando com pessoas que normalmente vocês não conversariam entendeu? quem aqui tá no nosso MBA em arquitetura full cycle e que já participou de talks com especialistas aí tá? é diferente né galera e que já participou de talks com especialistas aí. Tá? É diferente, né, galera, do que se assistir uma live no YouTube ou fazer uma sessão de system design onde a galera quebra em grupos e os grupos trabalham juntos e depois a gente volta, a gente discute. É diferente do que apenas ficar assistindo, né? Aí, ó, a gente teve com o Elemar. O Elemar também vai participar desse... Também de talks aqui de IA. O Elemar, ele tá a todo vapor também com arquitetura e com IA, tá? Então, caras, a nossa ideia não é você só ouvir uma música tocando CD. Ou tocando o MP3. É você indo no show, tá? Eu quero que você escute a música assistindo o vídeo na plataforma, mas eu quero que você venha para o show, estar junto comigo e com as pessoas para conseguir ter uma experiência diferente, entendeu? Então, essa é a parada. Sabe dizer como que a Full Cycle é reconhecida internacionalmente em relação ao certificado? Cara, ele não tem reconhecimento internacional, na realidade a única forma de uma faculdade ter reconhecimento internacional, ela é ter parceria com outras faculdades que meio que assinam embaixo, tá? E a gente não tem ainda, tá bom? Mas, por exemplo você pode, por exemplo ter esse certificado de MBA no MAC imagina que você vai fazer um processo de visto nos Estados Unidos pra Green Card você consegue, com esse certificado comprovar que você tem um MBA tá? Então, só pra vocês saberem disso, tá? Ele não vai contar como crédito necessariamente em outra instituição dependendo da situação depend em outra instituição, dependendo da situação, dependendo da instituição, tá? Mas as pessoas enxergam que você tem um Master, por exemplo, entendeu? Então isso é importante vocês conseguirem entender, beleza? Outros pontos também que é importante você se ligar, caras, é a gente estar junto, tá? Então a gente tem aulas que são semanais, tem vezes que a gente não... de forma geral é semanal, eventualmente não tem numa semana, por exemplo, né, a semana não tá tendo a aula no MBA que eu ia dar, por exemplo, porque eu tô fazendo esse evento, entendeu? Mas os alunos do MBA, por exemplo, porque eu estou fazendo esse evento. Entendeu? Mas os alunos do MBA, por exemplo, de arquitetura, vão ficar com essas gravações inteiras na plataforma para ver. Quem não é aluno, né? Tinha que assistir ao vivo e não vai poder ficar. Então, a gente sempre também tenta trabalhar dessa forma para honrar os nossos alunos também. Então, tem esse ponto aí pra gente, tá? Outra coisa antes de a gente fechar, galera, porque eu sei que tá todo mundo cansado, o Leonan bota também o link aí também pra galera poder acessar a página, tá? E uma outra coisa... Nossa, eu perdi o meu raciocínio, tá? E uma outra coisa que eu fiz questão de colocar na grade, e eu coloquei isso em todas, o conteúdo da grade está sujeito a alterações devido à rápida evolução da IA. Então, cara, provavelmente daqui até o final do curso, coisas novas vão ter lançado. Então, a gente fez de uma forma pra ficar bem flexível, inclusive junto ao Mac, pra que a gente consiga ir mudando e atualizando e mexendo nessas grades, tá? E as aulas ao vivo, elas são bem interessantes porque a gente consegue mostrar algo que tá funcionando agora pra vocês implementarem agora e se essa parada mudou, a gente pode fazer uma outra aula ao vivo discutindo essas mudanças, entendeu? Porque uma outra aula ao vivo discutindo essas mudanças. Entendeu? Porque essa parada é importante. Uma outra parada, galera, é o seguinte. Tomem cuidado que tá tendo uma fraude. Tem gente falando com o número fake do WhatsApp, falando que tem gente vendendo a Full Cycle Tech Week por R$297,00. E o evento foi gratuito. E tem gente que tá tentando dar a entender que o MBA é 297 reais, tá? Então, só recebam mensagens nossas através de números verificados no WhatsApp. A gente tem os grupos, nos grupos é a gente que posta, tá? Mas se vocês receberem coisas parecidas com isso, tá? Olha, isso aqui é um print de uma tentativa de golpe. Vou até botar um número aqui para vocês. Desenvolvedor agora é com você. As aulas do Full Psycho Tech Week IA for Developers já aconteceram e agora chegou o grande momento final. Você foi sorteado para receber acesso a IA mais completa. Cara, a pessoa que veio não sabe nem falar, né? A pessoa vai receber uma IA, sacou? Então, isso é golpe, tá, galera? Então, tomem cuidado com isso aí para vocês saberem. O Ítalo perguntar, vai ter matéria de IA no MBA de arquitetura? Sim, aos poucos a gente está colocando e a gente vai ajustando essa grade, tá? Somente pra vocês saberem, tá? Então, galera, tomem cuidado, tá? Com pessoas bandidas no final da história, tá? E... E... Uma regra bem clara, galera. Toda vez que você vê alguma coisa da Full Cycle com preço muito barato, você pode já desconfiar porque a gente não vende nada barato, tá? E eu digo que não vende nada barato porque eu acredito que a gente entrega coisas diferenciadas do que tem no mercado, tá? Então, provavelmente você não vai ver um MBA ou alguma coisa de 297 reais aí nosso, tá bom? Então, tomem cuidado aí de vocês. A gente tem vendedores, normalmente esses vendedores entram em contato com vocês quando vocês pedem um contato no nosso site, tá? E aí a gente tem vendedores, né? Vendedores, pré-vendedores, a gente tem consultores, então a gente tem a Samira, a Larissa, a Mayara, a gente tem o Pedro, a gente tem... A gente tem bastante gente na equipe, tá? Então, a Regina, que é a nossa gerente comercial, então a gente tem bastante pessoas da área comercial, mas você vai perceber que normalmente essas pessoas vão entrar em contato com vocês, quando vocês entram em contato, entrando com uma solicitação, tá? Agora, fora isso, as mensagens que vocês recebem são números verificados no WhatsApp, então vê o xizinho ali com eles, tá bom? Maravilha, galera! Só pra finalizar também, Wesley, em relação a isso aí, pessoal, um aluno me enviou aqui, essa questão do golpe, tá? vocês vão reparar que o checkout lá que eles usam é um negócio que não faz nem sentido então todas as nossas compras é pelo nosso domínio é só vocês checarem lá, se tiver qualquer coisa que não seja ponto full cycle é golpe, basicamente beleza, o Ricardo falou, tô recebendo mensagem do telefone que consta como cara, me desculpa Ricardo eu não sei os telefones de cabeça da empresa, tá mas, cara, se você entrou em contato, a gente entrou em contato com vocês e etc, é super de boas, tá agora, se você recebeu uma mensagem sem número verificado aquele bichinho lá no WhatsApp falando que é verificado, cara, não confia, tá bom? E se você tiver alguma dúvida, entre em contato com a gente e a gente verifica pra você se é mentira ou não, ou qualquer coisa desse tipo, tá? Etc. Beleza? Então, a Melina, tem a Melina também, cara. Assim, trabalha com a gente também, a Melina, tem a Melina também, cara. Tem, assim, é... Trabalha com a gente também, a Melina, tá? Só pra vocês saberem, tá? Então, é... Fiquem ligados aí, tá? Então, olhem sempre o nosso domínio. Se o checkout for diferente, não confiem. O que às vezes acontecem, às vezes a gente pode mandar um link direto do Pagar.me quando há negociação. Tá? Mas daí você vai perceber que, ah, negociou em cinco vezes, não sei o que, etc. Daí a gente sempre manda um link de checkout, tá? Mas aí é diferente. Beleza? Maravilha, galera! Pessoal, foi um prazer enorme, tá? Estar com vocês aqui nesses três dias. Eu acredito que foi cansativo para vocês, cansativo para mim, mas é aquela canseira que você sai com sensação de dever cumprido, tá? Então, eu estou mega feliz. Perguntaram, tem desconto para empresas parceiras como o Mercado Livre? Sim, cara. Se você trabalha em algumas empresas, em empresas empresas, em empresas grandes, a gente tem a... a gente dá desconto pra funcionários, tá? Então, a gente tem um link específico do Mercado Livre, pede pro nosso atendimento e etc. Não sei se o Leonan tem fácil aí a página do Melly, mas tem uma página específica do Melly. A única coisa que você tem que fazer na hora de contratar, você tem que contratar com o e-mail do MELI pra gente conseguir validar que você trabalha lá. Tá bom? Beleza? E se a sua empresa não tem nenhuma parceria com a gente, você pode entrar em contato com a gente, porque não necessariamente a gente precisa falar com o RH da sua empresa, tá? Imagina que você tá na empresa X e você tem um monte de dev que gostaria de fazer. Então, o que a gente faz? A gente gera uma página específica com desconto para colaboradores daquela empresa. Tá? E daí você já vai ter esse desconto para colaborador de determinada empresa, tá? Então, normalmente a gente faz isso, obviamente, para empresas que são maiores e que a gente tem essas parcerias. Se você tiver numa empresa média, grande aí, tá? Entre em contato e se você se você tiver entre em contato com a gente pra ver se a gente tem desconto. A gente tem com a Estônia, eu acho que a gente tem com a CIT, a gente tem com bastante empresas aí, tá? Então, dê uma olhada. Eu acho que a Stefanini a gente tem, inclusive. A gente tem bastante empresa com essas coisas, tá? Então, esse é o grande ponto, tá? Maravilha. Itaú, eu acredito que a gente tem também, para colaboradores do Itaú, tá? Eu vou dar uma olhada, mas eu acredito que a gente tem sim, para quem é colaborador do Itaú. Itaú, essas empresas grandes, na maioria das vezes a gente tem. Se não tiver, fala com a gente, mostra o número de pessoas interessadas no programa, e aí a gente pode gerar esse tipo de desconto. Tá bom? Maravilha, galera. Então, galera, muito obrigado. pra mim foi mega prazer eu tô bem empolgado nesse mundo de ar eu tenho estudado muito, cada dia tá sendo um dia de aprendizado e saiba que tudo que eu tô estudando tudo que eu tô treinando e etc tá me ajudando a criar uma base forte pra cada dia mais eu ter mais segurança de conseguir entregar conteúdo pra vocês sem entregar groselha com coisas que não tem nada a ver, tá? Então saiba que tudo que eu tô entregando, eu tenho estudado muito, tenho feito bastante a minha lição de casa é bastante coisa, cada dia muda uma coisa diferente mas saiba que a gente está firme aqui na causa maravilha? então galera pessoal, muito obrigado boa noite pra vocês fiquem com Deus, que vocês tenham uma semana abençoada, que vocês consigam descansar essa noite e finalizar a semana com chave de ouro aproveitem pra estudar um pouco mais Sobre IA, treinem bastante Aí as suas habilidades Com que vocês aprenderam nesses dias Façam suas provas de conceito E espero que esse evento Independente se você vai estudar com a gente ou não É... Ele tenha somado e que vai te ajudar aí na sua carreira De alguma forma, fechou? Galera, então, muito boa noite e até a próxima, galera. Eu acho que a gente vai fazer um evento desse parecido no próximo mês, etc. Vai ser um evento praticamente igual, só pra vocês saberem, mas caso você tenha perdido algum dia e etc., acho que a gente vai repetir e agregar algumas novidades e tudo mais mas espero que vocês tenham curtido saiba que eu dei o meu melhor desculpe alguma coisa, desculpe para as sessões muito longas mas eu ia ficar com a sensação que eu não entreguei tudo o que eu podia tá, então tô até meio rouco, mas eu termino pelo menos falando, eu dei o meu melhor então se eu dei o meu melhor, eu consigo dormir tranquilamente, mesmo que alguém ache que eu não mandei bem, mas se eu tô me sentindo bem comigo mesmo tá de boas, fechou? então galera, muito boa noite, saiba que a gravação dessas aulas vão ficar pra quem são os nossos alunos pra quem não é aluno, vire aluno se você tem acesso às gravações, né, e espero que vocês tenham curtido. Boa noite aí pra todo mundo. Abraço!