Partilhar via


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 capacidades. Esta página explica o design dos agentes:

  • Um exemplo concreto de construção de um sistema de agentes ilustra a forma como as chamadas de modelo e ferramenta fluem em conjunto.
  • Padrões de design 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 multi-agente que coordenam múltiplos agentes especializados.
  • Uma secção de conselhos práticos dá conselhos sobre como escolher o design certo, desenvolver agentes, testar e passar para produção.

Os agentes dependem fortemente de ferramentas para recolher informação e tomar ações externas. Para mais informações sobre ferramentas, consulte Ferramentas.

Sistema de agentes exemplo

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

Fluxograma da interação do cliente com a aplicação GenAI.

O cliente faz um pedido: "Podem ajudar-me a devolver a minha última encomenda?"

  1. Motivo e plano: Dada a intenção da consulta, o agente "planeja": "Procure o pedido recente do usuário e verifique nossa política de devolução."
  2. Localizar informações (inteligência de dados): O agente consulta o banco de dados de pedidos para recuperar o pedido relevante e faz referência a um documento de política.
  3. Motivo: o agente verifica se essa ordem se encaixa na janela de retorno.
    • Human-in-the-loop opcional: O agente verifica uma regra adicional: se o item se enquadrar em uma determinada categoria ou estiver fora da janela de retorno normal, escale para um humano.
  4. Ação: O agente aciona o processo de devolução e gera uma etiqueta de envio.
  5. Motivo: O agente gera uma resposta ao cliente.

O agente de IA responde ao cliente: "Feito! Aqui está a sua etiqueta de envio..."

Essas etapas são de segunda natureza num contexto de call center humano. No contexto de um sistema agente , o LLM "raciocina" enquanto o sistema recorre a ferramentas especializadas ou fontes de dados para preencher os detalhes.

Ferramentas e fontes de dados que o sistema de agente usa.

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

As aplicações GenAI podem ser alimentadas por uma variedade de sistemas, desde chamadas simples de LLM até sistemas complexos multi-agente. Ao construir qualquer aplicação alimentada por IA, comece de forma simples. Introduza comportamentos agenticos mais complexos quando realmente precisar deles para uma melhor flexibilidade ou decisões orientadas por modelos. Cadeias determinísticas oferecem fluxos previsíveis baseados em regras para tarefas bem definidas. Abordagens mais agenciais oferecem maior flexibilidade e potencial, mas têm o custo de maior complexidade e potencial 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
  • Tarefas bem definidas
  • As linhas de processamento estáticas, como o RAG básico
  • Sem necessidade de decisões imediatas
  • Simple
  • Fácil de auditar
  • Inflexível
  • Requer alterações de código para se adaptar
Sistema de agente único
  • Consultas de complexidade moderada a complexa no mesmo domínio
  • Algumas decisões dinâmicas sem a sobrecarga de múltiplos agentes especializados
  • Flexível
  • Mais simples do que sistemas multiagente
  • Bom "padrão"
  • Menos previsível
  • Deve proteger contra chamadas de ferramentas repetidas ou incorretas
Sistema multiagente
  • Domínios grandes ou multifuncionais
  • Múltiplos agentes "especialistas", com lógica ou contextos de conversa distintos
  • Altamente modular
  • Escalar para grandes domínios
  • Complexo de orquestrar
  • Mais difícil de rastrear e depurar

Mosaic AI Agent Framework é independente desses padrões, tornando fácil 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 crescem.

Para saber mais sobre a teoria por trás dos sistemas agente, consulte os artigos de blogue dos fundadores da Databricks:

LLM e prompt

O design mais simples tem um LLM autónomo ou outro modelo GenAI que responde a incitamentos com base no conhecimento de um vasto conjunto de dados de treino. Este design é bom para consultas simples ou genéricas, mas muitas vezes está desligado dos dados reais do seu negócio. Pode personalizar o comportamento fornecendo um prompt do sistema com instruções personalizadas ou dados incorporados.

LLM respondem aos utilizadores

Cadeia determinística (passos codificados)

Cadeias determinísticas complementam modelos GenAI com chamadas de ferramentas, mas o programador define quais as ferramentas ou modelos que são chamados, em que ordem e com que parâmetros. O LLM não toma decisões sobre que ferramentas chamar ou em que ordem. O sistema segue um fluxo de trabalho pré-definido ou "cadeia" para todos os pedidos, tornando-o altamente previsível.

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

  1. Recupere os resultados top-k de um índice vetorial para encontrar contexto relevante para um pedido de utilizador.
  2. Aumente um prompt combinando o pedido do utilizador com o contexto recuperado.
  3. Gera uma resposta enviando o prompt aumentado para um LLM.

Diagrama de uma cadeia RAG básica

Quando usar:

  • Para tarefas bem definidas com fluxos de trabalho previsíveis.
  • Quando a coerência e a auditoria são as principais prioridades.
  • Quando se pretende minimizar a latência, evitando múltiplas chamadas LLM para decisões de orquestração.

Vantagens:

  • Maior 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 os ramos lógicos crescem.
  • Pode exigir uma refatoração significativa para acomodar novas capacidades.

Sistema de agente único

Um sistema de agente único tem um LLM que orquestra um fluxo coordenado de lógica. O LLM decide de forma adaptativa quais ferramentas utilizar, quando efetuar mais chamadas ao LLM, e quando parar. Esta abordagem apoia decisões dinâmicas e conscientes do contexto.

Um sistema de agente único pode:

  1. Aceite solicitações como consultas de usuários e qualquer contexto relevante, como histórico de conversas.
  2. Pense na melhor forma de responder, decidindo opcionalmente se deve utilizar ferramentas para dados ou ações externas.
  3. Iterar se necessário, chamando repetidamente um LLM ou ferramentas até que um objetivo seja alcançado ou uma certa condição seja cumprida, como receber dados válidos ou resolver um erro.
  4. Integre os resultados das ferramentas na conversa.
  5. Devolver uma resposta coesa como saída.

Por exemplo, um agente de assistente de help desk pode adaptar-se da seguinte forma:

  • Se o utilizador fizer uma pergunta simples ("Qual é a nossa política de devoluções?"), o agente pode responder diretamente do conhecimento do LLM.
  • Se o utilizador quiser o estado da sua encomenda, o agente pode chamar uma função lookup_order(customer_id, order_id). Se essa ferramenta responder com "número de encomenda inválido", o agente pode tentar novamente ou pedir ao utilizador o ID correto, continuando até fornecer uma resposta final.

Os agentes de IA racionalizam um plano e executam-no com ferramentas.

Quando usar:

  • Você espera consultas de usuários variadas, mas ainda dentro de um domínio ou área de produto coesa.
  • Certas consultas ou condições podem justificar a utilização de ferramentas, como decidir quando recolher os dados do cliente.
  • Você quer mais flexibilidade do que uma cadeia determinística, mas não requer agentes especializados separados para tarefas diferentes.

Vantagens:

  • O agente pode adaptar-se a consultas novas ou inesperadas, escolhendo quais ferramentas (se houver) chamar.
  • O agente pode percorrer chamadas LLM repetidas ou invocações de ferramentas para refinar os resultados - sem a necessidade de uma configuração com múltiplos agentes.
  • Esse padrão de design geralmente é o ponto ideal para casos de uso corporativos - mais simples de depurar do que configurações multiagentes, ao mesmo tempo em 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 ferramenta, por isso é importante definir limites de iteração ou limites de tempo.
  • Se a sua aplicação abranger subdomínios radicalmente diferentes (finanças, devops, marketing, etc.), um único agente pode tornar-se ineficiente ou sobrecarregado por uma sobrecarga de requisitos funcionais.
  • Ainda precisa de instruções e restrições cuidadosamente projetadas para manter o agente focado e pertinente.
  • A agência é um contínuo; quanto mais liberdade se fornecer aos modelos para controlar o comportamento do sistema, mais autónomo o aplicativo se torna. Na prática, a maioria dos sistemas de produção restringe cuidadosamente a autonomia do agente para garantir conformidade e previsibilidade, por exemplo, exigindo aprovação humana para ações arriscadas.

Sistema multiagente

Um sistema multi-agente envolve dois ou mais agentes especializados que trocam mensagens ou colaboram em tarefas. Cada agente tem seu próprio domínio ou experiência de tarefa, contexto e conjuntos de ferramentas potencialmente distintos. Um "coordenador" ou "supervisor de IA" separado direciona os pedidos para o agente apropriado, ou decide quando passar de um agente para outro. O supervisor pode ser outro LLM ou um router baseado em regras.

Um coordenador gerencia vários agentes de IA.

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

  • Assistente de compras: Ajuda os clientes a procurar produtos e fornece conselhos sobre prós e contras a partir de avaliações
  • Agente de apoio ao cliente: Trata de feedback, devoluções e envios

Quando usar:

  • Você tem áreas problemáticas ou conjuntos de habilidades distintos, como um agente de codificação ou um agente financeiro.
  • Cada agente precisa ter acesso ao histórico de conversas ou prompts específicos do domínio.
  • Você tem tantas ferramentas que encaixá-las todas no esquema de um agente é impraticável; Cada agente pode possuir um subconjunto.
  • Você quer implementar reflexão, crítica ou colaboração entre agentes especializados.

