Conceitos do framework de agente

Esta página oferece uma visão geral conceitual do framework de agentes, explicando os principais blocos de construção para desenvolver agentes eficazes.

O que são agentes?

Um agente de IA generativa é como um programa de computador inteligente que atua como um assistente independente. Ele tem um objetivo, pode entender o mundo ao seu redor (por meio de dados ou informações) e usar várias ferramentas para alcançar essa meta sem supervisão humana constante. Ele pode até planejar as próximas etapas para se aproximar do objetivo.

Tecnicamente, um agente de IA generativa é uma abstração de software que persegue de forma autônoma uma meta definida observando o ambiente, raciocinando sobre a melhor ação a ser tomada e executando ações usando as ferramentas disponíveis. Ele opera independente de instruções humanas diretas para cada etapa e pode determinar proativamente ações subsequentes para alcançar o objetivo final. Isso é possível com os modelos de IA generativa, que impulsionam os recursos de raciocínio e tomada de decisão do agente.

O que os agentes não são?

Aqui identificamos armadilhas comuns que podem parecer com agentes, mas não são:

Chatbot "se-então" com código fixo (antipadrão):

Um chatbot criado com LLM, em que você define previamente todas as entradas de usuário possíveis e as respostas do LLM. Mesmo que você use a chamada de função, se a lógica for totalmente codificada, ela não será um agente. É uma árvore de decisão sofisticada, não um sistema de raciocínio.

Exemplo: se o usuário disser "reservar um voo", chame a função book_flight(). Ele não é um agente, é um sistema baseado em regras.

Dependência excessiva de instruções de reação (possível antipadrão):

A solicitação ReAct (Reason + Act) é uma técnica em que você estrutura comandos para incentivar o LLM a pensar passo a passo e depois agir. Isso é mais próximo do comportamento do agente, mas pode se tornar um antipadrão se: você, o desenvolvedor, ainda criar manualmente os comandos ReAct para todos os cenários possíveis. O agente precisa ser capaz de gerar o próprio raciocínio no estilo ReAct, não apenas seguir modelos pré-escritos. A parte de atuação é limitada a chamadas de função simples, e não há planejamento ou adaptação de nível mais alto.

Fluxo de Consciência (CoT) sem ação (antipadrão):

Usar a solicitação de CoT para fazer com que o LLM explique o raciocínio é valioso, mas não é um agente se não agir de acordo com esse raciocínio. Ele é apenas um LLM mais transparente, não uma entidade autônoma.

Agentes x LLMs

Comando único:

Perguntando ao LLM, "Escreva um resumo da história do Império Romano". Essa é uma única interação. O Gemini processa o comando e gera uma resposta. Não há memória de interações anteriores, objetivo de longo prazo e interação com ferramentas externas. É puramente entrada-saída.

Corrente de comandos:

Você pode continuar com "Agora, liste as principais causas do declínio do Império". Esta é uma cadeia de comandos. Você, o humano, está fornecendo o comportamento semelhante ao agente ao orientar a conversa e dividir a tarefa. O Gemini ainda está respondendo a cada comando individualmente, sem um entendimento mais amplo da meta geral (a menos que você a declare explicitamente várias vezes). Você é o agente, não o Gemini.

Agente:

Um agente que usa LLM seria fundamentalmente diferente.

Imagine um "agente de pesquisa de história romana" com o objetivo de:

"Compilar um relatório abrangente sobre o Império Romano, incluindo a história, as principais figuras, o impacto cultural e os motivos do declínio. O relatório precisa ser atualizado semanalmente com novas informações de fontes acadêmicas."

