Olá! Bem-vindo à nossa quinta lição.
Na lição anterior, estabelecemos a arquitetura fundamental de um agente de IA: o ciclo Perceive-Plan-Act. Vimos como um agente é um sistema proativo que observa seu ambiente, formula um plano e, em seguida, age para atingir um objetivo. Deixamos em aberto uma questão crucial: como exatamente um agente "age"? Como ele transcende o mundo do texto e interage com sistemas reais como Jira ou GitHub?
Esta lição responde a essa pergunta. Nosso objetivo é explicar o conceito de 'tool use' (uso de ferramentas), também conhecido como function calling, como um método para estender as capacidades do agente. Este é o mecanismo que alimenta a fase "Act" do ciclo, permitindo que seu agente leia tickets, crie branches de código e, eventualmente, construa a solução completa que você idealizou.
1. O Que é "Tool Use"? A Ponte Para o Mundo Real
Um Large Language Model (LLM), em sua essência, é um motor de raciocínio e geração de texto. Ele não pode, por si só, consultar um banco de dados ou chamar uma API. A ideia de "uso de ferramentas" é uma inovação que permite ao LLM instruir seu aplicativo a executar essas ações.
Em vez de gerar uma resposta em linguagem natural, o LLM é treinado para produzir uma saída estruturada, geralmente em formato JSON, que descreve uma função a ser chamada e os argumentos a serem passados.
Para uma introdução formal, vamos explorar o que a Microsoft chama de "Tool Use Design Pattern".
ai-agents-for-beginners/04-tool-use/README.md at main - GitHub
O guia 'Tool Use Design Pattern' do repositório AI Agents for Beginners da Microsoft define o conceito e seus principais componentes.
Leia a seção 'What is the Tool Use Design Pattern?'. Concentre-se na ideia de que ferramentas são blocos de código executados em resposta a 'model-generated function calls'.
A principal conclusão é esta: o LLM não executa a ferramenta; ele gera uma solicitação para que seu aplicativo a execute. Pense no LLM como um cérebro que decide qual ação tomar, e no seu código de backend como as "mãos" que executam essa ação.

2. Por Que Essa Separação? Princípios de System Design
Dado seu background em engenharia de software e backend, você pode estar se perguntando por que o LLM simplesmente não executa a função diretamente. A resposta está em princípios sólidos de design de sistemas, que garantem robustez, segurança e escalabilidade.
O vídeo a seguir explica de forma excelente as razões por trás dessa arquitetura de delegação.
O vídeo 'What are LLM Function Calls?' do canal New Machina aborda o 'porquê' por trás do design da chamada de função.
Assista ao trecho de 03:30 a 06:20. Preste atenção especial aos quatro pontos levantados: statelessness, separation of concerns, security, e error handling. Pense em como esses princípios se aplicam ao design de APIs e microserviços com os quais você já trabalha.
Como o vídeo destaca, manter o LLM stateless e focado em raciocínio, enquanto delega a execução para seu aplicativo, cria um sistema mais seguro e gerenciável. Seu aplicativo é o lugar certo para lidar com autenticação de API, gerenciamento de segredos, lógica de repetição (retries) e tratamento de erros de rede — tarefas para as quais um LLM não foi projetado.
3. A Mecânica do Function Calling
Agora que entendemos o "o quê" e o "porquê", vamos mergulhar no "como". O processo de ponta a ponta envolve várias etapas coordenadas entre seu aplicativo e o LLM. O vídeo a seguir oferece um guia prático e detalhado sobre como isso funciona, usando a API da OpenAI como exemplo, que estabeleceu o padrão para essa funcionalidade.
LLM Function Calling - AI Tools Deep Dive
O vídeo 'LLM Function Calling - AI Tools Deep Dive' de Adam Lucek é um mergulho profundo na implementação prática de function calling.
Assista às seções a seguir em sequência: Introdução (00:00 - 01:07): Entenda o propósito geral e veja exemplos do dia a dia. A Lógica (01:07 - 03:12): Foque no fluxo: o LLM sabe quais funções estão disponíveis e gera uma resposta estruturada (JSON) para que você possa executar a função. Definindo uma Ferramenta (03:12 - 05:25): Veja como uma ferramenta é descrita para o LLM usando um schema JSON. Note a importância do campo description — é assim que o LLM sabe quando usar a ferramenta. O Ciclo Completo (05:25 - 13:01): Acompanhe o processo de ponta a ponta: chamada inicial, resposta com tool_call, execução da função no seu código e, finalmente, envio do resultado de volta para o LLM gerar a resposta final.
Para resumir o processo que você acabou de ver:
- Definição da Ferramenta: Você define uma lista de ferramentas disponíveis, cada uma com um nome, uma descrição clara de sua finalidade e o esquema de seus parâmetros (ex:
get_jira_ticket(ticket_id: string)). - Primeira Chamada ao LLM: Você envia o prompt do usuário e a lista de definições de ferramentas para o LLM.
- Resposta do LLM (Tool Call): O LLM analisa o prompt, decide que uma ação é necessária e responde com um objeto
tool_calls, contendo o nome da função a ser chamada e os argumentos extraídos do prompt. - Execução da Ferramenta: Seu aplicativo recebe essa resposta, identifica a função solicitada (
get_jira_ticket) e a executa com os argumentos fornecidos ("JIRA-123"). - Segunda Chamada ao LLM: Você envia o histórico da conversa, incluindo a
tool_calloriginal e o resultado da execução da ferramenta, de volta para o LLM. - Resposta Final: O LLM usa o resultado da ferramenta para formular uma resposta final e coesa para o usuário (ex: "O ticket JIRA-123 é sobre...").
4. Conectando ao Seu Objetivo: As Ferramentas do Seu Agente
Este conceito é o cerne do seu projeto. O seu agente de código será um orquestrador de ferramentas. No seu caso, algumas das ferramentas que você precisará definir são:
- Ferramentas Jira:
get_ticket_details(ticket_id),add_comment(ticket_id, comment),change_ticket_status(ticket_id, status). - Ferramentas Google Drive:
search_documents(query),read_document(file_id). - Ferramentas GitHub:
create_branch(repo, branch_name),get_file_content(repo, file_path),commit_changes(repo, branch, commit_message, files),create_pull_request(...). - Ferramentas de Banco de Dados:
generate_mariadb_migration(schema_change_description).
É exatamente assim que os agentes do Atlassian Rovo funcionam: eles são um motor de raciocínio cercado por um conjunto de ferramentas especializadas.

