Skip to content

RAG e Agentes – Parte 2

Daremos continuidade ao nosso artigo de RAG e Agentes, detalhando os Agentes e Memória.

Agentes

Visão geral do agente

Um agente é qualquer coisa que possa perceber seu ambiente e agir sobre esse ambiente. Isso significa que um agente é caracterizado pelo ambiente em que opera e o conjunto de ações que pode executar.

O ambiente em que um agente pode operar é definido por seu caso de uso. Se você deseja que um agente colete documentos da Internet, o ambiente é a internet.

O conjunto de ações que um agente de IA pode executar é aumentado pelas ferramentas às quais tem acesso. Chatgpt é um agente. Pode pesquisar na web, executar código Python e gerar imagens. Os sistemas de RAG são agentes, e os retrievers de texto, os retrievers de imagem e os executores do SQL são suas ferramentas. Há uma forte dependência entre o ambiente de um agente e seu conjunto de ferramentas. O ambiente determina quais ferramentas um agente pode potencialmente usar.

Um agente de IA deve realizar tarefas normalmente fornecidas pelos usuários nas entradas. Em um agente de IA, a IA é o cérebro que processa o informações que ele recebe, incluindo a tarefa e feedback do ambiente, planeja uma sequência de ações para realizar esta tarefa e determina se a tarefa foi realizada.

Os agentes normalmente exigem modelos mais poderosos por dois motivos:

  • Erros complexos: um agente frequentemente precisa executar várias etapas para concluir uma tarefa, e a precisão geral diminui à medida que o número de etapas aumenta.
  • Riscos maiores: com acesso a ferramentas, os agentes são capazes de executar tarefas mais impactantes, mas qualquer falha pode ter consequências mais graves.

Uma tarefa que requer muitas etapas pode levar tempo e dinheiro para executar. No entanto, se os agentes podem ser autônomos, eles podem economizar muito tempo humano, fazendo com que seus custos valham a pena.

Ferramentas

Um sistema não precisa de acesso a ferramentas externas para ser um agente. No entanto, sem ferramentas externas, os recursos do agente seriam limitados.

O conjunto de ferramentas a que um agente tem acesso é seu inventário de ferramentas. Como o inventário de ferramentas de um agente determina o que um agente pode fazer, é importante pensar no que e em quantas ferramentas dar a um agente. Mais ferramentas oferecem a um agente mais recursos. No entanto, quanto mais ferramentas existem, mais desafiador é entendê-las e utilizá-las bem.

Aqui estão três categorias de ferramentas que você pode querer considerar: aumento do conhecimento (ou seja, construção de contexto), extensão de capacidade, e ferramentas que permitem que seu agente aja em seu ambiente.

Aumento do conhecimento

Muitas dessas ferramentas aumentam um modelo com os processos e informações privados da sua organização. No entanto, as ferramentas também podem dar aos modelos acesso a informações públicas, especialmente da Internet.

A navegação na web estava entre os recursos mais antigos e esperados a serem incorporados em chatbots como o ChatGPT. A navegação na web impede um modelo de ficar obsoleto. Um modelo fica obsoleto quando os dados em que foram treinados ficam desatualizados.

A ideia de “navegação na web” cobre todas as ferramentas que acessam a Internet, incluindo navegadores da web e s APIs específicas, como APIs de pesquisa, APIs de notícias, APIs do GitHub ou APIs de mídia social

Extensão da capacidade

Por exemplo, os modelos de IA são notórios por serem ruins em matemática. Em vez de tentar treinar o modelo para ser bom em aritmética, é muito mais eficiente o modelo acessar uma ferramenta.

Ferramentas mais complexas, mas poderosas, são intérpretes de código. Em vez de treinar um modelo para entender o código, você pode dar acesso a um interpretador de código para que possa executar uma parte do código, retornar os resultados ou analisar as falhas do código.

O uso da ferramenta pode aumentar significativamente o desempenho de um modelo em comparação ao prompt ou finetuning. Um agente GPT-4, aumentado com um conjunto de 13 ferramentas, pode superar o GPT-4 sozinho em vários benchmarks. As ferramentas utilizadas por esse agente incluem a recuperação do conhecimento, um gerador de consultas, um legendador de imagem, um detector de texto e pesquisa do Bing.

Ações de escrita

As ferramentas também podem executar ações de gravação, fazendo alterações nas fontes de dados. Um executor do SQL pode recuperar uma tabela de dados (leitura), mas também pode alterar ou excluir a tabela (escrita). Uma API de email pode ler um email, mas também pode responder a ele.

No entanto, a perspectiva de dar à IA a capacidade de alterar automaticamente nossas vidas é assustadora. Assim como você não deve dar a um estagiário a autoridade para excluir seu banco de dados de produção, você não deve permitir que uma IA não confiável inicie transferências bancárias. Confiar nas capacidades do sistema e em suas medidas de segurança é crucial. Você precisa garantir que o sistema esteja protegido de maus atores que podem tentar manipulá-lo para executar ações prejudiciais

Planejamento

No coração de um agente está o modelo responsável por resolver uma tarefa. Uma tarefa é definida por seu objetivo e restrições. Por exemplo, uma tarefa é agendar uma viagem de duas semanas de São Francisco à Índia, com um orçamento de US $ 5.000. O objetivo é a viagem de duas semanas. A restrição é o orçamento.

Tarefas complexas exigem planejamento. A saída do processo de planejamento é um plano, que é um roteiro que descreve as etapas necessárias para realizar uma tarefa. O planejamento eficaz normalmente exige que o modelo compreenda a tarefa, considere diferentes opções para realizar esta tarefa e escolha a mais promissora.

Visão geral do planejamento

Para evitar a execução infrutífera, o planejamento deve ser dissociado da execução. Você pede ao agente que primeiro gere um plano e somente depois de sua validação, este plano é executado. O plano pode ser validado usando heurísticas. Por exemplo, uma heurística simples é eliminar planos com ações inválidas. Se o plano gerado exigir uma pesquisa no Google e o agente não tiver acesso à pesquisa do Google, esse plano será inválido. Outra simples heurística pode ser eliminar todos os planos com mais do que x etapas.

Seu sistema agora tem três componentes: um para gerar planos, um para validar planos e outro para executar planos. Se você considerar cada componente como um agente, este é um sistema multi-agente.

O planejamento requer a compreensão da intenção por trás de uma tarefa: o que o usuário está tentando fazer com essa consulta? Um classificador de intenção é frequentemente usado para ajudar os agentes a planejar. A classificação de intenção pode ser feita usando outro prompt ou um modelo de classificação treinado para esta tarefa. O mecanismo de classificação de intenções pode ser considerado outro agente em seu sistema multi-agente.

Para resumir, resolver uma tarefa normalmente envolve os processos a seguir. Observe que a reflexão não é obrigatória para um agente, mas irá aumentar significativamente o desempenho do agente:

  • Geração do plano: crie um plano para realizar esta tarefa. Um plano é uma sequência de ações gerenciáveis, então esse processo também é chamado de decomposição de tarefas.
  • Reflexão e correção de erros: Avalie o plano gerado. Se for um plano ruim, gere um novo.
  • Execução: Tome as ações descritas no plano gerado. Isso geralmente envolve chamar funções específicas.
  • Reflexão e correção de erros: Ao receber os resultados da ação, avalie esses resultados e determine se o objetivo foi atendido. Identifique e corrija os erros. Se o objetivo não foi concluído, gere um novo plano.

Geração de planos

A maneira mais simples de transformar um modelo em um gerador de plano é com engenharia de prompt.

As técnicas para melhorar o desempenho de um modelo em geral podem ser usadas para melhorar os recursos de planejamento de um modelo. Aqui estão algumas abordagens para melhorar um agente no planejamento:

  • Escreva um prompt de sistema melhor com mais exemplos.
  • Descreva melhor as ferramentas e seus parâmetros para que o modelo os compreenda melhor.
  • Reescreva as funções em si para torná-las mais simples, como refatorar uma função complexa em duas funções mais simples.
  • Use um modelo mais robusto. Em geral, modelos robustos são melhores em planejamento.
  • Ajuste (finetuning) um modelo para geração de planos.

Chamada de função

Muitos provedores de modelos oferecem uso de ferramentas para seus modelos, transformando efetivamente seus modelos em agentes. Uma ferramenta é uma função. Invocar uma ferramenta é, portanto, geralmente chamado de chamado de função. Diferentes APIs de modelo funcionam de maneira diferente, mas em geral, a chamada de função funciona da seguinte forma:

  1. Crie um inventário de ferramentas: declare todas as ferramentas que você deseja que um modelo utilize.
  2. Especifique quais ferramentas o agente pode utilizar: como consultas diferentes podem exigir ferramentas diferentes, muitas APIs permitem especificar uma lista de ferramentas declaradas a serem utilizadas por consulta.

Planejando granularidade

Um plano é um roteiro que descreve as etapas necessárias para realizar uma tarefa. Um roteiro pode ser de diferentes níveis de granularidade. Para planejar por um ano, um plano de trimestre por trimestre é de nível superior a um plano mês a mês, que é, por sua vez, de nível superior a um plano semana a semana.

Há uma troca de planejamento/execução. Um plano detalhado é mais difícil de gerar, mas mais fácil de executar. Um plano de nível superior é mais fácil de gerar, mas mais difícil de executar. Uma abordagem para contornar essa troca é planejar hierarquicamente. Primeiro, use um planejador para gerar um plano de alto nível, como um plano de trimestre a trimestre. Então, para cada trimestre, use o mesmo planejador ou um plano diferente para gerar um plano mês a mês.

Planos complexos

A ordem em que as ações podem ser executadas é chamada de fluxo de controle. A forma seqüencial é apenas um tipo de fluxo de controle. Outros tipos de fluxo de controle incluem a instrução paralelas, do tipo “if” e “for loop”.

  • Sequencial: Execução da Tarefa B após a conclusão da Tarefa A, provavelmente porque a Tarefa B depende da Tarefa A.
  • Paralelo: executando as tarefas A e B ao mesmo tempo.
  • Instrução “If”: executando a tarefa B ou a Tarefa C, dependendo da saída da etapa anterior.
  • “For loop”: repita a tarefa de execução A até que uma condição específica seja atendida.

Reflexão e correção de erros

A reflexão pode ser útil em muitos lugares durante um processo de tarefa:

  • Depois de receber uma consulta de usuário para avaliar se a solicitação é viável.
  • Após a geração de plano inicial, para avaliar se o plano faz sentido.
  • Após cada etapa da execução para avaliar se está no caminho certo.
  • Após a execução de todo o plano para avaliar se a tarefa foi concluída.

Reflexão e correção de erros são dois mecanismos diferentes que andam de mãos dadas. A reflexão gera insights que ajudam a descobrir erros a serem corrigidos.

A reflexão pode ser feita com o mesmo agente usando prompts autocriticos. Também pode ser feito com um componente separado, como um marcador especializado:um modelo que gera uma pontuação concreta para cada resultado.

O raciocínio e a ação de intercalação se tornaram um padrão comum para os agentes. Usou-se o termo “raciocínio” para abranger planejamento e reflexão. A cada etapa, o agente é solicitado a explicar seu pensamento (planejamento), tomar ações, e então analisar as observações (reflexão), até que a tarefa seja considerada finalizada pelo agente.

Comparado à geração de planos, a reflexão é relativamente fácil de implementar e pode trazer uma melhoria surpreendentemente boa de desempenho. A desvantagem dessa abordagem é latência e custo. Pensamentos, observações e às vezes ações podem levar muitos tokens para gerar, o que aumenta o custo e a latência percebida pelo usuário, especialmente para tarefas com muitas etapas intermediárias.

Seleção de ferramentas

Mais ferramentas oferecem ao agente mais recursos. No entanto, quanto mais ferramentas existem, mais difícil é usá-las com eficiência. É semelhante a como é mais difícil para os humanos dominar um grande conjunto de ferramentas. Adicionar ferramentas também significa aumentar as descrições de ferramentas, que podem não se encaixar no contexto do modelo.

Como muitas outras decisões ao criar aplicativos de IA, a seleção de ferramentas requer experimentação e análise. Aqui estão algumas coisas que você pode fazer para ajudá-lo a decidir:

  • Compare como um agente executa com diferentes conjuntos de ferramentas.
  • Faça um estudo de remoção para ver quanto o desempenho do agente cai se uma ferramenta for removida de seu inventário.
  • Procure ferramentas em que o agente freqüentemente cometa erros. Se uma ferramenta é muito difícil para o agente usar.
  • Plote a distribuição das chamadas de ferramentas para ver quais ferramentas são mais usadas e quais ferramentas são menos usadas.

Modos de falha do agente e avaliação

Avaliação é sobre detectar falhas. Quanto mais complexa uma tarefa executa um agente, mais pontos de falha possíveis existem.

Para avaliar um agente, identifique seus modos de falha e meça com que frequência cada um desses modos de falha acontece.

Falhas de planejamento

O planejamento é difícil e pode falhar de várias maneiras. O modo mais comum de falha de planejamento é a falha do uso da ferramenta. O agente pode gerar um plano
com um ou mais desses erros:

  • Ferramentas inválidas
  • Ferramentas válidas, parâmetros inválidos
  • Ferramentas válidas, valores de parâmetros incorretos

Outro modo de falha de planejamento é a falha de metas: o agente não atinge a meta. Pode ocorrer porque o plano não resolve uma tarefa, ou resolve a tarefa sem respeitar as restrições.

Falhas da ferramenta

As falhas da ferramenta acontecem quando a ferramenta correta é usada, mas a saída da ferramenta está errada. Um modo de falha é quando uma ferramenta apenas fornece as saídas erradas.

Se o agente gerar apenas planos de alto nível e um módulo de tradução estiver envolvido na tradução de cada ação planejada para comandos executáveis, falhas podem acontecer por causa de erros de tradução.

As falhas da ferramenta também podem acontecer porque o agente não tem acesso às ferramentas certas para a tarefa. As falhas da ferramenta são dependentes da ferramenta. Cada ferramenta precisa ser testada de forma independente.

Detectar falhas de ferramenta ausentes requer uma compreensão de quais ferramentas devem ser usadas. Se seu agente frequentemente falhar em um domínio específico, a causa pode ser a falta de ferramentas para esse domínio.

Eficiência

Um agente pode gerar um plano válido usando as ferramentas certas para realizar uma tarefa, mas pode ser ineficiente. Aqui estão algumas coisas que você pode querer rastrear para avaliar a eficiência de um agente:

  • Quantas etapas o agente precisa, em média, para concluir uma tarefa?
  • Quanto custa, em média, para o agente concluir uma tarefa?
  • Quanto tempo cada ação normalmente leva?

Você pode comparar essas métricas com sua linha de base, que pode ser outro agente ou um operador humano.

Memória

A memória refere-se a mecanismos que permitem que um modelo mantenha e utilize informações. Um sistema de memória é especialmente útil para aplicações ricas em conhecimento, como RAG e aplicações em várias etapas, como agentes. Um sistema de RAG depende da memória para seu contexto aumentado, que pode crescer múltiplas vezes enquanto recupera mais informações. Um sistema agêntico precisa de memória para armazenar instruções, exemplos, contexto, inventários de ferramentas, planos, saídas de ferramentas, reflexões e muito mais.

Um modelo de IA normalmente possui três mecanismos principais de memória:

  • Conhecimento interno: O próprio modelo é um mecanismo de memória, pois retém o conhecimento dos dados com os quais foi treinado. Esse conhecimento é seu conhecimento interno. O conhecimento interno de um modelo não muda, a menos que o próprio modelo seja atualizado. O modelo pode acessar esse conhecimento em todas as consultas.
  • Memória de curto prazo: O contexto de um modelo é um mecanismo de memória. Mensagens anteriores em uma conversa podem ser adicionadas ao contexto do modelo, permitindo que o modelo as utilize para gerar respostas futuras. O contexto de um modelo pode ser considerado sua memória de curto prazo, pois não persiste entre tarefas (consultas). É de acesso rápido, mas sua capacidade é limitada. Portanto, é frequentemente usado para armazenar informações mais importantes para a tarefa atual.
  • Memória de longo prazo: Fontes de dados externas que um modelo pode acessar por meio de recuperação, como em um sistema RAG, são um mecanismo de memória. Isso pode ser considerado a memória de longo prazo do modelo, pois pode ser persistida entre tarefas. Ao contrário do conhecimento interno de um modelo, as informações na memória de longo prazo podem ser excluídas sem atualizar o modelo.

Qual mecanismo de memória usar para seus dados depende de sua frequência de uso. Informações essenciais para todas as tarefas devem ser incorporadas no conhecimento interno do modelo por meio de treinamento ou finetuning. As informações raramente necessárias devem residir em sua memória de longo prazo. A memória de curto prazo é reservada para informações imediatas e específicas do contexto.

Aumentar um modelo de IA com um sistema de memória tem muitos benefícios. Aqui estão apenas alguns deles:

  • Gerenciar o excesso de informações dentro de uma sessão
  • Persistir as informações entre as sessões
  • Aumentar a consistência do modelo
  • Manter a integridade estrutural dos dados

Um sistema de memória para modelos de IA normalmente consiste em duas funções:

  • Gerenciamento de memória: gerenciar quais informações devem ser armazenadas na memória de curto e longo prazo.
  • Recuperação de memória: recuperar informações relevantes para a tarefa da memória de longo prazo.

A recuperação de memória é semelhante à recuperação RAG, visto que a memória de longo prazo é uma fonte de dados externa. O gerenciamento de memória normalmente consiste em duas operações: adicionar e excluir memória. Se o armazenamento de memória for limitado, a exclusão pode não ser necessária. Isso pode funcionar para a memória de longo prazo, pois o armazenamento de memória externa é relativamente barato e facilmente extensível. No entanto, a memória de curto prazo é limitada pelo comprimento máximo do contexto do modelo e, portanto, requer uma estratégia sobre o que adicionar e o que excluir.

A memória de longo prazo pode ser usada para armazenar o excesso da memória de curto prazo. Essa operação depende de quanto espaço você deseja alocar para a memória de curto prazo. Para uma determinada consulta, o contexto inserido no modelo consiste tanto na memória de curto prazo quanto nas informações recuperadas da memória de longo prazo. A capacidade de curto prazo de um modelo é, portanto, determinada pela quantidade de contexto que deve ser alocada para as informações recuperadas da memória de longo prazo. Por exemplo, se 30% do contexto for reservado, o modelo poderá usar no máximo 70% do limite de contexto para a memória de curto prazo. Quando esse limite é atingido, o excesso pode ser movido para a memória de longo prazo.

A estratégia mais simples é o FIFO (primeiro a entrar, primeiro a sair). O primeiro a ser adicionado à memória de curto prazo será o primeiro a ser movido para o armazenamento externo.

Embora o FIFO seja simples de implementar, ele pode fazer com que o modelo perca o controle de informações importantes. Estratégias mais sofisticadas envolvem a remoção de redundância. As linguagens humanas contêm redundância para aumentar a clareza e compensar potenciais mal-entendidos. Se houver uma maneira de detectar redundância automaticamente, o consumo de memória será reduzido significativamente.

Uma maneira de eliminar redundâncias é usar um resumo da conversa. Este resumo pode ser gerado usando o mesmo modelo ou outro.

Referências

Huyen, Chip. AI Engineering: Building Applications with Foundation Models

Comments

Comments (0)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Previous
Next
Back To Top