Principais diferenças:

  • Meta persistente: o agente tem um objetivo contínuo e de longo prazo, não apenas uma tarefa de uma única vez.
  • Planejamento: o agente pode dividir isso em:
    • Pesquisa inicial usando o Gemini (resumo do histórico, identificação de figuras-chave).
    • Pesquisar em bancos de dados acadêmicos (usando uma ferramenta separada).
    • Sintetizar informações de várias fontes.
    • Geração do relatório.
    • Programe uma tarefa semanal para repetir as etapas de 2 a 4.
  • Uso de ferramentas: o agente usa ativamente ferramentas além do Gemini (por exemplo, uma API de pesquisa ou um banco de dados).
  • Autonomia: o agente opera de forma independente, tomando decisões sobre quais informações coletar e como apresentá-las.
  • Memória: o agente mantém uma memória contínua (talvez em um banco de dados) para organizar as descobertas e melhorar as solicitações por conta própria.

O ponto crucial é que, nos cenários de comando único/de cadeia, você é o orquestrador. No cenário do agente, o próprio agente é o orquestrador, usando o Gemini como uma das ferramentas.

Como diferenciar as cargas de trabalho do agente das cargas de trabalho de LLM típicas

A diferença mais crucial entre agentes e cargas de trabalho de LLM típicas é o comportamento autônomo e orientado a metas com refinamento e planejamento iterativos. Faça estas perguntas:

  • Meta permanente
    • O sistema tem um objetivo de longo prazo claramente definido que está buscando, além de responder a comandos individuais?
  • Ação autônoma
    • O sistema pode realizar ações (usando ferramentas, tomando decisões) sem instruções explícitas e detalhadas de uma pessoa para cada ação?
  • Planejamento e raciocínio
    • O sistema mostra evidências de planejamento (dividir uma meta complexa em etapas menores) e raciocínio (tomar decisões com base no entendimento da situação)?
  • Refinamento iterativo
    • O sistema aprende e melhora a abordagem? Isso não precisa ser machine learning. Pode ser uma melhoria automotivada com base em observações.
  • Estado
    • O sistema mantém e usa informações de estado para continuar progredindo em direção à meta?

Se a resposta para todas essas perguntas for "sim", provavelmente você está trabalhando com um agente de IA. Se alguma delas for "não", você provavelmente tem um aplicativo LLM mais sofisticado, mas não um agente completo. A combinação desses fatores, e não apenas um deles, é o que define os agentes. Um agente não é apenas sobre fazer coisas, mas decidir o que fazer e por que, e adaptar a abordagem para alcançar uma meta definida.

Componentes essenciais dos agentes:

Diagrama de arquitetura dos componentes do ambiente de execução do agente 

  • Modelo: o modelo de linguagem (LM, na sigla em inglês) é o responsável pela tomada de decisão central, utilizando raciocínio baseado em instruções e estruturas lógicas.
  • Ferramentas: as ferramentas preenchem a lacuna entre os recursos internos do agente e o mundo externo, abrindo uma gama mais ampla de possibilidades. Elas permitem a interação com dados e serviços externos.
  • Camada de orquestração: essa camada governa como o agente recebe informações, realiza o raciocínio interno e usa esse raciocínio para informar a próxima ação ou decisão.

Agentes e chamadas de função

A chamada de função do LLM é uma etapa poderosa em direção ao comportamento do agente, mas não é equivalente a um agente completo.

LLM + Chamada de função:você define funções que o LLM pode chamar, por exemplo, get_weather(location), search_wikipedia(topic)). Quando uma resposta do LLM indica que precisa usar uma função, o código executa essa função e fornece o resultado de volta ao LLM. Isso permite que o modelo acesse dados externos ou realize ações.

LLM + agente:

Um agente é criado com base em chamadas de função. A chamada de função é um mecanismo que os agentes podem usar, mas o agente adiciona:

  • Tomada de decisão estratégica: o agente decide quando e por que chamar funções, com base na meta e no plano geral. Ele não reage apenas a um único comando.
  • Raciocínio em várias etapas: um agente pode encadear várias chamadas de função e interações do Gemini com base no processo de raciocínio interno. Ele não é limitado a uma única chamada de função por comando.
  • Tratamento e adaptação de erros: um bom agente processa casos em que uma chamada de função falha ou retorna resultados inesperados. O plano pode ser ajustado de acordo com isso.
  • Gerenciamento de estado: o agente mantém um estado interno (memória) que persiste em várias interações, permitindo que ele acompanhe o progresso e tome decisões mais informadas.

Pense na chamada de função como uma forma de dar ao LLM a capacidade de interagir com o mundo. Um agente é o que dá à LLM a inteligência e a autonomia para usar essa capacidade de maneira eficaz para alcançar uma meta complexa.

Pipelines e cadeias de LLM

Esta subseção vai abordar como os LLMs podem ser estruturados e organizados em agentes usando pipelines e cadeias. Vamos discutir diferentes padrões para conectar chamadas de LLM, interações com ferramentas e outros componentes do agente para realizar tarefas complexas. Espera-se explicações sobre arquiteturas de pipeline e cadeia comuns relevantes ao design do agente.

Antipadrões ao criar agentes

Esta seção vai se concentrar em erros e armadilhas comuns a serem evitados ao desenvolver agentes. Vamos identificar e descrever "antipadrões": escolhas de design ou estratégias de implementação que podem prejudicar a performance, a manutenção ou a capacidade de expansão do agente. Aprender sobre esses antipadrões ajudará os desenvolvedores a criar agentes mais robustos e eficazes.

Agentes de várias etapas x agentes múltiplos: qual você deve escolher?

Esta seção compara e contrasta duas abordagens diferentes para a complexidade do agente: agentes de várias etapas (agentes que executam tarefas em uma sequência de etapas) e sistemas multiagentes (sistemas compostos por vários agentes interativos). Vamos discutir os pontos fortes e fracos de cada abordagem e dar orientações sobre quando escolher uma em vez da outra com base no caso de uso e no comportamento do agente desejado.

Quando usar fluxos de vários agentes?

Esta seção vai abordar especificamente cenários em que o uso de "fluxos" multiagentes se torna vantajoso. Vamos examinar casos de uso que se beneficiam da colaboração, delegação ou solução de problemas distribuídos entre vários agentes. O objetivo é ilustrar as aplicações práticas e os benefícios dos fluxos de vários agentes em sistemas de agentes complexos.

Agentes com várias ferramentas x multiagentes?

Esta seção aborda a escolha de design entre equipar um único agente com várias ferramentas ou criar um sistema multiagente. Vamos analisar situações em que aumentar o conjunto de ferramentas de um único agente é suficiente e quando distribuir tarefas e recursos entre vários agentes se torna uma abordagem mais eficaz. Isso ajudará os desenvolvedores a decidir a arquitetura ideal com base na complexidade e nos requisitos funcionais.

Agente com fluxos predefinidos ou agentes autônomos?

Aqui, vamos diferenciar agentes com fluxos de trabalho estruturados e predefinidos ("fluxos") e agentes mais autônomos que apresentam maior flexibilidade e tomada de decisão na operação. Vamos discutir as vantagens e desvantagens entre controle e adaptabilidade e quando cada tipo de agente é mais adequado para aplicativos diferentes.

Memória de curto e longo prazo

Esta seção explica os conceitos de memória de curto e longo prazo no Agent Framework. Vamos discutir como os agentes gerenciam o contexto da conversa (memória de curto prazo) e persistem o conhecimento ou os dados em todas as sessões (memória de longo prazo). Entender esses mecanismos de memória é crucial para criar agentes que possam manter o estado e aprender ao longo do tempo.

Planejamento de uma única etapa x planejamento de várias etapas

Vamos explorar os recursos de planejamento dos agentes, comparando o planejamento de uma única etapa (tomando decisões imediatas) com o planejamento de várias etapas (elaborando estratégias e dividindo tarefas complexas em sequências). Esta seção discute os benefícios e as complexidades de cada abordagem de planejamento e como elas afetam o comportamento do agente e as habilidades de resolução de problemas.

