Um Agent (Agente Inteligente) é um sistema de aplicação centrado em um grande modelo de linguagem, capaz de tomar decisões autônomas e executar ações em direção a um objetivo de tarefa. O grande modelo fornece ao Agent capacidades fundamentais como compreensão de linguagem, raciocínio e geração de conteúdo, permitindo que ele compreenda tarefas de usuários e analise informações atuais. Sobre essa base, o Agent aplica ainda mais a capacidade de raciocínio do modelo à execução de tareças: diante de um objetivo, ele não precisa apenas gerar uma resposta, mas também determinar o que deve ser feito para alcançar o objetivo e obter informações externas ou executar ações específicas por meio de ferramentas. Quando uma tarefa envolve múltiplos passos, o Agent também pode usar resultados do passo anterior para determinar a próxima ação, ajustando o plano original quando necessário até a conclusão da tarefa. Portanto, o foco do Agent se expande de "que conteúdo gerar com base na entrada" para "como concluir tarefas em torno dos objetivos". A tomada de decisão autônoma mencionada aqui não significa agir completamente sem restrições, mas selecionar operações apropriadas dentro do escopo pré-definido de tarefas, ferramentas e permissões, com base no estado atual. Um Agent não é um novo modelo independente dos grandes modelos de linguagem, mas um sistema de execução de tarefas que usa grandes modelos como núcleo de compreensão e decisão, combinando modelos com capacidades externas.
Agents são particularmente adequados para tarefas que envolvem múltiplos passos, requerem o uso de informações ou ferramentas externas e cujo processo de execução pode mudar com base em resultados intermediários. Cenários comuns de aplicação incluem recuperação de informações, análise de dados, desenvolvimento de software e automação de processos de negócios. Por exemplo, em cenários de recuperação de informações, um Agent pode pesquisar e organizar materiais de diferentes fontes com base na tarefa; em cenários de análise de dados, pode ler dados, realizar cálculos e gerar resultados de análise; em cenários de desenvolvimento de software, pode escrever código, executar testes e continuar modificando com base em resultados de execução; em cenários de automação de processos de negócios, pode conectar-se a bancos de dados e sistemas de negócios para realizar consultas de dados, processamento de tickets e outras operações. Para tarefas como tradução, resumo e reescrita que podem ser concluídas diretamente por geração de modelos, geralmente não é necessário usar um Agent.
O núcleo do Agent, responsável por processar entradas de usuários, gerar respostas e tomar decisões — essencialmente o "cérebro" do Agent. Como Agents não seguem caminhos pré-definidos, mas ajustam dinamicamente sua estratégia comportamental com base em condições em tempo real, o LLM não é responsável apenas por compreender e gerar conteúdo, mas também precisa determinar a próxima operação com base na tarefa atual e nos resultados de execução, decidindo como interagir com o ambiente externo. O Agent usa prompts (instruções) para especificar o papel do LLM, os objetivos da tarefa, as regras de comportamento e os limites de permissão, permitindo que o LLM tome decisões e execute dentro dos limites pré-definidos.
Entrar participar da discussão
Responsável por formular o plano de ação do Agent, incluindo decompor tarefas complexas em múltiplas subtarefas e determinar os passos de execução subsequentes. Ao processar tarefas de múltiplos passos, um Agent não precisa apenas criar um plano de ação, mas também ajustá-lo com base na execução da tarefa. Por exemplo, quando os resultados das ferramentas diferem das expectativas ou quando as informações obtidas são insuficientes, o Agent pode ajustar o plano original e re-determinar o próximo passo. O módulo de Planejamento permite que o Agent planeje e ajuste dinamicamente as ações subsequentes com base no estado da tarefa.
Usada para armazenar a memória do Agent, incluindo memória de curto prazo e memória de longo prazo. A memória de curto prazo salva principalmente informações da sessão ou tarefa atual, enquanto a memória de longo prazo é usada para salvar informações que precisam ser retidas a longo prazo. A memória é um sistema dinâmico, acessível e atualizável. Dinâmico significa que a memória pode mudar com novas informações e o estado da tarefa; acessível significa que o Agent pode recuperar e usar informações armazenadas conforme necessário; atualizável significa que o Agent pode complementar ou modificar a memória existente com base em novas informações e resultados de execução. À medida que a memória se atualiza continuamente, o Agent pode aproveitar a interação e a experiência das tarefas para melhorar julgamentos e decisões subsequentes, aprimorando sua adaptabilidade a diferentes tarefas e ambientes.
Várias ferramentas disponíveis para o Agent, incluindo mecanismos de pesquisa, bancos de dados, calculadoras, ambientes de execução de código e vários serviços externos fornecidos por APIs. A função principal do módulo de Ferramentas é estender a capacidade do Agent de interagir com o ambiente externo, permitindo que o Agent não apenas gere conteúdo, mas também obtenha informações externas e execute operações específicas.
Ao usar o módulo de Ferramentas, o Agent precisa determinar se ferramentas são necessárias com base na tarefa atual e no contexto, e qual ferramenta selecionar. Usar ferramentas de forma eficaz não significa apenas selecionar a ferramenta correta, mas também como usá-las de forma eficiente para reduzir o uso desnecessário de ferramentas. Quando uma tarefa requer a colaboração de múltiplas ferramentas, o Agent também precisa decidir se continua chamando outras ferramentas com base nos resultados, e integrar resultados de diferentes ferramentas. Portanto, o módulo de Ferramentas não fornece apenas capacidades externas ao Agent, mas também requer que ele selecione e use ferramentas de forma razoável com base nas necessidades da tarefa.
Um Agent é um sistema que integra LLM, Planejamento, Memória e Ferramentas, conforme mostrado no diagrama abaixo. Esses módulos trabalham juntos para permitir que o Agent execute tarefas de forma autônoma, aprenda e melhore seu comportamento.
Após receber uma tarefa, um Agent precisa determinar como proceder com base no objetivo da tarefa e nas informações atuais. Por exemplo, algumas tarefas podem chamar ferramentas enquanto determinam o próximo passo com base nos resultados retornados; algumas tarefas complexas primeiro requerem decompor os passos e depois executá-los incrementalmente; para resultados gerados, verificações e modificações adicionais podem ser realizadas. Quando um único Agent não pode concluir toda a tarefa, múltiplos Agents podem ser atribuídos a diferentes papéis para colaborar.
Com base nas características da tarefa e nos métodos de execução, Agents podem adotar diferentes modos de execução de tarefas. Apresentamos abaixo quatro modos comuns: ReAct, Plan-and-Execute, Reflection e Colaboração Multi-Agent, que organizam o processo de execução de tarefas do Agent de diferentes aspectos como execução dinâmica, planejamento de tarefas, melhoria de resultados e divisão de tarefas.
ReAct (Reasoning and Acting) é uma abordagem de execução de tarefas que combina raciocínio e ação, proposta por Shunyu Yao et al. O grande modelo raciocina e age com base nas informações atuais, depois continua raciocinando e agindo com base nas novas informações obtidas da ação, até a conclusão da tarefa.
O processo típico do ReAct inclui Thought (raciocínio), Action (ação) e Observation (observação). Thought representa a análise das informações atuais pelo modelo para determinar o próximo passo; quando informações externas precisam ser obtidas ou uma operação precisa ser executada, o modelo gera a Action correspondente, como chamar uma ferramenta de pesquisa ou consultar um banco de dados; o resultado retornado pela ferramenta é fornecido ao modelo como Observation, e o modelo continua tomando decisões com base nessas novas informações.
Durante a execução da tarefa, Thought, Action e Observation aparecem alternadamente com base nas necessidades da tarefa, formando um processo de execução onde raciocínio, ação e observação trabalham juntos. O processo típico pode ser expresso como:
Thought → Action → Observation → Thought → Action → Observation → ... → Resultado Final
Por exemplo, um usuário pergunta: "Quem ganhou o Prêmio Nobel de Física em 2024? Qual é o mais velho entre eles?"
O Agent primeiro determina que precisa obter a lista dos vencedores do Prêmio Nobel de Física de 2024, por isso chama a ferramenta de pesquisa para consultar. Após obter a lista, percebe que também precisa comparar as idades dos vencedores, então continua consultando suas datas de nascimento. Após obter as informações necessárias, o Agent compara e gera a resposta final.
Neste processo, o Agent não determinou todos os passos de execução no início da tarefa, mas decidiu o próximo passo com base no resultado retornado de cada ferramenta. Portanto, ReAct é mais adequado para tarefas que requerem interação contínua com o ambiente externo, como pesquisa, consulta e chamada de ferramentas. Para tarefas complexas com muitos passos, se este abordagem passo a passo for usada completamente, podem faltar passos ou haver caminhos de execução repetidos.
Plan-and-Execute divide o processamento de tarefas complexas em duas fases: planejamento e execução. Após receber uma tarefa, o Agent primeiro analisa o objetivo da tarefa e decompõe os passos a serem concluídos, formando um plano geral, e depois executa passo a passo de acordo com o plano.
Por exemplo, um usuário solicita: "Analise o desempenho empresarial recente de três empresas de veículos elétricos e crie um relatório comparativo." Esta tarefa envolve múltiplos passos, incluindo coleta de dados, organização de dados, análise comparativa e geração de relatórios. Para essas tarefas de múltiplos passos, um plano pode ser criado primeiro da seguinte forma:
Após a formação do plano, o Agent completa as tarefas sequencialmente. Ao executar um passo, ele ainda pode chamar ferramentas de pesquisa, banco de dados ou outras ferramentas. Se durante a execução for descoberto que o plano original não pode continuar, ou se surgirem novas necessidades de tarefa, o plano original pode ser ajustado.
O processo de execução típico do Plan-and-Execute pode ser expresso como:
Tarefa do Usuário → Criar Plano → Executar Passo a Passo → Verificar Estado da Tarefa → Resultado Final
Onde, ao verificar o estado da tarefa, se o plano original precisar de ajustes, um replanejamento pode ser feito antes de continuar a execução.
Comparado ao ReAct, Plan-and-Execute enfatiza a criação de um plano geral antes da execução, tornando-o adequado para tarefas com muitos passos, objetivos claros e a possibilidade de serem decompostas antecipadamente. Os dois modos também podem ser combinados, por exemplo, usando Plan-and-Execute para planejar tarefas complexas e depois usando ReAct dentro de passos individuais para determinar dinamicamente a próxima operação com base nos resultados retornados pelas ferramentas.
Os resultados gerados por um Agent da primeira vez não necessariamente atendem aos requisitos da tarefa. Por exemplo, o relatório gerado pode omitir informações importantes, as respostas podem conter erros factuais, ou o código pode não funcionar corretamente. Para essas tarefas, um processo de verificação e melhoria pode ser adicionado com base nos resultados preliminares — esta é a ideia básica do modo Reflection (reflexão).
O processo básico do Reflection pode ser expresso como: Tarefa do Usuário → Gerar Resultados Preliminares → Verificar Resultados → Identificar Problemas → Modificar Resultados → Verificar Novamente → ... → Atender Requisitos → Resultado Final.
Por exemplo, peça a um Agent para gerar um relatório comparativo de produtos baseado em múltiplas fontes. Após completar o primeiro rascunho, você pode verificar se todos os produtos que precisam ser comparados estão cobertos, se os parâmetros do produto são consistentes com as fontes originais e se diferenças importantes foram omitidas. Se informações incompletas forem encontradas para um produto, você pode pesquisar materiais novamente e complementar; se as conclusões não forem consistentes com as fontes, elas precisam ser revisadas.
Neste processo, os feedbacks usados para verificar os resultados podem vir de diferentes fontes. O Agent pode verificar seus próprios resultados de execução, usar outros Agents ou modelos para avaliação, ou combinar regras, bases de conhecimento ou revisão manual para fornecer feedback.
Este modo é mais adequado para tarefas com altos requisitos de qualidade, como geração de relatórios, escrita de código e análise complexa. No entanto, múltiplas verificações e modificações também aumentarão o número de chamadas ao modelo e o tempo de execução, portanto, na prática, são definidas condições de término, como terminar quando os resultados atenderem aos requisitos ou parar após atingir o número máximo de verificações.
Para algumas tarefas complexas, um único Agent pode precisar gerenciar simultaneamente coleta de dados, análise de dados, geração de conteúdo e verificação de resultados. Neste caso, as tarefas podem ser atribuídas a múltiplos Agents, cada um tratando diferentes partes, e depois colaborando para atingir o objetivo final. A colaboração Multi-Agent inclui principalmente dois aspectos: divisão de tarefas e troca de informações.
Na divisão de tarefas, diferentes Agents são atribuídos a diferentes papéis, tarefas, ferramentas e conhecimentos. Por exemplo, para completar um relatório de pesquisa industrial, podem ser configurados um Agent de Pesquisa, um Agent de Análise de Dados, um Agent de Redação e um Agent de Revisão. O Agent de Pesquisa é responsável por coletar e organizar materiais, o Agent de Análise de Dados processa dados relevantes, o Agent de Redação gera o relatório, e o Agent de Revisão verifica o relatório.
Em termos de troca de informações, diferentes métodos de colaboração podem ser usados entre múltiplos Agents. Para tarefas que podem ser claramente divididas, múltiplos Agents podem tratar diferentes subtarefas separadamente e depois agregar os resultados no final; para tarefas com dependências sequenciais, o resultado de um Agent pode ser passado ao próximo Agent para processamento adicional; para tarefas que requerem discussão ou modificação repetida, diferentes Agents podem trocar informações por meio de interações de mensagens. Além disso, um Agent coordenador pode ser definido para decidir qual Agent deve tratar a tarefa a seguir com base na situação atual.
Tomando como exemplo a geração de um relatório de pesquisa industrial, uma abordagem de colaboração Multi-Agent é mostrada no diagrama abaixo:

A colaboração Multi-Agent pode reduzir a dificuldade de tratar tarefas complexas para um único Agent por meio da divisão de trabalho, mas o número de Agents não é necessariamente melhor. Com o aumento do número de Agents, a atribuição de tarefas, a entrega de informações e a coordenação de resultados também se tornam mais complexas, ao mesmo tempo em que aumentam as chamadas ao modelo e os custos de execução. Portanto, para tarefas que um único Agent pode concluir, geralmente não é necessário introduzir múltiplos Agents.
Esses modos de execução de tarefas não são independentes uns dos outros e podem ser combinados com base nas necessidades da tarefa em aplicações práticas. Por exemplo, Plan-and-Execute pode ser usado para planejar tarefas complexas, depois ReAct pode ser usado para completar passos que requerem múltiplas chamadas de ferramentas, com Reflection verificando e melhorando os resultados; para tarefas em maior escala, diferentes subtarefas podem ser atribuídas a múltiplos Agents para colaboração.