Introdução aos agentes de IA (parte 1): Capturando processos, papéis e conexões

Para começar com agentes de IA, devemos primeiro identificar as diferenças entre agentes e modelos e definir papéis e requisitos de comunicação.

Um agente de IA moderno consiste, pelo menos, em um modelo de linguagem grande (LLM) que foi habilitado para chamar algumas ferramentas. Dado o conjunto certo de ferramentas para codificação, ele começaria gerando o código, seria capaz de executá-lo em um contêiner, observar os resultados, modificar o código e, portanto, ter uma chance maior de produzir código útil.

Por outro lado, um modelo de IA generativa pega alguma entrada e, através do processo de prever expectativas, produz uma saída. Por exemplo, damos a ele uma tarefa de codificação, ele produz algum código e, dependendo da complexidade da tarefa, o código pode ser utilizável como está.

À medida que assumem diferentes tarefas, os agentes devem ser autorizados a conversar entre si. Por exemplo, imagine a intranet da sua empresa com sua caixa de pesquisa útil direcionando você para os aplicativos e recursos de que precisa. Se você for uma empresa grande o suficiente, esses aplicativos, pertencentes a diferentes departamentos, têm suas próprias caixas de pesquisa. Faz muito sentido criar agentes, talvez usando técnicas como geração aumentada por recuperação (RAG), para aumentar as caixas de pesquisa. O que não faz sentido é forçar o usuário a repetir sua consulta uma vez que a caixa de pesquisa a identificou como útil, dada a consulta inicial. Em vez disso, preferiríamos que o agente principal coordenasse com outros agentes representando vários aplicativos e apresentasse uma interface de chat consolidada e unificada para você, o usuário.

Um sistema multiagente representando softwares ou diversos fluxos de trabalho de uma organização pode ter várias vantagens interessantes, incluindo produtividade e robustez melhoradas, resiliência operacional e a capacidade de realizar atualizações mais rápidas de diferentes módulos. Espero que este artigo ajude você a ver como isso é alcançado.

Mas primeiro, como devemos construir esses sistemas multiagente?

Capturando a organização e os papéis

Primeiro, devemos capturar os processos, papéis, nós responsáveis e conexões dos vários atores na organização. Por atores, quero dizer indivíduos e/ou aplicativos de software que atuam como trabalhadores do conhecimento dentro da organização.

Um organograma pode ser um bom lugar para começar, mas eu sugeriria começar com fluxos de trabalho, já que as mesmas pessoas dentro de uma organização tendem a atuar com diferentes processos e pessoas, dependendo dos fluxos de trabalho.

Existem ferramentas disponíveis que usam IA para ajudar a identificar fluxos de trabalho, ou você pode construir seu próprio modelo de IA generativa. Eu construí um como um GPT que pega a descrição de um domínio ou um nome de empresa e produz uma definição de rede de agentes. Como estou utilizando uma estrutura multiagente construída internamente em minha empresa, o GPT produz a rede como um arquivo Hocon, mas deve ser claro a partir dos arquivos gerados quais são os papéis e responsabilidades de cada agente e a que outros agentes ele está conectado.

Observe que queremos garantir que a rede de agentes seja um gráfico acíclico direcionado (DAG). Isso significa que nenhum agente pode se tornar simultaneamente descendente e ascendente em relação a qualquer outro agente, seja direta ou indiretamente. Isso reduz muito as chances de que as consultas na rede de agentes entrem em um ciclo sem fim.

Nos exemplos aqui descritos, todos os agentes são baseados em LLM. Se um nó na organização multiagente pode ter autonomia zero, então esse agente, emparelhado com seu correspondente humano, deve consultar o humano sobre tudo. Precisamos que todos os nós de processamento, sejam aplicativos, humanos ou agentes existentes, sejam representados como agentes.

Recentemente, houve muitos anúncios de empresas oferecendo agentes especializados. Claro que queremos utilizar tais agentes, se disponíveis. Podemos puxar um agente pré-existente e envolver sua API em um de nossos agentes para que possamos utilizar nossos protocolos de comunicação entre agentes. Isso significa que tais agentes de terceiros precisarão ter sua API disponível para que possamos usar.

Como definir agentes

Várias arquiteturas de agentes foram propostas no passado. Por exemplo, uma arquitetura de quadro negro requer um ponto centralizado de comunicação onde vários agentes declaram seus papéis e capacidades, e o quadro negro os chama dependendo de como planeja atender a uma solicitação (veja OAA).

Eu prefiro uma arquitetura mais distribuída que respeita a encapsulação de responsabilidades. Cada agente, ao receber uma solicitação, decide se pode processá-la ou não, e o que precisa fazer para processar a solicitação, então retorna sua lista de requisitos ao agente que solicitou. Se o agente tiver descendentes, ele pergunta a eles se podem ajudar a atender total ou parcialmente a solicitação. Se receber algum requisito dos descendentes contatados, ele verifica com outros agentes para ver se podem atendê-los; caso contrário, ele os envia para cima para que possam perguntar ao usuário humano. Essa arquitetura é chamada de arquitetura AAOSA e — um fato divertido — foi a arquitetura usada nas primeiras versões da Siri.

Aqui está um exemplo de prompt do sistema que pode ser usado para transformar um agente em um agente AAOSA. Quando você receber uma consulta, você:

Chamará suas ferramentas para determinar quais agentes descendentes em suas ferramentas são responsáveis por todo ou parte dela.

Perguntará aos agentes descendentes o que precisam para lidar com sua parte da consulta.

Uma vez que os requisitos sejam coletados, você delegará a consulta e os requisitos atendidos aos agentes descendentes apropriados.

Uma vez que todos os agentes descendentes respondam, você compilará suas respostas e retornará a resposta final.

Você pode, por sua vez, ser chamado por outros agentes no sistema e ter que atuar como descendente para eles.

Além do conjunto de papéis e responsabilidades definidos em linguagem natural no prompt do sistema de cada agente, os agentes podem ou não incluir ferramentas que podem chamar, com vários argumentos sendo passados para as ferramentas. Por exemplo, um agente de gerente de produto pode precisar ser capaz de processar vários tickets em um quadro Kanban virtual, ou um agente de alertas pode precisar chamar uma ferramenta para emitir alertas em um sistema de alertas.

Os sistemas multiagente atuais, como o Microsoft AutoGen, têm mecanismos de coordenação de agentes elaborados e muitas vezes codificados. Eu prefiro uma configuração mais robusta onde os agentes tratam seus agentes descendentes imediatos como ferramentas, com argumentos vagamente definidos que podem ser tipados, e a semântica decidida pelos agentes no momento da necessidade.

Nesta configuração, um agente descendente pode ser definido como uma chamada de função:

“aaosa_call”: {
“description”: “Dependendo do modo, retorna uma string em linguagem natural em resposta.”,
“parameters”: {
“type”: “object”,
“properties”: {
“inquiry”: {
“type”: “string”,
“description”: “A consulta”
},
“mode”: {
“type”: “string”,
“description”: “indica se o agente está sendo solicitado a determinar se a consulta pertence a ele em sua totalidade ou em parte. ou se está sendo solicitado a fornecer requisitos para atender a consulta, se houver. ou se está sendo solicitado a responder à consulta.”
}
},
“required”: [
“inquiry”,
“mode”
]
}
}

Agentes de IA na prática

Uma rede de agentes para a intranet de uma empresa.

Vamos explorar um cenário de agente de RH. Um usuário pode informar ao agente da caixa de pesquisa principal um evento que muda a vida, como “meu cônjuge faleceu,” acionando agentes legais e de RH que têm um papel a desempenhar no atendimento ao usuário. Isso ocorre porque eles, por sua vez, receberam informações de alguns de seus agentes descendentes, a saber, agentes de aconselhamento jurídico, folha de pagamento e benefícios. A resposta consolidada resultante que o usuário recebe do agente da caixa de pesquisa principal será assim:

Aspectos de RH:

O agente de benefícios pode ajudar o usuário a entender como o falecimento pode impactar benefícios, seguro de saúde e planos de aposentadoria. Você precisará fornecer informações sobre os tipos de planos envolvidos e se seu cônjuge era dependente.

O agente de folha de pagamento pode ajudar a gerenciar tarefas como atualizar deduções fiscais ou lidar com pagamento de licença por luto. Isso requer informações sobre as políticas da empresa em relação à licença por luto e a configuração atual da folha de pagamento.

Aspectos legais:

Agentes legais podem oferecer orientação geral sobre como esse falecimento deve se relacionar com os assuntos da empresa.

Cada departamento requer informações específicas para oferecer suporte personalizado.

Uma rede de agentes para uma operadora de telecomunicações com um negócio B2B.

Em um cenário de TI, por sua vez, o ponto de entrada único é o agente de atendimento ao cliente que pode lidar com solicitações complexas e multifacetadas como: “Nossa rede está lenta. Acho que está sobrecarregada, pois recentemente adicionamos pessoal ao nosso escritório. Também precisarei de um orçamento para uma atualização.”

Uma resposta de exemplo descreverá os passos:

Avaliação de desempenho da rede: O especialista do centro de operações de rede pode ajudar a abordar os problemas de lentidão e potencial sobrecarga. Eles precisam de acesso a dados de desempenho da rede, detalhes sobre a infraestrutura de rede atual, informações sobre o número de pessoal adicionado e seus padrões de uso da rede.

Um orçamento atualizado: O engenheiro de vendas e o técnico de campo podem ajudar a fornecer um orçamento para uma atualização. Para isso, eles precisam de:

Informações específicas sobre a configuração da rede atual, incluindo equipamentos e requisitos de largura de banda.
Melhorias de desempenho desejadas.
Restrições orçamentárias e quaisquer preferências ou requisitos específicos.
A escala da atualização e quaisquer metas de desempenho específicas.

Espero que isso tenha dado uma boa ideia do que é necessário para configurar uma rede multiagente. Na segunda parte, discutirei a importância de implementar salvaguardas ao criar sistemas multiagente e descreverei como construir controles que permitam a intervenção humana e verificações de incerteza. Também detalharei os passos necessários para criar um agente de salvaguarda para supervisionar a rede de agentes e aprofundarei os desafios de desenvolver redes multiagentes — como ciclos sem fim e sobrecargas — e como mitigá-los usando timeouts, divisão de tarefas e redundância.

Fonte

Compartilhe esse conteúdo: