Pular para o conteúdo principal

Padrões de projeto de sistemas de agentes

Os agentes GenAI combinam a inteligência dos modelos GenAI com ferramentas para recuperação de dados, ações externas e outras funcionalidades. Esta página explica o processo de design de agentes:

  • Um exemplo concreto de construção de um sistema de agentes ilustra a orquestração de como as chamadas de modelo e de ferramenta fluem juntas.
  • Os padrões de projeto para sistemas de agentes formam um contínuo de complexidade e autonomia, desde cadeias determinísticas, passando por sistemas de agente único que podem tomar decisões dinâmicas, até arquiteturas multiagentes que coordenam múltiplos agentes especializados.
  • Uma seção de conselhos práticos oferece orientações sobre como escolher o design certo, desenvolver agentes, realizar testes e passar para a produção.

Os agentes dependem muito de ferramentas para coletar informações e tomar medidas externas. Para obter mais informações sobre as ferramentas, consulte Ferramentas.

Exemplo de sistema de agentes

Para um exemplo concreto de um sistema de agentes, considere um agente GenAI de um call center interagindo com um cliente:

Fluxograma da interação do cliente com o aplicativo GenAI.

O cliente faz um pedido: "Você pode me ajudar a devolver meu último pedido?"

  1. Motivo e plano : Dado o objetivo da consulta, o agente "planeja": "Consultar o pedido recente do usuário e verificar nossa política de devolução."

  2. Encontrar informações (inteligência de dados): O agente consulta o banco de dados de pedidos para recuperar o pedido relevante e referencia um documento de política.

  3. Motivo : O agente verifica se o pedido se encaixa no prazo de devolução.

    • Intervenção humana opcional: O agente verifica uma regra adicional: Se o item se enquadrar em uma determinada categoria ou estiver fora do prazo normal de devolução, o caso será encaminhado para um atendente humano.
  4. Ação : O agente inicia o processo de devolução e gera uma etiqueta de envio.

  5. Motivo : O agente gera uma resposta para o cliente.

O agente AI responde ao cliente: “Concluído! Aqui está sua etiqueta de envio.

Esses passos são instintivos em um contexto de call center com atendimento humano . Em um contexto de sistema de agentes , o LLM "raciocina", enquanto o sistema recorre a ferramentas especializadas ou fontes de dados para preencher os detalhes.

Ferramentas e fonte de dados que o sistema do agente utiliza.

Níveis de complexidade: de LLMs a sistemas de agentes

Os aplicativos GenAI podem ser alimentados por uma variedade de sistemas, desde chamadas LLM simples até sistemas multiagentes complexos. Ao desenvolver qualquer aplicação com AI , comece pelo básico. Introduza comportamentos de agentes mais complexos quando realmente precisar deles para maior flexibilidade ou para decisões orientadas por modelos. Cadeias determinísticas oferecem fluxos previsíveis e baseados em regras para tarefas bem definidas. Abordagens mais orientadas a agentes oferecem maior flexibilidade e potencial, mas têm como custo maior complexidade e possível latência.

Padrão de design

Quando usar

Prós

Contras

LLM + prompt

  • Pergunta e resposta genéricas
  • Protótipo rápido para uso a curto prazo
  • Muito simples
  • Fácil de criar
  • Personalização mínima

Cadeia determinística

  • tarefa bem definida
  • Pipeline estático, como o RAG básico
  • Não há necessidade de decisões de última hora.
  • Simples
  • Fácil de auditar
  • Inflexível
  • Requer alterações no código para adaptação.

Sistema de agente único

  • Consultas de complexidade moderada a alta no mesmo domínio.
  • Algumas decisões dinâmicas sem a sobrecarga de múltiplos agentes especializados.
  • Flexível
  • Mais simples que multiagente
  • Bom "default"
  • Menos previsível
  • É preciso evitar chamadas de ferramentas repetidas ou incorretas.