Ferramentas únicas x várias ferramentas x AgentTools

Esta seção vai oferecer uma visão geral comparativa das diferentes configurações de ferramentas para agentes. Vamos examinar o uso de ferramentas únicas, agentes equipados com várias ferramentas e as "AgentTools" especializadas (ferramentas que invocam outros agentes). O objetivo é esclarecer a finalidade e os cenários de uso de cada tipo de ferramenta e configuração.

Ferramentas versus memória

Esta seção discute a interação e a relação entre ferramentas e memória no design de agentes. Vamos explorar como os agentes usam a memória para informar o uso da ferramenta, armazenar as saídas da ferramenta e otimizar a seleção da ferramenta ao longo do tempo. Entender essa interação é fundamental para criar agentes que aproveitem ferramentas e memória de forma eficaz para melhorar o desempenho.

Testes e controle de qualidade do agente

Esta seção vai se concentrar nos aspectos cruciais de testes e garantia de qualidade (QA) para agentes. Vamos discutir estratégias e metodologias para testar rigorosamente o comportamento do agente, a integração de ferramentas e o desempenho geral do sistema. O objetivo é fornecer orientações para garantir a confiabilidade e a correção dos agentes antes da implantação.

Avaliações de agentes

Nesta seção, vamos abordar especificamente as avaliações de agentes. Vamos nos aprofundar em métodos para medir e avaliar sistematicamente a performance do agente em relação a métricas e comparativos de mercado definidos. Discussão sobre frameworks de avaliação, métricas como precisão e eficiência e como usar avaliações para melhorar o design do agente.

Multiagente

Esta seção vai se aprofundar no conceito de sistemas multiagentes no framework. Ele vai consolidar e expandir as menções anteriores de conceitos multiagentes, oferecendo uma visão geral abrangente da arquitetura, benefícios e desafios. Ele vai servir como um recurso central para entender e projetar aplicativos multiagentes.

Fluxos

Esta seção vai explicar os "fluxos" no Agent Framework. Ele detalha os diferentes tipos de fluxos predefinidos (sequencial, loop, automático etc.) e como eles governam o comportamento e a interação do agente com agentes filhos. Uma explicação clara e estruturada da mecânica do fluxo e das opções de personalização.

Comunicação

Esta seção vai abordar a comunicação no Agent Framework, principalmente em sistemas multiagentes. Vamos discutir como os agentes trocam informações, coordenam ações e colaboram para alcançar objetivos comuns. O foco será nos mecanismos e padrões para uma comunicação eficaz entre os agentes.

Planejamento

Esta seção vai oferecer uma análise mais detalhada do planejamento em agentes. Ele vai abordar diferentes algoritmos de planejamento, estratégias para dividir tarefas complexas e como os agentes usam o planejamento para orientar as ações e o uso de ferramentas. Uma discussão mais técnica sobre metodologias de planejamento relevantes para o desenvolvimento de agentes.

Sessão e estados

Esta seção vai explicar de forma abrangente as sessões e o gerenciamento de estados no Agent Framework. Ele detalha como as sessões são criadas e mantidas, como as variáveis de estado são usadas para armazenar e acessar informações e o ciclo de vida dos dados da sessão. Entender sessões e estados é crucial para criar agentes que possam gerenciar o contexto e manter a continuidade em todas as interações.

Retornos de chamada

Por fim, esta seção vai oferecer uma explicação dedicada e detalhada de callbacks no Agent Framework. Ele vai abordar os diferentes tipos de callbacks (antes/depois do agente, modelo, ferramenta), a finalidade deles e como os desenvolvedores podem usá-los para personalizar e estender o comportamento do agente em vários estágios de processamento. Confira um guia completo sobre como usar callbacks para personalizar o agente avançado.