Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
O cliente faz um pedido: "Podem ajudar-me a devolver a minha última encomenda?"
- 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."
- 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.
-
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.
- Ação: O agente aciona o processo de devolução e gera uma etiqueta de envio.
- 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.
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 |
|
|
|
| Cadeia determinística |
|
|
|
| Sistema de agente único |
|
|
|
| Sistema multiagente |
|
|
|
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:
- sistemas de agentes de IA: Engenharia modular para aplicações de IA empresariais confiáveis
- A mudança de modelos para sistemas compostos de IA
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.
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:
- Recupere os resultados top-k de um índice vetorial para encontrar contexto relevante para um pedido de utilizador.
- Aumente um prompt combinando o pedido do utilizador com o contexto recuperado.
- Gera uma resposta enviando o prompt aumentado para um LLM.
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:
- Aceite solicitações como consultas de usuários e qualquer contexto relevante, como histórico de conversas.
- Pense na melhor forma de responder, decidindo opcionalmente se deve utilizar ferramentas para dados ou ações externas.
- 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.
- Integre os resultados das ferramentas na conversa.
- 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.
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.
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:
- Comece simples: Se você só precisa de uma cadeia direta, uma cadeia determinística é rápida de construir.
- 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.
- 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
- Utilize a Avaliação de Fluxo de Aprendizagem e a monitorização de produção para definir métricas de avaliação para desenvolvimento e produção.
- Recolha feedback humano de especialistas e utilizadores para garantir que as suas métricas de avaliação automáticas estão bem calibradas.
-
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
- Espera refinar os prompts e a lógica dos agentes ao longo do tempo. Alterações de versão usando o Registo de Prompts do MLflow para os seus prompts e o rastreio de versão de apps do MLflow para as suas aplicações. A versionagem simplificará as operações e permitirá reverter e comparar.
- À medida que recolhe dados de avaliação e define métricas, considere métodos de otimização mais automatizados, como o MLflow Prompt Optimization.
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.