Vantagens:

  • Esta abordagem modular significa que cada agente pode ser desenvolvido ou mantido por equipas separadas, especializadas num domínio restrito.
  • É capaz de lidar com fluxos de trabalho empresariais grandes e complexos que um único agente pode ter dificuldade em gerir de forma coesa.
  • Facilita o raciocínio avançado em várias etapas ou multiperspectivas - por exemplo, um agente gerando uma resposta, outro verificando-a.

Considerações:

  • Requer uma estratégia para redeamento entre os diferentes agentes, além de carga adicional para registo, rastreamento e depuração em vários endpoints.
  • Se você tiver muitos subagentes e ferramentas, pode ficar complicado decidir qual agente tem acesso a quais dados ou APIs.
  • Os agentes podem trocar tarefas indefinidamente entre si sem resolução, se não forem cuidadosamente limitados. Riscos de loops infinitos também existem em chamadas de ferramenta de agente único, mas configurações multi-agente adicionam uma camada extra de complexidade na depuração.

Conselho prático

Se o seu caso de uso se enquadra numa oferta do Agent Bricks , então comece por essa opção guiada e mais simples.

Se precisas de construir um sistema de agentes personalizados, então o Azure Databricks e o Mosaic AI Agent Framework são agnósticos em relação ao padrão que escolheres, facilitando a evolução de padrões de design à medida que a tua aplicação cresce. Considere as seguintes boas práticas para desenvolver sistemas de agentes estáveis e mantiáveis:

  1. Comece simples: Se você só precisa de uma cadeia direta, uma cadeia determinística é rápida de construir.
  2. Adicione complexidade gradualmente: À medida que você precisar de consultas mais dinâmicas ou fontes de dados flexíveis, mude para um sistema de agente único com chamada de ferramentas. Se tem domínios ou tarefas claramente distintas, múltiplos contextos de conversa ou um grande conjunto de ferramentas, então considere um sistema multi-agente.
  3. Combinar padrões: Na prática, muitos sistemas de agentes do mundo real combinam padrões. Por exemplo, uma cadeia maioritariamente determinística pode ter uma etapa em que o LLM pode chamar dinamicamente certas APIs, se necessário.

Orientações para o desenvolvimento

  • Prompts e ferramentas
    • Mantenha as instruções claras e mínimas para evitar instruções contraditórias, informações que distraiam e reduzir alucinações.
    • Forneça apenas as ferramentas e o contexto que seu agente exige, em vez de um conjunto ilimitado de APIs ou um grande contexto irrelevante. Escolha a abordagem da sua ferramenta durante o design.
  • Registo e observabilidade
    • Implemente registos detalhados para cada pedido de utilizador, plano de agente e chamada de ferramenta usando MLflow Tracing.
    • Armazene registros com segurança e esteja atento às informações de identificação pessoal (PII) nos dados da conversa. Considere a Classificação de Dados para automação.

Diretrizes de teste e iteração

  • Avaliação
  • Gestão de erros e lógica de recuo
    • Planeje falhas de ferramentas ou LLM. Tempos limites, respostas malformadas ou resultados vazios podem interromper um fluxo de trabalho. Inclua estratégias de repetição, lógica de recuperação, ou uma cadeia de recuperação mais simples quando os recursos avançados falharem.
  • Melhorias iterativas

Orientação de produção

  • Atualizações de modelos e fixação de versões
    • Os comportamentos de LLM podem mudar quando os provedores atualizam modelos nos bastidores. Use a fixação de versão e testes de regressão frequentes para garantir que a lógica do agente permaneça robusta e estável.
  • Latência e otimização de custos
    • Cada LLM adicional ou chamada para uma ferramenta aumenta o uso de tokens e o tempo de resposta. Sempre que possível, combine etapas ou armazene em cache consultas repetidas para manter o desempenho e o custo gerenciáveis.
  • Segurança e isolamento
    • Se o seu agente puder atualizar registos ou executar código, isole essas ações ou imponha a aprovação humana quando necessário. Isso é fundamental em ambientes corporativos ou regulamentados para evitar danos não intencionais. As funções do Catálogo Unity fornecem execução sandbox para produção.
    • Consulte Escolha a abordagem da sua ferramenta para mais orientações sobre opções de ferramentas.

Seguindo essas diretrizes, você pode mitigar muitos dos modos de falha mais comuns, como chamadas incorretas de ferramentas, desempenho de LLM à deriva ou picos de custos inesperados, e criar sistemas de agentes mais confiáveis e escaláveis.