Sistema multiagente

  • Domínios grandes ou multifuncionais
  • Múltiplos agentes "especialistas", com lógica ou contextos de conversação distintos.
  • Altamente modular
  • Escalável para grandes domínios
  • Complexo de orquestrar
  • Mais difícil de rastrear e depurar.

Custom Agents são agnósticos a esses padrões de design, assim você pode começar de forma simples e evoluir para níveis mais altos de automação e autonomia à medida que os requisitos da sua aplicação aumentam.

Para saber mais sobre a teoria por trás dos sistemas de agentes, veja a postagem no blog dos fundadores Databricks :

LLM e pronto

O modelo mais simples possui um LLM independente ou outro modelo GenAI que responde a comandos com base no conhecimento proveniente de um vasto dataset de treinamento. Esse modelo é bom para consultas simples ou genéricas, mas geralmente está desconectado dos dados reais do seu negócio. Você pode personalizar o comportamento fornecendo uma mensagem ao sistema com suas instruções personalizadas ou dados incorporados.

A LLM responde aos usuários.

Cadeia determinística (passos fixos)

As cadeias determinísticas aumentam os modelos GenAI com chamadas de ferramentas, mas o desenvolvedor define quais ferramentas ou modelos são chamados, em que ordem e com quais parâmetros. O LLM não toma decisões sobre quais ferramentas utilizar ou em que ordem . O sistema segue um fluxo de trabalho ou "cadeia" predefinida para todas as solicitações, tornando-o altamente previsível.

Por exemplo, uma cadeia de Geração Aumentada por Recuperação (RAG) determinística pode sempre:

  1. Recupera os k melhores resultados de um índice vetorial para encontrar o contexto relevante para uma solicitação do usuário.
  2. Aprimore uma solicitação combinando o pedido do usuário com o contexto recuperado.
  3. Gere uma resposta enviando o prompt ampliado para um LLM.

Diagrama de uma cadeia RAG básica

Quando usar:

  • Para tarefas bem definidas com fluxo de trabalho previsível.
  • Quando a consistência e a auditoria são prioridades máximas.
  • Quando se deseja minimizar a latência, evitando múltiplas chamadas LLM para decisões de orquestração.

Vantagens:

  • Máxima previsibilidade e auditabilidade.
  • Normalmente, menor latência (menos chamadas LLM para orquestração).
  • Mais fácil de testar e validar.

Considerações:

  • Flexibilidade limitada para lidar com solicitações diversas ou inesperadas.
  • Pode tornar-se complexo e difícil de manter à medida que as ramificações lógicas aumentam.
  • Pode exigir uma refatoração significativa para acomodar novas funcionalidades.

Sistema de agente único

Um sistema de agente único possui um LLM (Modelo de Nível de Liderança) que orquestra um fluxo coordenado de lógica. O LLM decide de forma adaptativa quais ferramentas usar, quando fazer mais chamadas ao LLM e quando parar. Essa abordagem permite a tomada de decisões dinâmicas e contextualizadas.

Um sistema de agente único pode:

  1. Aceitar solicitações como consultas de usuários e qualquer contexto relevante, como o histórico de conversas.
  2. Reflita sobre a melhor forma de responder, decidindo opcionalmente se deve recorrer a ferramentas para obter dados ou ações externas.
  3. Se necessário, repita o processo, chamando um LLM ou ferramentas repetidamente até que um objetivo seja alcançado ou uma determinada condição seja atendida, como receber dados válidos ou resolver um erro.
  4. Integre os resultados das ferramentas à conversa.
  5. Retorna uma resposta coerente como saída.

Por exemplo, um agente assistente de suporte técnico pode se adaptar da seguinte forma:

  • Se o usuário fizer uma pergunta simples ("Qual é a nossa política de devoluções?"), o agente poderá responder diretamente com base no conhecimento do LLM.
  • Se o usuário quiser o status do seu pedido, o agente pode chamar uma função lookup_order(customer_id, order_id). Se a ferramenta responder com "número de pedido inválido", o agente pode tentar novamente ou solicitar ao usuário o ID correto, continuando até que possa fornecer uma resposta final.

Agentes AI racionalizam um plano e o executam com ferramentas.