5. Além do Básico: Frameworks e Desafios de Produção
Construir esse ciclo do zero é instrutivo, mas em um cenário de produção, você usará frameworks que abstraem grande parte da complexidade.
-
Frameworks de Orquestração: Ferramentas como LangChain (mencionada no final do vídeo de Adam Lucek) e Semantic Kernel padronizam a criação e o uso de ferramentas. Dado seu background em C#/.NET, o Semantic Kernel da Microsoft é particularmente relevante, pois foi projetado para se integrar nativamente ao ecossistema .NET.
-
O "Execution Gap": Saber qual ferramenta chamar é apenas metade da batalha. O artigo a seguir destaca os desafios do mundo real na camada de execução — os problemas que você, como desenvolvedor, terá que resolver.
Tool Calling Explained: The Core of AI Agents (2026 Guide)
O artigo 'Tool Calling Explained: The Core of AI Agents' do blog da Composio oferece uma perspectiva de nível de produção sobre o uso de ferramentas, destacando os desafios que surgem em ambientes empresariais.
Leia as seguintes seções: 'The Enterprise Challenge: Multi-Step Orchestration': Veja como um simples prompt se traduz em uma transação distribuída complexa, muito semelhante ao que seu agente fará. 'The Execution Gap: Why Tool Discovery Doesn’t Equal Production Readiness': Preste atenção nos desafios práticos de autenticação por usuário, confiabilidade da API (rate limits, paginação) e governança. Estes são os problemas de engenharia reais que você enfrentará. FAQ 'Tool Calling vs. RAG: Which one do I need?': Esta seção esclarece a diferença entre usar ferramentas para agir e usar RAG para ler conhecimento estático, uma distinção importante para seu projeto.
Os pontos sobre autenticação, tratamento de erros e governança são cruciais. Ao construir seu agente, você não estará apenas lidando com a lógica do LLM, mas também construindo uma aplicação de backend robusta e segura que gerencia as interações com essas APIs críticas.
Conclusão
Nesta lição, desmistificamos a fase "Act" do ciclo de um agente. Você aprendeu que a "mágica" de um agente que interage com o mundo real não é mágica, mas sim um padrão de design de software bem definido chamado tool use ou function calling.
Principais Pontos:
- Tool Use Estende Capacidades: É o mecanismo que permite a um LLM ir além da geração de texto e interagir com sistemas externos (APIs, bancos de dados, arquivos).
- Separação de Responsabilidades: O LLM decide qual ferramenta usar e com quais argumentos, mas seu aplicativo executa a ferramenta. Este design promove segurança, robustez e manutenibilidade.
- O Ciclo de Function Calling: Envolve definir ferramentas com esquemas, permitir que o LLM escolha uma ferramenta, executar o código correspondente e fornecer o resultado de volta ao LLM para contextualização.
- Relevância para o seu Projeto: Seu agente de código será fundamentalmente um orquestrador de ferramentas, chamando APIs do Jira, GitHub e outras para executar as etapas de um plano de desenvolvimento.
Na Próxima Lição:
Agora sabemos como um agente pode usar uma ferramenta. Mas o que acontece quando uma tarefa, como "implementar login com Google", requer o uso de múltiplas ferramentas em uma sequência específica? Como o agente decide se deve primeiro criar uma branch no Git e depois modificar um arquivo, ou vice-versa? Na próxima lição, exploraremos padrões comuns de orquestração de agentes como ReAct e Plan-and-Execute, que governam a estratégia de alto nível que o agente usa para sequenciar suas ações e usar ferramentas para completar tarefas complexas.