Chegamos no último dia da nossa imersão de IA da Alura com o Google. Eu sou Fabrício Carraro, estou aqui como sempre com o querido Luciano Martins, com a querida Valkyria Alencar para a nossa quinta e mais importante, mais relevante, mais popular, está na mídia aí. Tá nas tendências. É um hype aí. Um hype de nome de agentes de IA. Mais divertida. Provavelmente é mais divertida! Para quem é dev, com certeza é mais divertida. E para quem não é dev, eu acho que também, Porque vamos mostrar todo o poder dos agentes de inteligência artificial. O que
você que trabalha com marketing, que trabalha com finanças, que trabalha com advocacia vai poder fazer com o poder dos agentes. Você usando aí um pouco de código com o que você aprendeu na live intermediária, com o que você aprendeu ontem, na quarta aula que a gente começou, a mexer com chatbots e com o que você vai aprender hoje aqui na quinta aula de agentes. ♪ Mas antes de começarmos essa aula, eu quero dar alguns recadinhos. O primeiro é, lembra que ontem eu falei que já estava aberto o enunciado para você começar a criar o seu
projeto. Continua aberto, na verdade. Então, só relembrando rapidinho, você tem até sábado às 23h59 para entregar o projeto. Vai ter um formulário aqui embaixo ou também lá no Guia de Mergulho, também no seu e-mail. E você vai poder enviar, preencher esse formulário entre esse sábado à meia-noite até às 23h59 do próprio sábado. Você vai entrar lá no formulário, pôr o seu nome, e-mail e o link do GitHub com o seu projeto completo. E aí no domingo, entre a meia-noite e às 23h59, vocês vão poder votar nos melhores projetos lá no Discord. E os 30 melhores
vão vir pra gente, Para banca aqui da nossa imersão, para serem avaliados. E vamos dar o resultado dos vencedores do projeto na segunda-feira, na live de encerramento, às 18h30 da tarde, onde também vamos falar de outras coisas, falar do mundo da IA. Mas na segunda-feira, além dessa live, vocês também vão ter acesso ali a uma condição especial para assinar a Alura. Então, como a gente sempre fala, não assine a Alura hoje. Não pense nisso por enquanto. Faça aula conosco, vai dormir, vai fazer o seu projetinho até o sábado às 23h59. E espera que na segunda-feira
você vai receber no e-mail, vai receber no grupo de WhatsApp, Vai receber no Discord da imersão essa condição especial para finalmente assinar a Alura e poder fazer aqui os cursos, as formações da Escola de Inteligência Artificial, da Escola de Ciência de Dados, da Escola de Front-end, Back-end, de Gestão e Inovação, enfim, qualquer coisa, você assina e você tem acesso a 100% da plataforma. Sem mais delongas, vamos começar aqui só dando uma micro-revisão. Que estamos no Google AI Studio, como sempre. Para essa aula, você também vai precisar da API Key. A chave da API que a
gente explicou no final da aula 3, a gente explicou no começo da aula 4. Revisando, você vai aqui em Get API Key, ou no Dashboard, Você vai entrar aqui nesse botão de Criar Chave de API. E aí você, se não tiver nenhum projeto, ele já vai criar sozinho. Se você já tiver projeto, você vai selecionar algum e ele vai criar uma chave de API para você, que vai ficar disponível aqui embaixo. E como sempre, a API Key vai fazer a conexão lá diretamente com o colab. Mas hoje será um pouco diferente. Não vamos abrir um
colab do zero, como fizemos na última aula. Vamos passar para vocês um colab já meio que pré-pronto. Por quê? Ele é um colab que tem muita parte de código e queremos que ele seja mais acessível, tanto para você que já é dev, que já sabe programar, Para entender o framework de agentes do Google, que eu imagino que você talvez não tenha usado ainda, e até para você que não é programador, ou não é programadora, que vai, talvez, se perderia muito em tanto código que tem lá. Já vai ficar uma parte já pré-pronta para você usar.
É só fazer aqui, junto conosco, o que importa de verdade para você ter um sistema multi-agentes prontos que você vai poder tanto usar o que fizemos junto, quanto alterar ele para o seu caso de uso específico do seu trabalho, da sua vida. Não importa. Você vai usar o método Ana Maria Braga. Você vai ensinar como faz a lasanha, mas já tem uma pronta. Então, galera, pra gente começar, como eu mencionei, nesse framework. Para quem não sabe o que é essa palavra, o que é o framework, galera? O que é um framework? São as ferramentas, que
vamos utilizar ali para fazer algo. É, meio que uma biblioteca que o Google preparou pra gente, já meio que pré-pronta. A gente só usa as coisas que estão lá preparadas, igual a lasanha da Ana Maria Braga, em vez de ter que fazer tudo do zero em Python aqui. E esse framework se chama ADK. Ele foi lançado muito recentemente pelo pessoal do Google. ADK significa "Agent Development Kit", Que é o kit de desenvolvimento de agentes, como está escrito aqui nesse blog do Google for Developers, onde você vai ter uma introdução bem grande, foi apresentado no Cloud
Next e tudo mais. O kit são multi-agentes por design, ecossistemas de agentes, orquestração, uma palavra que aparece muito. quando a gente fala sobre agentes orquestradores. Exatamente, que eles meio que controlam os outros agentes. Ele tem aqui, começando com o seu primeiro agente, ele dá alguns exemplos. Não vamos perder tanto tempo nisso aqui, mas só para vocês saberem que existe essa página. E existe também a página da documentação do ADK. Se você é uma pessoa dev, já está acostumada com documentações, Você pode ir lá. Se você é uma pessoa não dev, você pega essa URL, joga
no Gemini e pede para ele se basear aqui, para explicar coisas, para buscar coisas nesse site do ADK, talvez para você ter uma facilidade maior com algum ponto que não entenda tanto. Mas o link do collab que vamos mandar para vocês, vai estar aqui embaixo desse vídeo, é só clicar aqui na página dessa aula. Ele tem essa carinha aqui. E como vocês estão vendo, eu vou compartilhar aqui para vocês. Já está compartilhado, na verdade. Ó, qualquer pessoa com o link, por enquanto, é um leitor. Você não vai conseguir alterar o meu código. O que eu
quero que você faça é, ao clicar lá embaixo, na página que ele vai abrir, exatamente esse mesmo collab, você vai clicar aqui em cima, no canto superior esquerdo, em arquivo e depois em "salvar uma cópia no drive". Aí ele vai fazer uma cópia para o seu Google Drive particular e você vai poder alterar sem nenhum problema. Não vai alterar o meu código, que você não conseguiria alterar de qualquer forma, e também não vai ter problema de perder o código, porque vai ter criado um para você. Então, esse é o primeiro passo. Aqui, eu vou até
criar um para vocês. Criando uma cópia. Ele vai abrir um novo, que é exatamente o mesmo código, mas vai ter aqui "cópia de imersão IA", Alura, blá, blá, blá, blá, blá. É, e você pode alterar, deixar o nome que você quiser. Mas, pra gente começar aqui, o que vamos fazer? Primeiro, vamos conectar ou reconectar aqui no canto superior direito igual fizemos no começo da aula 4, para você se conectar com o servidor do Google. Lembrando, no Colab não estamos rodando na nossa máquina local. Estamos rodando lá com o Google, com o pessoal lá de Mountain
View. Tá na nuvem. Ele vai demorar aqui alguns segundinhos para conectar e quando você vê esse "RAM" e "disco" já está conectado. Aqui a marca de check também. E como vamos fazer para começar? Eu acho que podemos recapitular o que fizemos na aula passada. A gente pega a chave lá. Coloca nos segredos aqui dentro. Então, me digam aí o que eu tenho que fazer, pessoal. Lembra que temos que ir ali no nosso menu da lateral esquerda, nesse ícone de chave ali. Eu já tenho um monte de chaves aqui. A sua talvez esteja desativada, talvez esteja
ativada. Se tiver desativada, que você instalou ontem, se você fez o processo junto conosco de trazer para cá, adicionar o novo secret, chaves da API Gemini e importar, você já está com esse Google API Key aqui e será só a questão de ativá-lo. Se não, você vai fazer aqui, criar a API Key como a gente mostrou, importar chave como fizemos ontem e ele vai aparecer para ativar. Maravilha. Vamos fazer a instalação daquele módulo ali do google-genai. Igual fizemos ontem. Igualzinho. E depois vamos criar a variável da chave aqui dentro. Lembrando, uma variável de ambiente, por
issotem esse os.environ. Exato. Estamos pegando isso aqui do cofre e falando "meu ambiente lá do computador do Google u quero criar uma variável chamada Google API Key que vai receber o valor que está aqui dentro, que é esse valor secreto aqui". Lembrando que é o nome que a gente deu ali nos segredos. Perfeito. E aqui também, igual fizemos lá na última aula. A gente importou esse genai do Google. Criamos o cliente. E aqui lembra que a gente colocou modelo = gemini-2.0-flash? Aqui a gente só mudou o nome, MODEL_ID, mas poderia ser modelo. Poderia ser Fabrício
o nome dessa variável, meio que não importa. Mas a gente opta por colocar um nome mais claro. E isso daqui, o que é? Bom., aí o que vamos fazer é... Sem dar muito spoiler do nosso agente, uma das coisas que vamos precisar fazer, que a gente exercitou bastante no Gemini, no AI Studio e ontem no Collab, É utilizar o Gemini junto com a busca do Google. Sim. Eu acho que ontem a gente nem chegou a fazer isso em código no Colab. Não, fizemos no exemplo da Argentina, mas no AI Studio. Isso, isso. A primeira coisa
que vamos entender, de uma forma mais simples, sem ainda envolver o agente, é como é que a gente faz essa conexão com a busca do Google usando o Gemini. O que podemos usar como exemplo? Como estamos numa imersão da Alura, podemos perguntar para o Gemini quando será a próxima imersão da Alura. Primeiro, sem usar o grounding da busca do Google. Aquela ferramenta lá. Isso, sem usar a conexão com o Google Search. Só o conhecimento quando terminou o aprendimento do Gemini. Isso, e como terminou em janeiro, muito provavelmente ainda não tinham sido anunciadas as datas da
imersão. Provavelmente, vamos validar isso agora, o modelo não vai saber. Tá. O que que eu digito aqui? Você vai seguir com uma ideia semelhante ao que o Colab já respondeu. Você vai ter uma variável de resposta. Resposta. Vamos de resposta. É igual ao Client. Igual fizemos ontem. Cliente, Models. Generate Content. Gerar o conteúdo. Beleza. Aí, você abre e fecha parênteses. Aí, se quiser quebrar a linha na estrutura que você gosta de usar. Aí, Model é igual. Eu posso autocompletar. Model ID agora. Agente poderia simplesmente ter copiado e colado isso daqui. Exatamente. Tanto faz. E o
Contents é a pergunta que vamos fazer. Igual a gente faz hoje, é o promptzinho lá. E se você está assustado com esse HTML, Markdown, isso aqui a gente não precisava usar. É só para você visualizar um pouco melhor. Mas, qualquer coisa, qualquer dúvida, pergunta para o Gemini. Vamos ver. Ele vai pegar a resposta. E aqui, ele estava pegando a response.txt, porque a gente estava usando a response antes. Eu vou trocar para a resposta.txt. Perfeito. Então, clicando aqui, vamos rodar esse código, essa parte do código. Ele buscou lá. "Response: A Alura não tem uma data fixa
para imersão IA com o Google Gemini." A pegunta é "quando é a próxima Imersão IA com o Google Gemini da Alura?" "Para saber quando é a próxima edição o ideal é acompanhar as redes sociais." Enfim, ele não sabe. Isso. Basicamente, ele não sabe. É isso. E se a gente for aqui, no próximo bloco, que a gente já deixou meio que preparado para vocês, a resposta aqui, ou response, tanto faz, ele está fazendo o mesmo. cclient.models.generate_content. Passando o modelo e a mesma pergunta. Mas agora, vamos chamar a ferramenta de busca do Google aqui dentro. Isso aí.
Eu posso simplesmente apagar. Lembra que tem uma vírgula aqui para falar que é a próxima coisa, o próximo parâmetro. E o que eu coloco aqui, Luciano? Agora, você precisa chamar um parâmetro chamado config que é onde vamos declarar quais ferramentas que vamos usar nessa chamada. Aí, para o config, você vai abrir e fechar chaves. Chaves, que é o curvadinho. Curvadinho, isso. Eentro dessa estrutura, você vai colocar "tools". Entre aspas duplas. Aí, depois da segunda aspa dupla, dois pontos. Você abre e fecha colchetes. Abri e fechei. Dentro do colchete, você vai abrir e fechar chaves. Aí,
de novo, assim, isso não é algo aleatório, É a estrutura que temos que seguir., isso está na documentação da SDK e tudo mais. E dentro dessas chaves que você abriu agora, você vai escrever entre aspas duplas "google_search". Depois de fechar as aspas do Google Underline Search, você coloca dois pontos. Espaço. E abre e fecha chaves. Aí, agora está redondo. Eu acho que ele fechou algo. Não, agora está certinho, exatamente. Então, literalmente, comparando com essa resposta aqui, a gente só adicionou uma linha a mais, Que é essa tools, que é a ferramenta da busca do Google.
Basicamente, o que vai acontecer agora é, ao invés do modelo responder com o conhecimento que ele tem, que seria a resposta de cima, um "eu não sei" mais longo, ele vai primeiro buscar na busca do Google, vai analisar as respostas, vai usar as respostas como contexto, e vai gerar a resposta para você. Tudo isso vai acontecer nos bastidores, você não tem que interagir, e responde algo em menos de um segundo aí para você. E isso daqui, tudo que estamos para baixo, a gente meio que não precisaria deles. É, só estamos deixando o resultado mais bonito.
Você podia ter só um response.txt no final, não teria problema. E eu posso só apagar, mesmo para mostrar onde que ele buscou, eu poderia só mudar esse display ou um print, um response.txt. Então, se você der só um response.txt, você vai ter só a resposta. Isso. Aquele conteúdo adicional... Vamos rodar assim para ver. Olha! "A próxima imersão IA com o Google Gemini da Alura acontecerá de 12 a 16 de maio de 2025. As inscrições estão abertas até o dia 11 de maio." Ele pegou até isso. Mas por curiosidade, se você poder voltar o código que
a gente tinha antes lá... Vou abrir um bloquinho a mais aqui até. Será que ele vai conseguir? Ele consegue pegar o mesmo response, a mesma variável e usar ela? Isso aí é só uma visualização da resposta, que o que estamos fazendo é basicamente renderizando ou mostrando qual foi a busca que o Gemini fez e está montando na tela um botãozinho da busca do Google ali que se você clicar, basicamente você vai fazer na busca do Google a mesma busca que o Gemini fez. Meio como uma ferramenta para você validar a resposta que o Gemini deu.
E é basicamente o mesmo que fizemos lá no Google AI Studio. A diferença é que a gente usou o código agora. Isso. Bem legal, bem interessante. E bom, continuando, agora vamos entrar nos agentes. Inclusive, a gente começou a falar de ferramenta aqui, já vou até perguntar aqui para o Luciano. Quando a gente fala de agente, é algo então que usa alguma ferramenta para resolver ali um problema? O que é um agente, de fato? Boa pergunta. Essa é uma pergunta bem interessante, Val, porque isso é uma discussão que a gente vê acontecer agora. Tem muitas opiniões
divergentes, ou cada pessoa tem a sua opinião, Cada empresa tem a sua opinião sobre o que é um agente. De uma forma mais abstrata, a ideia de agentes é, tudo que fizemos até agora, a gente está fazendo manualmente interações únicas com as LLMs. Ou estamos fazendo uma pergunta, ou estamos pedindo para montar algo, ou a gente está pedindo para gerar um código. Então, se eu tenho 10 tarefas para fazer, eu vou ter que anotar num papel aqui do lado e fazer uma pergunta de cada vez. A ideia da gente criar agentes seria como criar uma
esteira de ações, onde eu vou ter um esforço, Uma vez, de escrever o código, que é o que vamos fazer agora, e podemos usar diferentes modelos, por exemplo, Gemini 2.5 PRO, para coisas mais complexas, Gemini 2.0 Flash para coisas que tem que ser mais rápidas. Eu defino as ações que eu preciso. Um exemplo prático do que fizemos na mão. Vocês lembram no Gemini App, quando a gente estava experimentando com a integração com o Workspace, que fizemos algumas ações? "Faça um roteiro na Turquia, começando e terminando no Istambul". "Agora busque os hotéis." "Depois, busque os restaurantes,
os hotéis." Cada ação dessa, podemos pensar como uma etapa de um sistema de agentes. Então, ao invés de a gente ter feito tudo aquilo manualmente, que também funciona, não está errado, mas se a gente quiser automatizar pra gente compartilhar com outras pessoas, pra gente compartilhar com usuários ou com clientes que a gente tenha, podemos automatizar essas etapas e organizar de uma forma sequencial para que o nosso programa sempre rode na sequência certa. Por exemplo, se ele tentar buscar hotel antes de ter um roteiro, não faz sentido. Então, vai falhar a aplicação. Você tem que garantir,
de alguma forma, ou uma sequência de ações ou uma ligação entre ações, como se fossem os pré-requisitos. Beleza, chamou o agente de hotéis, mas o agente de hotéis só funciona se o agente de rotas já estiver terminado. Então, a criação de um agente é como a gente estrutura as etapas do desafio que queremos resolver, usando alguma ferramenta que simplifique mais do que escrever tudo na mão. E aí que entra, por exemplo, o Google ADK. E ele vai conseguir fazer meio que de forma nativa, sem a gente instalar nada mais, essa busca no Google. Sem a
gente fazer esse código que fizemos aqui, do tools, colchete, chave, não sei o que, ele já faz direto. Isso, exatamente. E assim, se você está começando com código, não se assuste, parece uma coisa complexa, tem os seus requisitos, mas entendendo o funcionamento, não é tão complexo quanto parece. A grande vantagem de você usar um framework, usando a expressão que você usou, é que para fazer isso acontecer, vamos imaginar que o meu trabalho como agente, nós três moramos na mesma rua e eu vendo marmita para fora. O Fabrício vende as marmitas e a Val faz a
comida. Ou vice-versa, a Val vende as marmitas e o Fabrício faz a comida. Eu sou o agente que vai juntar tudo e vender para as pessoas. Para eu conseguir fazer uma marmita completa, A comida e a marmita fechada, eu tenho que primeiro passar com a Val, pegar uma marmita nova, depois eu vou com o Fabrício, preencho a marmita com comida, tampo e vou vender para uma pessoa. Ou seja, eu tenho que tomar uma ação, eu tenho que pedir algo, eu tenho que receber uma resposta, eu tenho que trabalhar essa resposta de alguma forma, essa resposta
que eu recebi será o meu pedido para o próximo agente, que eu tenho que tratar a resposta para ter o resultado final. O framework vai ajudar a gente a fazer esse sincronismo entre as coisas. De novo, a gente podia escrever na mão? Podia. Mas a complexidade de escrever na mão será maior, porque temos que entender com detalhes cada passo e cada etapa dos sub-agentes ou de cada etapa do processo como um todo. E o framework vai simplificar isso para a gente. Maravilhosa sua explicação, Luciano. Eu vou só adicionar um microponto a mais, que é inclusive
a discussão que as empresas estão tendo hoje, enquanto estamos gravando, nos próximos meses, que é até no quesito de quando usar um agentão, que vai ter acesso a muitas tools, muitas ferramentas. Vimos aqui a nossa primeira tool, que é a tool do Google Search, nossa primeira ferramenta de busca, Mas poderia ter uma outra ferramenta que é a do Google Flights, que é do Google Voos, outra ferramenta é do Google Maps. E um agente poderia ter acesso a todas ao mesmo tempo e a gente fazer uma grande engenharia de prompt, passar um prompt bem trabalhado para
um agente fazer tudo isso. E tem também a outra abordagem que o Luciano mencionou, que é a de sistemas multiagentes. Que são vários agentes, cada um especializado em uma coisa, com um prompt cada um desses agentes, e aí ele retorna uma resposta para o cara que vai estar meio que orquestrando tudo isso. Então o Luciano seria o nosso orquestrador, meu e da Val, na questão das marmitas. Vamos começar a utilizar o ADK aqui dentro? Como eu instalo o ADK primeiramente? Podemos dar um pip install aqui. Lembrando que pode ser tanto com porcentagem quanto com exclamação.
Eu prefiro exclamação. Pip install. Aí você pode colocar um -q para não aparecer os detalhes da instalação toda. E você vai digitar google-adk Super simples. E a gente roda. Esse -q, como você falou, não é necessário, mas ele só remove aquele monte de texto que fica aparecendo ali. Beleza, está instalado. Esse próximo bloco aqui, só vamos dar um rodar nele, porque o que ele está fazendo? Lá do Google.ADK, que foi esse framework, essa biblioteca que a gente acabou de instalar, vamos importar algumas coisas que a gente precisa para rodar todos esses agentes e essas orquestrações.
Primeiramente, o que é um agente? Isso aqui é uma abstração de um objeto de agente. Um runner que vai rodar, será o orquestrador que vai rodar tudo, basicamente. Isso aqui é a memória interna desse orquestrador. Aqui é a tool, a ferramenta do Google Search que estamos importando. Isso aqui são os tipos, que até mencionamos na aula passada, quando a gente fez as configurações. Aqui é a data que vamos usar mais para frente. Isso aqui são coisas para visualização ficar mais fácil, para formatar a saída e tudo mais. Aqui também é um bloco de código que
só vamos rodar, porque esse é o cara que será o... Essa função meio que vai controlar os agentes. Lembrando que vimos lá na live intermediária que o def é como você cria uma função em Python. Vamos estar recebendo um agente, como vamos ver aqui é um sistema de multiagentes, vamos ter quatro agentes. Então em vez de ter, putz, passando um, aí ele faz as coisas... A gente faz uma função que só manda o agente dar vez para ele e ele roda o que tem que rodar para esse agente. E aqui dentro tem um monte de
configurações que não vale a pena a gente entrar muito a fundo nelas, mas ó, estamos instanciando aqui, iniciando essa sessão, o serviço da sessão, criando ela com um nome totalmente aleatório, pode ser qualquer um. Criando esse runner, que é o orquestrador dos agentes aqui. O conteúdo do tipo da mensagem... Seria o tipo, o role, o papel do usuário e as partes. Qual será a parte da mensagem que vamos ser? Vai ser esse message text, que é meio que o conteúdo que vamos estar mandando junto com o agente para ser trabalhado aqui pelo modelo, pelo agente
em si. Esse message_text é uma das entradas aqui da nossa função. A mensagem ali que você vai escrever. Então, por exemplo, no agente primeiro, vamos ver daqui a pouquinho. Mas no agente primeiro, ele é um buscador, ele vai receber um parâmetro, é o agente buscador e o message_text que será tipo, "você é um agente buscador Que vai buscar no Google, fazer coisas e tudo mais", vamos ver já já. E aqui no final é um for que vai rodar esse cara. que a gente acabou de criar, o runner, ele vai retornar vários eventos e para cada
evento que tiver ali que for uma resposta final, porque tem outros que podem não ser respostas finais, ele vai lá fazer outro for dentro deles para falar, "isso aqui é texto que eu posso mostrar para o Fabrício, que eu posso mostrar para o próximo agente, o agente número um, o agente número dois" e no final ele vai retornar a resposta final daquele agente. Pode ser um texto gerado, pode ser uma pesquisa, seja lá o que for. Estamos dando uma explicação mais de alto nível aqui, para não entrar tanto no detalhe, mas se você quiser entrar
no detalhe, copia esse código aqui, joga no Gemini, pede para ele te explicar, ele vai dar uma explicação como se você tivesse cinco anos de idade, será mais fácil assim para passar, porque isso aqui não vale muito a pena a gente perder tempo agora. A gente também preparou essa função to_markdown, que é só para a exibição também, não importa, é só para ficar mais fácil. Basicamente o que fizemos aqui, esse display html, display markdown, é só para isso, Mas não é tão útil assim, não tem nenhuma lógica por trás dela. Mas essa é a parte
que eu queria chegar pessoal. O agente um, que é o nosso buscador de notícias. Mas para isso eu quero explicar para vocês o que é o projeto que vamos fazer. A gente só falou de agente, mas qual que é o projeto? Para isso eu vou abrir aqui o meu Paint, que eu quero desenhar um pouco para vocês. Vamos ter primeiramente o nosso primeiro agente, depois vamos ter mais outro, segundo, um terceiro e um quarto. Como eu falei, será um sistema de quatro agentes. E eles vão se comunicar um com o outro. Vou colocar umas setinhas
aqui, e a última seta vai apontar para baixo, que será onde eu vou estar. E para escrever. Vamos ter esse sistema de quatro agentes. O primeiro agente será, como vocês já viram aqui o spoiler, o buscador. Vamos fazer uma busca no Google sobre alguma informação, sobre algum tópico. Eu já até sei que ferramenta será usada por ele. Google Search, a gente já viu, exatamente. E esse sistema multi-agentes que vamos fazer, é um sistema que você pode usar, por exemplo, para criar posts para as redes sociais. Então é um sistema que vai criar posts especificamente para
o Instagram, no nosso caso, mas você pode adaptar para qualquer coisa que você quiser. LinkedIn, X, tudo mais. A primeira coisa que esse nosso sistema vai fazer é buscar informações do Google. E vamos usar a busca, que a gente acabou de ver, para pegar informações mais atuais. E eu vou querer limitar para buscas de um mês. Coisas que aconteceram no último mês. Essa será a minha limitação aqui. Acho que dá para entender mais ou menos. E ele vai lá buscar no Google, por exemplo, eu vou falar de IA, que é um tema que sempre tem
muitas notícias novas. Nesse primeiro buscador, Eu vou escrever o tópico que eu quero buscar. "Busca aí para mim notícias que aconteceram no último mês sobre IA." E ele vai buscar lá no Google, vai usar essa tool que vimos, trazer algo de volta. A resposta será algo entre três a cinco notícias recentes. Isso a gente define no prompt, eu vou mostrar para vocês daqui a pouco. E ele vai passar essas informações para o nosso segundo agente, que eu chamei de agente planejador. Vamos supor que esse primeiro buscador tenha retornado três notícias. O planejador vai voltar a
buscar no Google mais informações sobre todas essas três notícias, mais detalhes, pontos positivos, pontos negativos, quando foi lançado, se é relevante ou não. E ele será o cara que vai planejar, Ok, dessas três, qual é a mais relevante e quais são os pontos que eu tenho que usar para criar um post relevante sobre ela. Vou colocar aqui para cima para não perder. Sobre as três notícias, busque os pontos mais relevantes e decida qual é a mais engajadora, qual tem mais potencial de engajamento. Algo nesse sentido. Vou até diminuir um pouco para não ficar em cima
da outra, mas essa é a ideia aqui do nosso agente planejador. Aí ele vai retornar para a gente, ok, Eu selecionei uma notícia com maior potencial, os pontos positivos e negativos dela. O terceiro será o agente redator, que ele é basicamente o escritor. O que ele vai fazer? Pega o planejamento do agente anterior e escreva um post para Instagram, usando ali os padrões de Instagram e tudo mais. E passado isso, vamos pegar aqui o último agente, ele vai passar esse post pronto para o agente revisor, que ele pode ser, por exemplo, receba o post gerado
e revise para erros de ortografia, factuais e também podemos fazer, Veja se está no tom de escrita da empresa, coisas nesse sentido, temos liberdade total de brincar com tudo isso. Vou colocar mais para cima aqui para a gente. E aqui esse agente revisor vai passar para mim, que eu estou aqui embaixo. Então essa é a estrutura mais ou menos geral do sistema de multiagentes que a gente vai desenvolver aqui. O buscador, o planejador, o redator e o revisor. Perfeito. Vamos voltar lá agora para a gente criar o nosso primeiro agente. Preparem aí as mãozinhas para
vocês começarem a codar. Ele será uma função também. Então funções são def. E eu vou pedir para vocês ditarem para mim quem é esse agente que eu vou criar aqui junto com vocês. Pode ter o nome de agente buscador? Boa. Vamos. Um nome bem claro. Para todo mundo. Ele vai receber aqui, já está até dando um spoiler, mas eu quero escrever do zero. Ele recebe um tópico, que vamos passar para ele buscar as notícias no Google sobre esse tópico. Aí fecha o parênteses, dois pontos. Esse aqui é meio que o cabeçalho da nossa função. A
outra coisa que ele pode receber também é a data de hoje. É verdade, ele vai buscar no último mês, ele pode receber a data de hoje. Boa. O que mais que eu posso fazer dentro dele? Agora precisamos criar de fato o agente. Isso aí. Podemos criar uma variável para armazenar ali a classe que faz essa criação mesmo. Vamos chamar de buscador. Tá. Buscador. Aí você pode dar um igual e colocar Agent, com A maiúsculo, aí você pode abrir ali os parênteses. Ese Agent é esse cara que a gente importou aqui. Isso, a primeira importação do
ADK. Então estamos aqui com o buscador, nosso agente aberto. Eu sempre gosto de dar um "Enter" para ficar mais claro. O que eu preciso ter dentro do meu agente? Quais são as informações, os parâmetros que ele precisa? Os parâmetros principais que você precisa para criar um agente são o nome do agente e o modelo que ele vai usar. Então você tem um parâmetro name e você tem um parâmetro model. Que nome que você recomenda que eu coloque aqui? Podemos seguir o padrão do nome da função e chamar também de agente buscador. agente_buscador. Assim mesmo? Está
tranquilo. O outro que você tinha falado. Aí você põe uma vírgula para seguir a sequência dos parâmetros, o próximo é o modelo, que é o model. Podemos usar o Gemini 2.0 Flash? Perfeito, vamos nessa. Ops, ele até fechou aqui, mas posso escrever só o Gemini 2.0 Flash. Mais uma vírgula. Tem mais parâmetros que eu preciso? Opcionalmente, aí entra uma questão até de como você documenta o seu código, você tem a opção de usar um parâmetro chamado description, ou descrição, para que quando outra pessoa for ver o seu código, for reusar o seu código, consiga entender
melhor qual é a função desse agente, qual é a função dessa função. Então você pode escrever na descrição que ele é um agente de buscar informações no Google, ou buscar notícias no Google, ou algo assim. Boa. Como vamos fazer busca no Google, Temos que fazer o mesmo exercício que fizemos antes de começar os agentes, que é de alguma forma chamar a ferramenta de busca no Google. No caso do ADK, usaremos um parâmetro chamado tools e dentro desse tools ela recebe uma lista, que em Python é representada pelo abre e fecha colchetes. Lá na lista de
módulos que você importou, uma das linhas é o adk.tools, que importa o Google Search. Foi a única tool que a gente importou aqui. Vamos pegar esse nome, google_search, e colocar dentro daqueles colchetes. Daí está faltando só uma coisa que fizemos durante todo esse processo aqui na imersão, Que é como que a gente calibra a forma que o Gemini vai responder. Como queremos que ele responda, Val? Queremos, inclusive, até definir a quantidade de coisas que ele vai buscar. Exatamente. Do contrário ele vai literalmente trazer qualquer coisa. Ele pode trazer uma página de resultados, algo assim. Acho
que podemos definir também o papel dele, que no caso ele é um assistente de pesquisa. E aí detalhando como que ele vai agir pra gente. Para isso precisamos criar um parâmetro de instrução. Boa. Eu posso colocar isso abaixo das tools, acima, tem diferença? Você pode colocar em qualquer sequência. A única diferença que você vai ver aqui, é que quando a gente estava trabalhando com a API diretamente, a gente chamava de System Instructions e aqui vamos chamar só de Instruction. Instruction no plural ou no singular? No singular. Isso. Aqui, ele até completou para mim. E dentro
vai um texto. E como é um texto que pode ser mais longo, em Python a gente geralmente faz isso com três aspas ao invés de uma só. Abre três e fecha três. Tdo que você pôr de texto aqui, ele vai considerar como se fosse uma coisa só. Beleza. A gente já tem até um esqueminha aqui preparado do que você pode escrever. Que no caso seria... "Você é um assistente de pesquisa..." E aí vamos delimitar para ele que "a sua tarefa é usar a ferramenta de busca do Google." A gente ainda pode especificar entre parênteses qual
é o nome da ferramenta, que no caso é o Google Search. Que é esse aqui que a gente passou para ele. Podemos colocar "para recuperar as últimas notícias". Isso está ainda na mesma linha? Isso. Na mesma frase. Exato. Para recuperar... "As últimas notícias de lançamentos muito relevantes sobre o tópico abaixo". E aí ponto. Podemos seguir o seguinte. Agora para ele focar num número limitado de pesquisa, podemos colocar "foque em no máximo 5 lançamentos relevantes". Porque se fosse no mundo da IA seria 15 mil por semana. Exatamente. Como a gente vê toda semana lá no podcast
IA Sobre Controle. Aí você pode dar uma vírgula e colocar "Com base na quantidade e entusiasmo das notícias sobre eles." Importante. Senão ele poderia pegar uma notícia qualquer. Exato. Mas... Beleza. Aí você pode dar um ponto e seguir também para linha seguinte. Aí podemos até colocar assim para ele "se um tema tiver poucas notícias ou reações entusiasmadas, é possível que ele não seja tão relevante assim." Já estamos especificando isso para ele também. E aí a gente coloca "e pode ser substituído por outro que tenha mais." Meio que forçando ele ali a não pegar coisa que
está sem relevância. Beleza. E aí para finalizar podemos colocar "esses lançamentos relevantes devem ser atuais de no máximo um mês antes da data de hoje." Que é aquilo que você já tinha comentado no início. Então pegar ali coisas do último mês. E acho que é isso. E aqui em cima a gente recebeu o tópico e a data de hoje. Não temos que passar ele para esse agente de alguma maneira também? Sim. O que você fez até agora foi definir o agente dentro da estrutura do ADK que vai realizar essa tarefa. A gente ainda não tratou
as entradas dessa função. Uma vez que você acabou de lidar com essa função, depois de fechar os parênteses que você tem na próxima linha, você pode passar para linha seguinte. E agora você vai tratar os argumentos de entrada da função. O próprio Collab já estava sugerindo aí para você criar uma variável como, por exemplo, a entrada do agente buscador. Vou dar um "Enter" aqui. E o que ele vai fazer? Como a system instruction deixa muito claro que o agente vai fazer uma busca do tópico e fala no final de, no máximo, um mês antes da
data de hoje., você não precisa criar um texto muito complexo com as entradas. Você simplesmente está criando uma estrutura que tem o tópico e a data de hoje. E pelo System Instruction ele entende o que é que é para fazer, entendeu? Isso aqui é literalmente o System Instruction que vimos na aula anterior e ele vai pegar aquilo como uma base e aqui o tópico e a data de hoje. Exato. Maravilha. Entendi. Isso aqui é outra linha. Na verdade não tem conexão necessária com... Esse agente está terminado aqui. Isso. Beleza. Tem mais coisa para fazer aqui
nesse tópico? Nós declaramos o agente, tratamos as variáveis que a função vai receber sempre que for executada, agora falta a gente rodar o agente de fato quando a gente chamar essa função. Como podemos fazer isso, Val? O que você acha? Podemos criar uma variável e usar ali uma função que tem para fazer a chamada. Boa, acho que o Fabrício criou uma função mais em cima. É, ele criou. call_agent. Aquela que a gente só rodou. Exatamente. Então podemos criar uma variável, vamos chamar de lancamentos, que são as últimas notícias. Lembrando de não usar cedilha, nem assentos,
nem nada em variáveis. E aí vamos dar um igual e vai usar a função de chamada ali do agente. call_agent. Aí vamos abrir os parênteses e podemos colocar aqui a primeira variável, que é o buscador. O nosso agente que acabamos de criar. Vamos dar uma vírgula e colocar também a entrada do agente buscador, que foi o que você acabou de criar ali em cima. Então se a gente voltar lá nessa função call_agent, que a gente tinha só meio que definido aqui, dando play, lembra que ela recebeu um agent, um agente, e um message_text, um texto
de mensagem, um prompt. Então aqui a gente passou o agent, que é o nosso agente buscador, já com a system instruction dele, E a gente passou aqui o prompt, que é o tópico que vamos colocar lá embaixo, lá no final dessa ideia toda, e a data de hoje que ele vai conseguir pegar lá no sistema. Agora só falta uma coisa para encerrar, que é retornar os lançamentos. A gente coloca um return ali no final e coloca os lancamentos. E agora eu posso rodar essa célula? Manda ver. Ela não vai retornar nada, porque você só está
declarando a função, mas se tivesse algum erro de sintaxe, algo assim, ela daria um erri para você. Deu o check lá em cima, está tranquilo. Perfeito. E vimos aqui, nosso agente buscador, primeiro agente está terminado. Ele buscou as notícias, como a gente falou, as mais relevantes, até cinco no máximo. E ele vai passar isso para outro cara, que é o agente aqui, o planejador de posts. E a gente já meio que deixou estruturado para vocês, que, lembra, aqui no buscador a gente recebia o tópico, que vamos passar lá, tipo, me fale sobre as novidades de
IA me fale sobre as eliminatórias da Copa do Mundo da Argentina, e a data de hoje. O planejador, lembrando o que ele faz, ele pega, as três, cinco notícias, busca os pontos mais relevantes de cada uma delas e aí vai decidir dessas cinco, a partir desses pontos também, Qual é a mais relevante, vai ter maior potencial. Então, ele recebe o tópico e recebe os lançamentos buscados, que é o que esse cara buscou aqui. Ó, o nome, estamos, o name. O nome aqui exatamente igual, agente buscador e agente planejador. O modelo é o 2.0 Flash, tanto
aqui quanto aqui. Podemos definir um para cada um, mas pode ser o mesmo também. A description, a gente tinha colocado lá embaixo. Eu posso mudar a ordem disso aqui? Pode, pode. Mas, vamos lá, ia apagar a vírgula, mas ó, fizemos tudo certinho, vamos rodar aqui de novo. Para ficar no mesmo padrão. A description aqui é planejador de posts, aqui era agente que busca informações no Google. Poderíamos até mudar. Agente que planeja posts, tanto faz. Lembrando que isso é só uma documentação, isso aí não vai afetar em nada a execução do agente. Podemos usar também a
Google Search para buscar os pontos positivos e negativos de cada um. Então, também vamos passar a tool do google_search, só o que falta é a instrução do nosso planejador de posts. O que podemos colocar aqui na instrução dele? Lembrando de tudo que aprendemos, principalmente na aula 2, sobre engenharia de prompt e tudo mais. Podemos agora falar que ele é um planejador de conteúdo e que ele é especialista em redes sociais. Acho que já dá esse tom para ele, essa persona. Acho que podemos especificar o seguinte, para ele saber que vai pegar o resultado anterior, podemos
colocar, "com base na lista de lançamentos mais recentes e relevantes buscados, você deve..." e a gente dá algumas instruções ali para ele. Acho que a primeira coisa que ele deve fazer É usar a ferramenta de busca do Google, que é o google_search, então podemos especificar isso novamente, para criar um plano. Isso. Para criar um plano? Isso. Sobre quais são os pontos mais relevantes que a gente poderia abordar em um post sobre cada um deles. Deles, dos lançamentos? Exato, dos lançamentos. Também podemos acrescentar que ele também pode usar o google_search para encontrar mais informações sobre os
temas e aprofundar ali. Beleza, a gente dá um ponto aí, podemos finalizar dizendo que, "ao final, você irá escolher o tema mais relevante dentre todos eles, com base nas suas pesquisas". A gente também pode colocar "e retornar esse tema, seus pontos mais relevantes, e o plano com os assuntos a serem abordados no post que será escrito ali posteriormente." A última parte, seus pontos mais relevantes e... Perdeu o pacote, Fabrício, perdeu o pacote. "Os pontos mais relevantes e o plano com os assuntos a serem abordados no post que será escrito posteriormente." Nossa, a Gigi está rápida,
hein, cara? Eu que tava lendo rápido aqui, desculpa, Fabrício. Imagina, mas então, está igual. Tá exatamente igual o buscador que a gente tinha feito aqui em cima, literalmente. A estrutura é igual. E aqui, em vez de dar o tópico e a data de hoje, como a gente deu para o buscador, aqui será o tópico e os lançamentos que o agente 1 encontrou. Então a gente define o nosso agente planejador, agora vamos definir a entrada dele, tópico e lançamentos buscados, e aí vamos fazer a chamada do call_agent, que é a mesma função lá em cima, para
ele rodar esse agente lá dentro. Passando tanto o agente planejador quanto o prompt. A entrada dele. E ele vai retornar um plano, que foi o que a gente falou. "Ao final você vai escolher o mais relevante e retornar esse tema, seus pontos mais relevantes e um plano com os assuntos." É isso que ele vai retornar. Esse será o resultado da função call_agent e retorna isso aqui, return plano_do_post. Perfeito. Terminado aqui o nosso segundo agente, o agente planejador, que buscou os pontos, decidiu qual é o mais potencial. O próximo já é o redator, é o cara
que vai escrever o post final. Aqui a gente já deixou pronto para não perder tempo escrevendo as instruções, mas como você pode ver, o name, agente_redador, modelo, usamos o 2.0 flash aqui também, mas como ele é o escritor, é um cara que tem que ser mais poderoso, Eu quero usar o 2.5 PRO, que é o modelo mais poderoso da Google atualmente da data dessa imersão. A instrução também mesma pegada, vamos ler. "Você é um redator criativo especializado em criar posts virais para redes sociais. Você escreve posts para a empresa Alura..." por exemplo, pode ser o
nome da sua empresa, "...a maior escola online de tecnologia do Brasil." Estou dando aqui o contexto de quem que está escrevendo. "Utilize o tema fornecido no plano de post," que é a resposta do agente 2 que estamos recebendo aqui em cima e passando como prompt aqui, "e os pontos mais relevantes fornecidos," essas coisas estão todas juntas, "e com base nisso, escreva um rascunho de post para Instagram." Então esse agente é redator de Instagram. Aqui o agente planejador retorna para o redator de Instagram, ele poderia retornar também para o redator LinkedIn, para o redator X, para
qualquer rede social. Então, ele solta uma coisa que chama três agentes ao mesmo tempo. Estamos num caminho mais simples aqui, para não perder vocês também e para ser mais acessível a todo mundo. Ele é um cara de Instagram apenas, mas você pode mudar à vontade, e ele vai criar esse rascunho de post sobre o tema indicado. E falando, "o post tem que ser engajador, informativo, com linguagem simples, e incluir duas a quatro hashtags no final", igual a gente tinha feito antes, lembra? Na aula 2 de engenharia de prompt. Description, lembrando aqui, no segundo ponto, a
descrição. Esse aqui é um agente que planeja post, esse aqui é um agente redator de posts engajadores para o Instagram. Bem específico falando o que ele faz. A entrada, que é o prompt, basicamente, então é o tópico geral, e também o plano de post que vamos receber aqui, que foi gerado pelo agente 2. Ele vai chamar o agente passando essas duas coisas, E aqui vai retornar "escreva um rascunho de post para o Instagram." Então, ele retorna um rascunho, que vamos passar adiante. Só uma adição, Fabrício. O nome do modelo na API completo ficaria gemini-2.5-pro-preview-03-25. Você
tem que passar o nome completo que a API espera, senão a chamada vai dar erro, entendeu? É verdade, Luciano. Lembra lá do código de ontem? Eu já até abri aqui para vocês darem uma olhada. Quando a gente deu aquele for, para ele listar todos os modelos do Google, ele vai mostrar exatamente o nome certinho, E se a gente for no 2.5 Gemini PRO preview-03-25, porque ele ainda está em prévia. Não está lançado na API completamente. Tem outro, pro-experimental-03-25, tem vários. Você pode ver isso tanto fazendo o código, quanto você pode ver diretamente lá na página
do Google, também. Mas vamos voltar aqui. Bom, nosso terceiro agente redator pega o planejamento, escreve o post para o Instagram. Feito. E agora vamos para o nosso quarto, que é o revisor. Ele vai receber esse post, esse rascunho, E falar se está tudo bem, ou verificar se tem algo errado e corrigir. Vamos voltar lá. Estamos no agente 4, mesma pegada. agente_revisor, tópico, ele recebe o rascunho gerado. O nome dele será revisor, mas podemos seguir o mesmo padrão aqui. Agente redator, agente_revisor, que eu prefiro. Quando ele é um revisor, ele pode também usar um modelo mais
forte, um pouco mais parrudo aqui, em vez do 2.0 flash. E a instrução dele, "você é um editor e revisor de conteúdo meticuloso, especializado em posts para redes sociais, com foco no Instagram. Por ter um público jovem, entre 18 a 36 anos, use um tom de escrita adequado." Ou seja, para não ser formal demais. "Revise o rascunho de post de Instagram abaixo," que é o que vamos passar nesse prompt, "sobre o tópico indicado, verificando clareza, concisão, correção o tom de escrita. Se o rascunho estiver bom, responda apenas, 'o rascunho está ótimo e pronto para publicar.'
Caso haja problemas, aponte-os e sugira melhorias." E aqui, "rascunho:" estou passando o meu rascunho, mas eu poderia ter simplesmente pegado daqui, nem precisaria desse rascunho, na verdade. Descrição: revisor de posts para redes sociais. A entrada é o tópico e o rascunho que foi gerado no Agente 3. A gente passa esses dois caras para o call_agent e ele vai retornar pra gente o texto final, o texto revisado. Talvez uma grande diferença aí também é que esse agente, assim como o 3, não precisa do tools de google_search. Sim, é verdade. Porque ele não está fazendo busca no
Google. Ele até poderia, mas a busca não traria nenhuma vantagem. Seria só mais tempo de processamento e o resultado seria muito parecido. Muito bom você ter trazido isso, Luciano, porque pode ser que no caso específico da sua empresa, Você precise que o revisor busque na tool do Google para ver se a porcentagem lá, o relatório, por exemplo, do Banco do Brasil e da Caixa que fizemos, se aquela porcentagem, aquele número, está batendo ou não. Ou se é interrelevante, se ainda é uma informação relevante. É verdade. Se estamos falando de notícia ou algo assim, pode ser
que você fale que algo é um problema que não é mais um problema. Uma coisa que acontece quando temos temporal, por exemplo, falta de luz, essas coisas assim. Pode ser que no momento da geração de algo, aquilo ainda tava acontecendo, mas na hora de validação não tava mais. E o que você faria é copiar aqui dessa vírgula, depois da description, até o final do Tools e colaria aqui, por exemplo, e aí você colocaria aqui. "Use o Google Search para verificar, blá, blá, blá." Mas não é o nosso caso aqui. Não precisamos disso, não precisa dessa
tool. Apagando isso, apagando a vírgula e vamos rodar. Agora os quatro agentes estão terminados, estão gravados na memória e vamos para nosso último bloco de código. O que temos já preparado aqui inicialmente nesse último bloco de código? Temos aqui a data de hoje que estamos pegando aqui da biblioteca date.today no formato dia, mês e ano. Aquele formato basicão. Um print aqui. "Iniciando o sistema de criação de posts para o Instagram com quatro agentes." E aqui vamos obter o tópico do usuário. O tópico sobre o qual ele quer as notícias, os lançamentos, qualquer coisa. É igual
o nosso exemplo de chat. Então é uma caixinha que a pessoa vai lá e vai digitar o tópico dela. O input, exatamente. "Por favor, digite o tópico sobre o qual você quer criar o post de tendências." E aqui vamos inserir toda a lógica do nosso sistema dos quatro agentes, como eles vão se comunicar um com o outro. O que eu começo a fazer aqui? Podemos fazer aqui um if else. Por quê? Por conta ali do tópico, porque vamos supor que a pessoa não digitou o tópico. Ah, ela deu só um "Enter". Aí podemos forçar com
uma mensagem, "você não digitou, digita esse tópico aí". E caso contrário, se estiver tudo certo, a gente segue e toca o barco. Vou fazer o if topico. Eu posso só fazer assim? Ou eu poderia fazer diferente. Not equal. If not topico. Isso. Enfim, if not topico. Aí você vai colocar dois pontinhos. E vai dar um print ali com uma mensagem. Então se a pessoa não digitou, vamos avisar. "Você esqueceu de digitar o tópico". Exato. Perfeito. E aí eu tenho que pedir o tópico de novo? Ou não necessariamente, né? Nesse caso podemos só fechar o bloco.
Aí vamos fazer o else ali. Else. Dizendo beleza, vamos trabalhar no tópico. Podemos até fazer um fstring ali. Para mostrar qual é o tópico que a pessoa está colocando. "Maravilha. Vamos trabalhar." Aliás, "criar o post sobre novidades em..." E aí posso colocar, como você falou, um f-string. Coloco aqui entre chaves, ou poderíamos fazer com uma vírgula e a variável topico. Temos a mensagem "vamos criar o post sobre o topico". E agora, o que eu faço? Precisamos colocar os agentes para trabalhar. Precisamos definir a lógica de sequência dos agentes. Que é mais ou menos essa lógica
desenhada no paint. O primeiro agente que temos é o buscador de notícias, de novidades no Google. O que ele retorna? Até cinco lançamentos do último mês. Então você pode criar uma variável chamada lancamento, que é o que ele retorna. Lançamentos retornados ou qualquer coisa assim né? E você vai chamar a função que chama buscador. agente_buscador. Vou pôr lá em cima para ter certeza. Aqui ó. Def agente_buscador. Ó, ele até auto-completa para a gente. E os argumentos dela vão ser o topico e a data_de_hoje. As duas variáveis que você validou antes aí, exatamente. Lembrando que agora
começa a fazer todo sentido porque a gente passou para ele aqui o topico e a data_de_hoje. Agora conseguimos passar, o tópico vai vindo do input que o usuário digitou e a data de hoje está vindo dessa fórmula que fizemos aqui basicamente. Temos os lançamentos, agora ele vai rodar o agente_buscador. Vamos ver aqui exatamente o que vai acontecer. Vamos pegar o agente_buscador passando o topico e a data_de_hoje. Ele vai entrar aqui, vai criar o agente_buscador com as instruções dele que ele vai buscar no Google, as tools, vai passar a entrada dele que é o topico e
a data_e_hoje e vai usar o call_agent, ou seja, vai chamar o agente Que passa o agente_buscador aqui, esse cara e o prompt. Indo mais lá para cima no call_agent ele vai receber aqui o agente e o prompt e vai fazer toda essa lógica que está aqui por dentro, vai executar tudo isso e buscar aqui no final response, retornar uma resposta desse agente 1 que vai retornar para cá, que vai retornar para cá e guardar nessa variável lancamentos. Parece confuso a sequência que fizemos, mas é basicamente um exercício mental que a gente faz para validar o
fluxo do nosso código, para ver se o código que criamos está parecido com o código que a gente pensou em criar. Agora está aqui na minha variável, até mudei o nome dela, coloquei lancamentos buscados para ficar ainda mais claro Que veio do agente buscador, e o que eu faço a partir disso? Bom, agora você tem duas opções, ou podemos fazer um tratamento com if-else para ver se o lançamento veio e tal, ou podemos ir num modo mais protótipo e começar a chamar os outros agentes. Qualquer um dos dois caminhos funciona nesse momento. Eu acho que
vale até a gente visualizar esses lançamentos buscados, para ver se está funcionando a busca no Google, está funcionando a criação do post com a busca. Eu até preparei aqui no "Ctrl+C" e "Ctrl+V" um print para, que a gente pode dar aqui ó, Resultado do agente 1 buscador, um printzinho básico e aqui eu botei dentro desse to_markdown, lembra que a gente tinha colocado aqui? Uma função super basiquinha, o que ela faz? Basicamente ela torna a leitura mais fácil, é só isso que ela faz, ela formata o texto mais fácil. Então aqui não é nem lancamentos a
variável, é lancamentos_buscados, que eu mudei o nome dela. Ele vai transformar nesse formato markdown, que é mais fácil de leitura e dá um display que é o mesmo do print, Ele vai mostrar na tela e aqui eu até botei uma separação para ficar fácil de saber quando termina um agente e começa o outro. Beleza. Depois, eu poderia já rodar esse agente só do jeito que está assim? E ele retornaria as informações do agente 1. Isso. Vamos tentar rodar. Vamos dar só um "Enter" para ver se o nosso if está funcionando. Ah, vamos dar um "Enter".
"Você esqueceu de digitar o tópico." Excelente. Vamos dar mais um. "Digite o tópico sobre o qual você quer criar o post." Vamos falar sobre IA, ou sobre agentes. Agentes de IA, porque senão ele pode achar que é agente secreto. Tipo o 007. Maravilha, vamos então criar o post sobre novidades em agentes de IA. A gente tinha colocado esse print exatamente aqui. E pronto. Já retornou. Resultado do agente 1 buscador para encontrar lançamentos mais recentes e relevantes sobre agentes de IA no último mês, farei algumas pesquisas no Google com base nas notícias e artigos. Aqui estão
5 lançamentos e tendências relevantes sobre IA e agentes de IA com foco no último mês. Ele botou 5 pontos. Crescimento e adoção de agentes de IA, que ele falou que está crescendo, uma tendência de crescimento, as empresas, blablabá. O ponto 2, integração e transformação no mundo de trabalho, 3, tendências e domínio nas big techs, 4, aplicações e impactos setoriais e 5, segurança e ética dos agentes de IA. Beleza. Temos um agente 1 funcionando maravilhosamente, bem, gostei dele. Agora ele vai ter que escolher ali que tema ele vai trabalhar de fato. É verdade. Se a gente
olhar aqui, o planejador, ele pega essas 5 notícias. Busca os pontos mais relevantes de cada uma delas, escolhe a que tem mais potencial e faz um plano para ela. É um agente bem robusto, na verdade, isso daqui. Como é que eu faço agora para chamar o agente 2? Talvez valha só a pena a gente ressaltar aqui, Fabrício, que isso eventualmente vai acontecer daqui a pouco, como esse resultado do agente 1 está sendo gerado na hora que a gente executa, muito provavelmente na próxima vez que a gente executar, os tópicos podem até ser parecidos, mas o
texto provavelmente será diferente. Vamos testar isso, então. Vamos rodar aqui, agentes de IA, que é exatamente o mesmo prompt. Ele vai fazer rodar lá. Então, ele faz a busca de uma forma na primeira vez, na segunda será parecido. Mas realmente é parecido, avanço da IA, edução empresarial, agentes de IA open source, isso não tinha antes. Exatamente. Automação de negócios, tendências de agentes de IA, isso tinha, operações de seguros, seguradoras, isso aqui também não tinha, então cada vez será um pouco diferente. E você poderia até otimizar o seu prompt lá no buscador. Isso é até para
vocês saberem também que assim, se vocês verem diferença em cada execução, não está errado, está funcionando como deve funcionar. E o que você fez aí em casa for diferente do meu, também está ok. Isso, exatamente. Vamos voltar aqui no meu bloco de código, tenho a resposta do agente 1, agora que eu tenho que dar ela de alguma forma para agente 2. Para ele trabalhar. Exatamente. Mas quem era o agente 2? Olhando aqui... É o planejador. Então, olhando aqui para cima, o nome dele é agente planejador, eu vou até copiar o nome dele aqui para ficar
mais fácil. Então, o que ele vai fazer, o que ele manda lá, se a gente for lembrar exatamente como a gente construiu ele, ele vai receber o tópico, o mesmo agentes de IA, por exemplo, E a resposta. Exatamente. Vamos lá passar. O tópico, que está aqui. E a resposta do agente 1, que é os lancamentos_buscados. E ele vai retornar pra gente um plano de post. Ele vai receber e vai guardar nessa variável plano_de_post. E podemos até copiar isso daqui. Esse print e tudo mais. Resultado do agente 2, planejador, e aqui o markdown que vamos imprimir
é o plano_de_post. O resto está igual. Vamos rodar assim só com os dois agentes agentes de IA. E aí ele vai começar agora o processo. O que eu espero que ele faça? Ele vai fazer a busca no Google, encontra resultados, pega os resultados, joga para agente 2, que vai também fazer uma busca no Google, pega os pontos mais importantes, e me retorne um planejamento de como eu tenho que estruturar esse post. Tá rodando aqui ainda, ele já retornou o resultado do agente 1, Em 26 segundos, terminou, se a gente for ver aqui, tem uma barrinha
do lado lateral que tem muito texto, mas ainda, resultado do agente 1, aqui para baixo o resultado do agente 2. Foi isso que a gente colocou aqui, e está imprimindo o markdown do plano de post. "Com certeza, com base nos lançamentos, aqui está um plano de post focado em agentes de IA. Para enriquecer ainda mais o conteúdo, farei algumas pesquisas adicionais." Então o plano de post aqui é o primeiro. "A revolução silenciosa que transforma empresas e setores," o corpo do plano de post, lançamentos e inovações, tudo aquilo que ele pegou ali, basicamente, 4.5 GPT, que
é recente também, o Gemini 2.5, acho que estava em algum lugar também aqui, considerações e conclusão. "Escolha do termo mais relevante. Com base nas minhas pesquisas, o termo mais relevante é adoção e impacto transformador dos agentes de IA. Temos um plano. Agora queremos o nosso texto. O post final, já. O rascunho do post. Ele será escrito pelo agente redator, que é o agente escritor, também a gente pode chamar ele. Que vai receber o tópico e esse plano de post que a gente obteve agora. Olha, até dá a dica para a gente. Ele recebe o tópico
e o plano de post gerado pelo agente 2, e ele pode guardar isso numa variável chamada rascunho_de_post. E como vocês já viram, eu vou fazer essa separação de sempre, do agente 3, redator, e em vez de... e mudar aqui também o rascunho_de_post, que será exibido. E em vez de mostrar para a gente rodar a terceira vez, vamos já rodar o quarto agente também? Vamos escrever o código dele, porque será praticamente igual, como vocês estão vendo. 1, 2, 3 e 4. Tá muito parecido. Então, o quarto é o agente_revisor. Aqui ele recebe o tópico e o
rascunho que foi gerado pelo agente 3, Aqui o rascunho_de_post, e ele vai ter aqui um post final, basicamente, podemos guardar essa variável post_final. O resultado do agente 4, revisor, será o markdown, o display do post final. Temos o nosso sistema de agentes prontos. Então, o 1 joga para o 2, joga para o 3, joga para o 4 que exibe para mim. Isso aí. Vamos rodar e ver agora o processo completo. Agentes de IA. Estou aqui na expectativa. Eu também. Eu quero saber quais serão as novidades que ele vai encontrar dessa vez. Se vai ter algo
um pouco diferentona e tudo mais. Primeiro, Microsoft Copilot, agentes autônomos, integração da Baidu, CrowdStrike da Charlotte AI, agentes de IA de automação de negócios. Enquanto isso, ele está rodando ainda para encontrar o plano, o planejamento. Só um rodou. Respondeu aqui para a gente o agente 2 com um monte de coisa. Olha, do ponto 1, que é o Copilot, esses são os pontos relevantes e esse é o plano. Do ponto 2, que era agentes autônomos, esses são os pontos relevantes e esse é o plano. A mesma coisa para o ponto 3, para o 4 e para
o 5. Desses 5 que ele buscou ali. E aqui parece que ele meio que fez um resumão dos 5, então quem sabe a gente poderia até elaborar, otimizar o nosso prompt, a nossa engenharia de prompt, para ser até mais claro do que a gente foi atualmente, mas basicamente ele encontrou uma conclusão aqui. De reafirmar qual é a importância, os assuntos a serem abordados no post e tudo mais. E com isso, o nosso agente 3, finalmente a gente vendo ele pela primeira vez, ele tem um rascunho de post de Instagram Sobre agentes IA para automação de
negócios. Na verdade foi esse que ele escolheu aparentemente. Foi o último item ali, então. Imagem ou vídeo sugerido, um gráfico animado, blá, blá, blá. Texto, "já imaginou sua equipe focada 100% em estratégia, enquanto a IA cuida das tarefas repetitivas? Bem-vindo à era dos agentes IA na automação de negócios." Muito legal. Ele botou um monte de coisa. E no final, como a gente tinha pedido para ele, entre 2 a 4 hashtags, ou 3 a 5, algo assim. Mas tem algumas hashtags aqui no final. Convidou até para Alura no final aí, antes do Coração Verde. É, quer
estar na vanguarda dessa e de outras tecnologias? A Alura te prepara. Por quê? Porque se a gente for ver no redator, no agente 3, a gente falou, "você escreve posts para a empresa Alura, maior escola online de tecnologia do Brasil." Então tem tudo a ver. E aqui, passando do agente 3 para o agente 4, que é revisor, o rascunho está ótimo e pronto para publicar. Temos um agente? Temos um agente. Um sistema multi-agentes, na verdade. E assim, a gente criou voltado para área de marketing. Mas é legal deixar claro para o pessoal que eles podem
fazer para qualquer área de negócio. Eu mesma já criei agente para analisar dados, que é a minha área. Dados de que tipo? Bancários? Dados de empresa? Eu criei um sistema que você sobe um arquivo CSV e ele cria relatórios, dando um panorama geral sobre os dados, tem também uma ferramenta que gera gráfico, enfim, ficou bem bacana o resultado. Talvez você poderia conectar um quinto agente Que geraria um gráfico aqui para você. Exato. Dá para fazer um monte de coisinhas aí. Maravilha. E aqui, nesse caso, eu quero deixar claro para vocês que essa é uma forma
ainda que estamos rodando diretamente aqui no Google Colab. Se você for usar, por exemplo, esse post que foi sugerido pelo Agente 3, que o Agente 4 falou que está tudo bem, você teria que ainda ir lá e copiar e colar ele na sua página de Instagram. Isso. Mas quando você for fazer isso de uma forma mais profissional na sua empresa, você não vai fazer no Colab exatamente. Você vai criar um código, uma interface de código específica que vai retornar esse post ou para você, o ser humano, por exemplo, que é o especialista em redes sociais,
para fazer uma última análise humana antes de publicar, ver se está tudo de acordo, se está tudo ok, que a gente recomenda que você faça isso. É uma coisa chamada em IA de "Human in the Loop", o humano dentro do processo. A IA, é um auxiliar nosso, ela não é a entidade que vai fazer tudo 100% e publicar também. Pode ser, mas a gente recomenda que você tenha o humano no loop. Mas se for do seu caso, se for do seu agrado, Você poderia, inclusive, conectar aqui, plugar com o Instagram, talvez, com uma API do
Instagram, que já vai disparar a geração de uma imagem com o modelo de imagens do Gemini e a geração do post que foi feito aqui já publicaria a coisa toda junta, de uma vez só. Perfeito. Pessoal, terminada essa explicação, você criou o seu primeiro agente de IA. Parabéns! E você, agora, que está se preparando para o projeto que você vai mandar aqui para concorrer aos prêmios da imersão de IA da Alura com o Google Gemini, Você pode pensar "eu vou mandar esse projetinho aqui, está pronto". Mas lembra que um dos quatro pontos que vamos avaliar
é a criatividade. Se você mandar exatamente esse cara aqui, o ponto de criatividade já vai praticamente zerar. Não faz muito sentido. Mas você pode, sim, utilizar esse projetinho como base para você criar o seu próprio sistema de sub-agentes, de múltiplos agentes, na verdade, porque você já tem basicamente todas as ferramentas aqui. Você já sabe como dar o nome, como escolher o modelo, como dar uma instrução, como dar uma descrição, como selecionar que ele tem que usar uma tool, Uma ferramenta aqui do Google Search, passar para o cara que vai ordenar, que vai rodar todos esses
agentes e fazer aqui embaixo a lógica de quem recebe o quê, qual a gente passa, recebe numa variável, vai passar para o próximo e tudo mais. Você já está capaz de fazer isso depois dessa aula e se você ainda tiver qualquer dúvida, pega o código, joga lá no Gemini, faz perguntas para ele, troca com ele para você ir evoluindo cada vez mais para criar um projeto realmente interessante, tanto para você, para você aprender mais, mais habilidades, quanto pra gente aqui que vamos gostar de ver e o pessoal da comunidade que vai ver lá no grupo
do Discord. Eu não sei vocês, mas assim, eu acho que o primeiro teste que eu faria estudando essa aula de hoje seria adaptar essa sequência de agente para um passeio na Turquia. Olha só! Olha a dica do Luciano. Eu não sei, eu faria isso, hein? Excelente ideia. Então fica como desafio dessa aula também, pode não precisar nem ser o projeto, mas como um desafio para você adaptar. Como aprendizado. Exatamente. E lembrando das regrinhas lá do projeto, da premiação que vamos ter nessa Imersão. Primeiramente, você te até amanhã, sábado às 23h59, para terminar o seu projeto,
mas você só vai poder enviar ele pra gente amanhã no sábado entre meia-noite e 23h59. Então de meia-noite ali da sexta para o sábado, até sábado às 23h59 vai ser o tempo que vamos abrir o formulário lá do Google Forms, onde você vai pôr o seu nome, o seu e-mail e o link do GitHub do seu projeto. Lembrando que lá na aula de ontem a gente já colocou um link na página aqui da imersão para você que não sabe o que é GitHub, está com medo, Está com problema, é um guia claríssimo de como você
criar um projeto, subir um projeto no seu GitHub pessoal e que você vai usar esse código gerado para colocar lá no Google Forms para submeter o seu projetinho. É muito mais fácil do que você imagina. E novamente, se tiver dificuldade pergunta para o Gemini, aí ele vai te ajudar com isso. Enviado seu projeto para a gente no sábado, Entre meia-noite do sábado para o domingo e domingo às 23h59 vamos disponibilizar todos os projetos que forem enviados lá no Discord para vocês, a comunidade, votarem em qual foi o melhor. Então tenta não exagerar, não encher tanto
o saco do pessoal, no privado principalmente, "votem em mim, não sei o que," vamos fazer de uma maneira bem legal, bem organizada que fique prazerosa para todo mundo, descreva bem o seu projeto lá, fala "eu fiz um projeto tal, que faz tal coisa", faz uma apresentação legal, um readme legal lá no GitHub, quem sabe fazer até um vídeo explicando, mostrando o que você fez, dando ideias aí já, ou uma apresentação, um PowerPoint, um Google Apresentações. Durante o domingo vai ter a votação de vocês lá no Discord, Só de vocês, não vamos nem olhar, nem participar
disso daí, e domingo às 23h59 vai acabar essa votação. Na segunda-feira a partir da meia-noite, nessa virada aí da madrugada do domingo para segunda, os 30 projetos mais votados vão vir para banca avaliadora aqui da nossa imersão, que não necessariamente será a gente, mas será uma banca composta pela galera que está envolvida aqui na imersão, instrutores e tudo mais. Desses 30 projetos vamos avaliar os 10 primeiros que vão ser realmente premiados, lembram dos pontos? Primeiro ponto, utilidade, utilidade para você, para sua vida, para sua empresa, para sociedade quem sabe também. Segundo ponto mais importante que
será avaliado, criatividade, para não só copiar o código que fizemos aqui. Terceiro ponto mais importante, a eficácia, quão bem o seu projeto está resolvendo o problema que você se propôs a resolver. E o quarto ponto, a apresentação do projeto um readme bem feito, enfim, surpreenda-nos. Capricha no storytelling. Storytelling, essa é a palavra que eu tava buscando, Val, muito obrigado. E só reforçando, perdão Fabrício, use o Gemini para ajudar também com o readme do GitHub, até com o post que vocês vão fazer no Discord pedindo voto Para fazer uma coisa mais descontraída, mais leve. Usa demais
o Gemini pedindo, "eu quero criar um readme que tenha emoji, que seja engraçado, que explique o que o meu projeto faz", ou quem quiser criar vídeo, pede para o Gemini ajudar a criar um script. "Eu quero criar um vídeo curto, mas que explique esses pontos do meu projeto". Manda ver para o Gemini ajudar em todas as etapas que tiver aí. Eu acho que é isso por enquanto, pessoal! Como sempre, qualquer dúvida vai lá, conversa com o pessoal no Discord, troque, enquanto você está fazendo o projeto, fala,"estou tendo um problema nessa parte, alguém aí sabe um
pouco mais e pode me ajudar com isso?" Isso é uma coisa que não tem valor, você fazer esses contatos, esse networking com a comunidade, trocar com a galera que está aprendendo junto com você também. Qualquer dúvida mais de FAQ, de perguntas frequentemente feitas, vai estar a resposta no guia de mergulho, lá vai ter o regulamento também aqui da premiação dos projetos. E foi uma semana prazerosa, com vocês, muito obrigado, Luciano, obrigado, Val. Adorei estar aqui, e a gente se vê na live de encerramento. Quando é a live de encerramento? Segunda-feira, dia 19 de maio, às
18h30 da tarde, onde vamos fazer o anúncio de todos os projetos, e um último recadinho. Lembrando que na segunda-feira também, pela manhã, Você vai receber pelo seu e-mail, pelo grupo de WhatsApp, sinal de fumaça em todos os lugares, a oferta especial, a condição especial para assinar a Alura. Então não assina hoje, segura até segunda-feira, até você receber essa informação nossa, que lá vai abrir essa condição especial para você poder finalmente assinar a Alura e quem sabe fazer formações completas da Escola de Inteligência Artificial. A Val tem formações lá, tem formações também na Escola de Data
Science, que eu já fiz formação com a Val lá, tem outras escolas também de Back-end, que é programação mais para parte lógica, de Front-end, que é a parte visual da web, de Inovação e Gestão, que são tópicos mais de liderança, por exemplo, soft skills, Mobile, tem muita coisa aqui na Alura E você vai aproveitar, com certeza, mas segura até segunda-feira para assinar. Por hoje é isso, pessoal, e espero que você também tenha aproveitado essa semana aqui conosco, desde o zero da IA, o que é IA, fazer os prompts, fazer a engenharia de prompt, aprender sobre
como conectar o Gemini com o Workspace, criar o seu primeiro chatbot e hoje, finalizando aqui, com chave de ouro, eu acho, essa Imersão IA, criando o seu primeiro agente. A gente se vê na segunda-feira, lá na live, às seis e meia da tarde. Tchau, tchau, pessoal! Até segunda!