Quando usar:

  • Você espera consultas variadas dos usuários, mas ainda dentro de um domínio ou área de produto coesa.
  • Determinadas consultas ou condições podem justificar o uso de ferramentas, como, por exemplo, decidir quando buscar dados do cliente.
  • Você deseja mais flexibilidade do que uma cadeia determinística, mas não precisa de agentes especializados separados para tarefas diferentes.

Vantagens:

  • O agente pode se adaptar a consultas novas ou inesperadas, escolhendo quais ferramentas (se houver) utilizar.
  • O agente pode executar chamadas LLM repetidas ou invocações de ferramentas para refinar os resultados, sem a necessidade de uma configuração totalmente multiagente.
  • Esse padrão de projeto costuma ser o ideal para casos de uso corporativos — mais simples de depurar do que configurações multiagentes, ao mesmo tempo que permite lógica dinâmica e autonomia limitada.

Considerações:

  • Em comparação com uma cadeia codificada, você deve se proteger contra chamadas de ferramentas repetidas ou inválidas. Loops infinitos podem ocorrer em qualquer cenário de chamada de ferramentas, portanto, defina limites de iteração ou tempos limite.
  • Se sua aplicação abrange subdomínios radicalmente diferentes (finanças, DevOps, marketing, etc.), um único agente pode se tornar difícil de gerenciar ou sobrecarregado com requisitos de funcionalidade.
  • Você ainda precisa de instruções e restrições cuidadosamente elaboradas para manter o agente focado e relevante.
  • A capacidade de ação é um espectro; quanto mais liberdade você der aos modelos para controlar o comportamento do sistema, mais autônoma a aplicação se tornará. Na prática, a maioria dos sistemas de produção restringe cuidadosamente a autonomia do agente para garantir compliance e a previsibilidade, por exemplo, exigindo aprovação humana para ações de risco.

Sistema multiagente

Um sistema multiagente envolve dois ou mais agentes especializados que trocam mensagens ou colaboram em tarefas. Cada agente possui sua própria especialização em domínio ou tarefa, contexto e, potencialmente, conjuntos de ferramentas distintos. Um "coordenador" ou "supervisor AI " separado direciona as solicitações ao agente apropriado ou decide quando transferir a tarefa de um agente para outro. O supervisor pode ser outro LLM ou um roteador baseado em regras.

Um coordenador gerencia vários agentes AI .

Por exemplo, um assistente de atendimento ao cliente pode ter um supervisor que delega tarefas a agentes especializados:

  • Assistente de compras: Ajuda os clientes a pesquisar produtos e fornece conselhos sobre prós e contras com base em avaliações.
  • Agente de suporte ao cliente: responsável por feedback, devoluções e envios.

Quando usar:

  • Você tem áreas problemáticas ou conjuntos de habilidades distintos, como um agente de programação ou um agente financeiro.
  • Cada agente precisa ter acesso ao histórico da conversa ou a instruções específicas do domínio.
  • Você tem tantas ferramentas que encaixá-las todas no esquema de um único agente é impraticável; cada agente pode ser responsável por um subconjunto delas.
  • Você deseja implementar reflexão, crítica ou colaboração mútua entre agentes especializados.

Vantagens:

  • Essa abordagem modular significa que cada agente pode ser desenvolvido ou mantido por equipes separadas, especializadas em um domínio específico.
  • Pode lidar com fluxos de trabalho corporativos grandes e complexos que um único agente pode ter dificuldade para gerenciar de forma coesa.
  • Facilita o raciocínio avançado em várias etapas ou com múltiplas perspectivas - por exemplo, um agente gerando uma resposta e outro verificando-a.

Considerações:

  • Requer uma estratégia de roteamento entre agentes, além da sobrecarga de registro, rastreamento e compartilhamento em vários pontos de extremidade.
  • Se você tiver muitos subagentes e ferramentas, pode ficar complicado decidir qual agente tem acesso a quais dados ou APIs.
  • Os agentes podem ficar repassando tarefas indefinidamente entre si sem resolução, caso não sejam cuidadosamente controlados. Os riscos de loop infinito também existem na chamada de ferramentas por um único agente, mas as configurações com múltiplos agentes adicionam outra camada de complexidade à depuração.

Conselhos práticos

Se você precisa criar um sistema de agente personalizado, então a Databricks e os Agentes Personalizados são agnósticos a qualquer padrão que você escolha, facilitando a evolução dos padrões de design à medida que seu aplicativo cresce. Considere as seguintes práticas recomendadas para desenvolver sistemas de agente estáveis e de fácil manutenção:

  1. Comece pelo básico: Se você precisa apenas de uma cadeia simples, uma cadeia determinística é rápida de construir.
  2. Aumente a complexidade gradualmente: conforme você precisar de consultas mais dinâmicas ou de uma fonte de dados mais flexível, migre para um sistema de agente único com chamada de ferramentas. Se você tem domínios ou tarefas claramente distintos, múltiplos contextos de conversação ou um grande conjunto de ferramentas, então considere um sistema multiagente.
  3. Combinar padrões: Na prática, muitos sistemas de agentes do mundo real combinam padrões. Por exemplo, uma cadeia predominantemente determinística pode ter uma etapa na qual o LLM pode chamar dinamicamente determinadas APIs se necessário.

Orientações para o desenvolvimento

  • Instruções e ferramentas

    • Mantenha as instruções claras e concisas para evitar orientações contraditórias, informações que distraiam e reduzir alucinações.
    • Forneça apenas as ferramentas e o contexto que seu agente precisa, em vez de um conjunto ilimitado de APIs ou um contexto extenso e irrelevante. Escolha a sua abordagem de ferramentas durante o projeto.
  • Registro e observabilidade

    • Implemente o registro detalhado de cada solicitação de usuário, plano de agente e chamada de ferramenta usando o MLflow Tracing.
    • Armazene logs de forma segura e tenha cuidado com as informações de identificação pessoal (PII) nos dados de conversação. Considere a classificação de dados para automação.

Orientações para testes e iterações

  • Avaliação

  • Tratamento de erros e lógica fallback

    • Planeje para falhas de ferramentas ou do LLM. Tempos limite excedidos, respostas malformadas ou resultados vazios podem interromper um fluxo de trabalho. Inclua estratégias de repetição, lógica fallback ou uma cadeia fallback mais simples para quando os recursos avançados falharem.
  • Melhorias iterativas

    • Espere refinar os prompts e a lógica do agente ao longo do tempo. Alterações de versão usando o Registro de Prompts do MLflow para seus prompts. O controle de versões simplificará as operações e permitirá reversões e comparações.
    • Ao coletar dados de avaliação e definir métricas, considere métodos de otimização mais automatizados, como o MLflow Prompt Optimization.

Guia de produção

  • Atualizações de modelos e fixação de versões

    • Os comportamentos do LLM podem mudar quando os provedores atualizam os modelos nos bastidores. Utilize o controle de versão e testes de regressão frequentes para garantir que a lógica do seu agente permaneça robusta e estável.
  • Otimização de latência e custo

    • Cada chamada adicional de LLM ou ferramenta aumenta o uso de tokens e o tempo de resposta. Sempre que possível, combine os passos ou armazene em cache as consultas repetidas para manter o desempenho e o custo sob controle.
  • Segurança e sandbox

    • Se o seu agente puder atualizar registros ou código de execução, execute essas ações sandbox ou exija aprovação humana quando necessário. Isso é crucial em ambientes empresariais ou regulamentados para evitar danos não intencionais. As funções do Unity Catalog oferecem execução em ambiente isolado (sandbox) para produção.
    • Consulte a seção Ferramentas de agentesAI para obter mais orientações sobre as opções de ferramentas.

Seguindo essas diretrizes, você pode mitigar muitos dos modos de falha mais comuns, como erros de ferramentas, desempenho instável do LLM ou picos de custo inesperados, e construir sistemas de agentes mais confiáveis e escaláveis.