- Published on
Desenvolvimento de Agentes da Anthropic: Simplicidade Supera a Complexidade
Definição de Agentes Inteligentes
O conceito de agentes inteligentes apresenta diversas interpretações. Alguns os veem como "gestores completos", capazes de pensar de forma independente, tomar decisões autônomas e utilizar ferramentas para executar tarefas complexas. Outros os consideram "funcionários obedientes", que seguem fluxos de trabalho predefinidos. A Anthropic engloba ambos os tipos sob o termo sistemas inteligentes, distinguindo entre fluxos de trabalho e agentes:
- Fluxos de trabalho: Sistemas que organizam modelos de linguagem grandes (LLMs) e ferramentas através de caminhos de código predefinidos.
- Agentes: Sistemas que são guiados dinamicamente por LLMs em seus processos e uso de ferramentas, controlando autonomamente a forma como as tarefas são concluídas.
Quando Usar Agentes Inteligentes
A Anthropic recomenda adotar a filosofia "mantenha simples" ao desenvolver aplicações de IA. Nem todos os cenários necessitam de sistemas inteligentes complexos. Embora poderosos, esses sistemas podem resultar em respostas mais lentas e custos mais elevados. É crucial que os desenvolvedores equilibrem funcionalidade e eficiência.
- Fluxos de trabalho: Ideais para tarefas claras que exigem previsibilidade e consistência.
- Agentes: Mais adequados para cenários de grande escala que necessitam de flexibilidade e decisões orientadas por modelos.
Em muitas aplicações, o uso de boas instruções (prompts) com recuperação de informações e exemplos contextuais diretamente nos grandes modelos pode ser suficiente.
Uso de Frameworks
Atualmente, existem diversos frameworks que auxiliam os desenvolvedores na construção de agentes de IA, como:
- LangGraph da LangChain
- Framework de Agentes de IA da Amazon Bedrock
- Ferramenta de construção de fluxos de trabalho de grandes modelos "arrastar e soltar" Rivet
- Ferramenta GUI Vellum para construir e testar fluxos de trabalho complexos
Esses frameworks simplificam o processo de desenvolvimento, mas também podem adicionar camadas de abstração no código, tornando a lógica subjacente menos transparente, dificultando a depuração e possivelmente levando a soluções excessivamente complexas em cenários simples.
A Anthropic sugere que os desenvolvedores comecem utilizando diretamente as APIs de grandes modelos. Muitas soluções podem ser implementadas com poucas linhas de código. Caso optem por usar frameworks, é essencial que compreendam seus princípios subjacentes. A falta de compreensão dos mecanismos internos dos frameworks é uma das principais causas de problemas no desenvolvimento. O cookbook da Anthropic oferece exemplos concretos.
Componentes Básicos, Fluxos de Trabalho e Agentes
Componente Básico: LLMs Aprimorados
O componente fundamental de sistemas inteligentes são os LLMs aprimorados, que possuem capacidades como recuperação e memória. Os modelos da Anthropic podem usar proativamente essas habilidades, por exemplo, gerando consultas de pesquisa, selecionando ferramentas e decidindo quais informações manter.
Ao expandir as funcionalidades, deve-se focar em:
- Personalizar as funções de acordo com o cenário de aplicação específico.
- Garantir que o modelo tenha interfaces simples e bem documentadas.
O protocolo de contexto de modelo recentemente lançado pela Anthropic simplifica a integração de modelos de IA com ecossistemas de ferramentas de terceiros.
Fluxos de Trabalho: Cadeias de Instruções (Prompt Chains)
As cadeias de instruções decompõem tarefas complexas em várias etapas, cada uma envolvendo uma chamada a um grande modelo. As etapas subsequentes são processadas com base nos resultados da etapa anterior. Os desenvolvedores podem adicionar pontos de verificação no meio do processo para garantir que ele avance conforme o esperado.
As cadeias de instruções são adequadas para cenários em que tarefas complexas podem ser claramente divididas em uma série de subtarefas fixas. Cada modelo se concentra em concluir uma tarefa simples, e embora o tempo de resposta geral possa ser um pouco mais longo, a precisão aumenta significativamente.
Exemplos típicos de aplicação:
- Gerar um texto de marketing e traduzi-lo para outros idiomas.
- Escrever um esboço de documento e verificar sua conformidade antes de redigir o documento completo com base no esboço.
Fluxos de Trabalho: Roteamento Inteligente (Smart Routing)
A técnica de roteamento classifica os tipos de tarefas de entrada e os aloca para os módulos correspondentes. Esse design permite que cada módulo seja otimizado para uma tarefa específica, evitando interferência entre diferentes tipos de tarefas. O roteamento inteligente é adequado para cenários em que as tarefas possuem características de classificação claras. Sistemas de IA podem identificar com precisão os tipos de tarefas por meio de grandes modelos de linguagem ou algoritmos tradicionais e realizar o roteamento.
Exemplos típicos de aplicação:
- Em sistemas de atendimento ao cliente, direcionar consultas gerais, solicitações de reembolso e suporte técnico para os processos apropriados.
- Atribuir problemas simples e comuns a modelos menores e problemas difíceis e raros a modelos mais poderosos para otimizar custos e velocidade.
Fluxos de Trabalho: Paralelismo
Grandes modelos de linguagem podem processar tarefas simultaneamente e agregar a saída programaticamente. As características do fluxo de trabalho paralelo incluem:
- Segmentação de tarefas: Dividir a tarefa em subtarefas que podem ser executadas em paralelo e, em seguida, integrar os resultados.
- Mecanismos de votação: Executar a mesma tarefa várias vezes, selecionar o melhor resultado ou combinar várias respostas.
O método paralelo é muito eficaz quando as subtarefas podem ser executadas em paralelo para aumentar a velocidade ou quando são necessárias múltiplas tentativas para obter resultados com maior confiança. Para tarefas complexas, focar cada chamada no processamento de um aspecto específico pode gerar melhores resultados.
Exemplos típicos de aplicação:
- Segmentação de tarefas:
- Segurança: um modelo processa as solicitações do usuário e outro realiza a revisão de conteúdo.
- Avaliação de desempenho: diferentes modelos avaliam as métricas de desempenho do sistema.
- Mecanismos de votação:
- Verificação de segurança de código: vários modelos de detecção encontram vulnerabilidades no código em conjunto.
- Revisão de conteúdo: vários modelos avaliam a segurança do conteúdo de diferentes ângulos.
Fluxos de Trabalho: Líder — Executor
Um modelo de linguagem central decompõe dinamicamente as tarefas, as atribui a modelos executores e agrega os resultados.
Esse fluxo de trabalho é adequado para tarefas complexas onde as etapas específicas não podem ser determinadas antecipadamente. A divisão de tarefas não é fixa, mas decidida dinamicamente pelo sistema de IA, com base na situação.
Exemplos típicos de aplicação:
- Aplicações de programação que exigem modificações complexas em vários arquivos.
- Tarefas de pesquisa que exigem a coleta e análise de informações relevantes de várias fontes.
Fluxos de Trabalho: Avaliação — Otimização
Um LLM é chamado para gerar uma resposta, enquanto outro fornece avaliação e feedback, criando um ciclo.
Esse fluxo de trabalho é particularmente eficaz quando existem critérios de avaliação claros e quando o refinamento iterativo pode trazer valor significativo. O LLM pode fornecer feedback, semelhante ao processo iterativo de revisão de um escritor humano.
Exemplos típicos de aplicação:
- Tradução literária: um modelo de avaliação descobre diferenças linguísticas que foram omitidas na tradução e fornece sugestões de modificação.
- Pesquisa complexa: um modelo de avaliação determina se é necessário continuar a pesquisa em mais profundidade.
Agentes
Agentes surgem com a maturidade dos LLMs em habilidades essenciais como compreensão de entradas complexas, planejamento de raciocínio, uso de ferramentas e recuperação de erros.
O trabalho de um agente começa com uma ordem de um usuário humano ou uma discussão interativa. Uma vez que a tarefa é clara, o agente planeja e opera de forma independente, podendo precisar solicitar mais informações ou julgamentos humanos.
Em cada etapa do processo de execução, é crucial obter "a verdade" do ambiente. Os agentes podem pausar em pontos de verificação ou quando encontram um bloqueio para obter feedback humano. As tarefas geralmente terminam após a conclusão, mas também geralmente incluem condições de parada.
Os agentes podem lidar com tarefas complexas, mas sua implementação geralmente é simples, geralmente apenas um grande modelo de linguagem usando ferramentas em um ciclo com base no feedback do ambiente. Portanto, é essencial projetar um conjunto de ferramentas e sua documentação com clareza e cuidado.
Agentes são adequados para problemas abertos, onde o número de etapas necessárias é difícil de prever e caminhos fixos não podem ser codificados. A autonomia dos agentes os torna uma escolha ideal para expandir tarefas em ambientes confiáveis. A autonomia dos agentes implica custos mais elevados e o risco de acúmulo de erros. Recomenda-se testes extensivos em um ambiente sandbox e a definição de medidas de proteção adequadas.
Exemplos de aplicação de agentes:
- Um agente de código para resolver tarefas SWE-bench que envolvem a edição de vários arquivos com base em descrições de tarefas.
- O recurso "Uso do computador" da Anthropic, onde Claude usa um computador para concluir tarefas.
Combinação e Personalização
Esses componentes básicos não são prescritivos, e os desenvolvedores podem moldá-los e combiná-los de acordo com seus casos de uso. A chave para o sucesso é medir o desempenho e implementar iterativamente. A complexidade só deve ser considerada quando soluções mais simples não forem suficientes. O sucesso no domínio dos LLMs não está em construir o sistema mais complexo, mas sim em construir o sistema que atende às necessidades. Comece com instruções simples, otimize-as com avaliações abrangentes e só adicione sistemas de agentes de várias etapas quando soluções mais simples não forem suficientes.
Ao implementar agentes, é necessário seguir estes princípios:
- Mantenha o design do agente simples.
- Priorize a garantia de transparência do agente, mostrando claramente cada etapa planejada.
- Crie meticulosamente a Interface Agente-Computador (ACI) por meio de documentação e testes abrangentes de ferramentas.