Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os agentes GenAI combinam a inteligência de modelos GenAI com ferramentas para recuperação de dados, ações externas e outros recursos. Esta página aborda o design do agente:
- Um exemplo concreto de criação de um sistema de agentes ilustra a orquestração de como as chamadas de modelo e ferramenta fluem juntas.
- Os padrões de design para sistemas de agente formam um contínuo de complexidade e autonomia, desde cadeias determinísticas, até sistemas de agente único que podem tomar decisões dinâmicas, até arquiteturas de vários agentes que coordenam vários agentes especializados.
- Uma seção de conselhos práticos fornece conselhos sobre como escolher o design certo e sobre o desenvolvimento de agentes, testes e mudança para produção.
Os agentes dependem muito das ferramentas para coletar informações e realizar ações externas. Para obter mais informações sobre ferramentas, consulte Ferramentas.
Sistema de agente de exemplo
Para obter um exemplo concreto de um sistema de agente, considere um agente genai de call center interagindo com um cliente:
O cliente faz uma solicitação: "Você pode me ajudar a retornar meu último pedido?"
- 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 retorno".
- Localizar informações (inteligência de dados): o agente consulta o banco de dados de pedidos para recuperar a ordem 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, escalone para um humano.
- Ação: o agente dispara o processo de retorno e gera uma etiqueta de remessa.
- Motivo: o agente gera uma resposta ao cliente.
O agente de IA responde ao cliente: "Concluído! Aqui está sua etiqueta de remessa..."
Essas etapas são naturais em contexto de central de atendimento humano. Em um contexto de sistema de agente, o LLM "raciocina" enquanto o sistema utiliza ferramentas especializadas ou fontes de dados para preencher os detalhes.
Níveis de complexidade: de LLMs a sistemas de agente
Os aplicativos GenAI podem ser alimentados por uma variedade de sistemas, desde chamadas LLM simples até sistemas multiagente complexos. Ao criar qualquer aplicativo alimentado por IA, inicie simples. Introduza comportamentos agente mais complexos quando você realmente precisar deles para obter melhor flexibilidade ou decisões orientadas por modelos. Cadeias determinísticas oferecem fluxos previsíveis baseados em regras para tarefas bem definidas. Abordagens mais agente oferecem maior flexibilidade e potencial, mas vêm com o custo de complexidade extra e latência potencial.
| Padrão de design | Quando usar | Vantagens | Desvantagens |
|---|---|---|---|
| LLM + prompt |
|
|
|
| Cadeia determinística |
|
|
|
| Sistema de agente único |
|
|
|
| Sistema de vários agentes |
|
|
|
O Mosaic AI Agent Framework é independente desses padrões, tornando mais fácil começar simples e evoluir para níveis mais altos de automação e autonomia à medida que seus requisitos de aplicativo aumentam.
Para ler mais sobre a teoria por trás dos sistemas de agente, consulte postagens no blog dos fundadores do Databricks:
- Sistemas de agente de IA: Engenharia Modular para Aplicativos de IA Da Empresa Confiável
- A mudança de modelos para sistemas compostos de IA
LLM e prompt
O design mais simples conta com um LLM (Modelo de Linguagem Grande) autônomo ou outro modelo de GenAI que responde a solicitações com base no conhecimento de um vasto conjunto de dados de treinamento. Esse design é bom para consultas simples ou genéricas, mas geralmente é desconectado dos dados de negócios do mundo real. Você pode personalizar o comportamento fornecendo um prompt do sistema com suas instruções personalizadas ou dados inseridos.
Cadeia determinística (etapas codificadas em código)
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. A LLM não toma decisões sobre quais ferramentas chamar ou em que ordem. O sistema segue um fluxo de trabalho predefinido ou uma "cadeia" para todas as solicitações, tornando-o altamente previsível.
Por exemplo, uma cadeia de RAG (Geração Aumentada de Recuperação Determinística) pode sempre:
- Recupere os resultados top-k de um índice de vetor para localizar o contexto relevante para uma solicitação de usuário.
- Aumente um prompt combinando a solicitação do usuário com o contexto recuperado.
- Gere uma resposta enviando o prompt aumentado para um LLM.
Quando usar:
- Para tarefas bem definidas com fluxos de trabalho previsíveis.
- Quando consistência e auditoria são prioridades principais.
- Quando você quiser minimizar a latência, evite várias chamadas LLM para decisões de orquestração.
Vantagens:
- Maior previsibilidade e auditabilidade.
- Normalmente, latência mais reduzida (menos chamadas ao LLM na orquestração).
- Mais fácil de testar e validar.
Considerações:
- Flexibilidade limitada para lidar com solicitações diversas ou inesperadas.
- Pode se tornar complexo e difícil de manter à medida que as ramificações lógicas se expandem.
- Pode exigir refatoração significativa para acomodar as novas capacidades.
Sistema de agente único
Um sistema de agente único possui uma LLM que orquestra um fluxo coordenado de lógica. O LLM decide adaptávelmente quais ferramentas usar, quando fazer mais chamadas LLM e quando parar. Essa abordagem dá suporte a decisões dinâmicas e com reconhecimento de contexto.
Um sistema de agente único pode:
- Aceite solicitações como consultas de usuário e qualquer contexto relevante, como histórico de conversa.
- Raciocine sobre a melhor maneira de responder, decidindo opcionalmente se deve chamar ferramentas para dados externos ou ações.
- Itere se necessário, chamando uma LLM ou ferramentas repetidamente até que um objetivo seja alcançado ou até que uma determinada condição seja atendida, como receber dados válidos ou resolver um erro.
- Integrar os resultados das ferramentas à conversa.
- Retornar uma resposta coesa como saída.
Por exemplo, um agente assistente de suporte técnico pode se adaptar da seguinte maneira:
- Se o usuário fizer uma pergunta simples ("Qual é a nossa política de retorno?"), o agente poderá responder diretamente do conhecimento da LLM.
- Se o usuário quiser o status do pedido, o agente poderá chamar uma função
lookup_order(customer_id, order_id). Se essa ferramenta responder com "número de pedido inválido", o agente poderá tentar novamente ou solicitar ao usuário a ID correta, continuando até que possa fornecer uma resposta final.
Quando usar:
- Você espera consultas de usuário variadas, mas ainda dentro de um domínio coeso ou área do produto.
- Determinadas consultas ou condições podem justificar o uso da ferramenta, como decidir quando buscar dados do cliente.
- Você deseja mais flexibilidade do que uma cadeia determinística, mas não exige agentes especializados separados para tarefas diferentes.
Vantagens:
- O agente pode se adaptar a consultas novas ou inesperadas escolhendo quais (se houver) ferramentas para chamar.
- O agente pode executar um loop por meio de chamadas LLM repetidas ou invocações de ferramentas para refinar resultados sem precisar de uma configuração totalmente multi-agente.
- Esse padrão de design geralmente é o ponto ideal para casos de uso da empresa – mais simples de depurar do que as configurações de vários agentes, 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 ferramenta repetidas ou inválidas. Loops infinitos podem ocorrer em qualquer cenário de chamada de ferramenta, portanto, defina limites de iteração ou tempos limite.
- Se o aplicativo abrange subdomínios radicalmente diferentes (finanças, devops, marketing etc.), um único agente pode se tornar desordado ou sobrecarregado com requisitos de funcionalidade.
- Você ainda precisa de prompts e restrições cuidadosamente projetados para manter o agente focado e relevante.
- A agência é um continuum; quanto mais liberdade você dá aos modelos para controlar o comportamento do sistema, mais agente se torna o aplicativo. Na prática, a maioria dos sistemas de produção restringe cuidadosamente a autonomia do agente para garantir a conformidade e a previsibilidade, por exemplo, exigindo aprovação humana para ações arriscadas.
Sistema de vários agentes
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 solicitações para o agente apropriado ou decide quando entregar de um agente para outro. O supervisor pode ser outro LLM ou um roteador 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 de revisões
- Agente de suporte ao cliente: manipula comentários, retornos e envio
Quando usar:
- Você tem áreas problemáticas distintas ou conjuntos de habilidades, como um agente de codificação ou um agente financeiro.
- Cada agente precisa de acesso ao histórico de conversas ou indicadores específicos do domínio.
- Você tem tantas ferramentas que encaixar todas elas no esquema de um agente é impraticável; cada agente pode ter um subconjunto.
- Você deseja implementar a reflexão, a crítica ou a colaboração entre agentes especializados.
Vantagens:
- Essa abordagem modular significa que cada agente pode ser desenvolvido ou mantido por equipes separadas, especializadas em um domínio estreito.
- Pode lidar com fluxos de trabalho empresariais grandes e complexos que um único agente pode ter dificuldades para gerenciar de forma coesa.
- Facilita o raciocínio avançado de várias etapas ou de várias perspectivas , por exemplo, um agente gerando uma resposta, outro verificando-o.
Considerações:
- Requer uma estratégia para roteamento entre agentes, além de sobrecarga para registro em log, rastreamento e depuração em vários pontos de extremidade.
- Se você tiver muitos sub-agentes e ferramentas, pode ser complicado decidir qual agente tem acesso a quais dados ou APIs.
- Os agentes podem passar tarefas indefinidamente entre eles sem resolução, se não forem devidamente restringidas. Os riscos de loop infinito também existem no uso de ferramentas por um único agente, mas as configurações com vários agentes adicionam outra camada de complexidade de depuração.
Conselhos práticos
Se o caso de uso se ajustar a uma oferta do Agent Bricks , comece com essa opção guiada e mais simples.
Se você precisar criar um sistema de agente personalizado, o Azure Databricks e o Mosaic AI Agent Framework serão independentes de qualquer padrão que você escolher, facilitando a evolução dos padrões de design à medida que o aplicativo cresce. Considere as seguintes práticas recomendadas para desenvolver sistemas de agente estáveis e mantíveis.
- Inicie simples: Se você precisar apenas de uma cadeia simples, uma cadeia determinística será rápida de criar.
- Adicione gradualmente a complexidade: À medida que você precisa de consultas mais dinâmicas ou fontes de dados flexíveis, mova para um sistema de agente único com chamada de ferramenta. Se você tiver domínios ou tarefas claramente distintos, vários contextos de conversa ou um conjunto de ferramentas grande, considere um sistema de vários agentes.
- Combinar padrões: Na prática, muitos sistemas de agente do mundo real combinam padrões. Por exemplo, uma cadeia principalmente determinística pode ter uma etapa na qual o LLM pode chamar dinamicamente determinadas APIs, se necessário.
Diretrizes de desenvolvimento
-
Prompts e ferramentas
- Mantenha as solicitações claras e mínimas para evitar instruções contraditórias, informações distrativas e reduzir alucinações.
- Forneça apenas as ferramentas e o contexto que seu agente requer, em vez de um conjunto não associado de APIs ou um contexto irrelevante grande. Escolha sua abordagem de ferramenta durante o design.
-
Log e observabilidade
- Implemente o registro detalhado em log para cada requisição de usuário, plano de agente e chamada de ferramenta usando o MLflow Tracing.
- Armazene logs com segurança e esteja atento às PII (informações de identificação pessoal) nos dados da conversa. Considere a Classificação de Dados para automação.
Diretrizes de teste e iteração
-
Avaliação
- Use a Avaliação do MLflow e o monitoramento de produção para definir métricas de avaliação para desenvolvimento e produção.
- Reúna comentários humanos de especialistas e usuários para garantir que suas métricas de avaliação automatizadas estejam bem calibradas.
-
Tratamento de erros e lógica de fallback
- Planeje para falhas de ferramentas ou LLM. Tempos limite, respostas malformadas ou resultados vazios podem interromper um fluxo de trabalho. Inclua estratégias de repetição, lógica de fallback ou uma cadeia de fallback mais simples quando os recursos avançados falham.
-
Melhorias iterativas
- Espere refinar os comandos e a lógica do agente ao longo do tempo. Alterações de versão usando o Registro de Prompt do MLflow para seus prompts e rastreamento de versão do aplicativo MLflow para seus aplicativos. O versionamento simplificará as operações e permitirá reversões e comparações.
- À medida que você coleta dados de avaliação e define métricas, considere métodos de otimização mais automatizados, como a Otimização de Prompt de MLflow.
Diretrizes de produção
-
Atualizações de modelo e fixação de versão
- Os comportamentos de LLM podem mudar quando os provedores atualizam modelos nos bastidores. Use testes de fixação de versão e regressão frequentes para garantir que a lógica do agente permaneça robusta e estável.
-
Latência e otimização de custo
- Cada LLM adicional ou chamada de ferramentas aumenta o uso de tokens e o tempo de resposta. Sempre que possível, combine etapas ou armazene consultas repetidas em cache para manter o desempenho e o custo gerenciáveis.
-
Segurança e área restrita
- Se o agente puder atualizar registros ou executar código, isole essas ações ou exija 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 do Unity fornecem execução em área restrita para produção.
- Consulte Escolher sua abordagem de ferramenta para obter mais diretrizes sobre as opções de ferramenta.
Seguindo essas diretrizes, você pode atenuar muitos dos modos de falha mais comuns, como chamadas incorretas de ferramenta, desempenho de LLM em descompasso ou picos de custos inesperados e criar sistemas de agente mais confiáveis e escalonáveis.