GaiaNet: Rede de agentes GenAI
Resumo
Os grandes modelos linguísticos de código aberto especializados, aperfeiçoados e melhorados por RAG são elementos-chave nas aplicações de agentes de IA emergentes. No entanto, essas aplicações de agentes também apresentam desafios únicos para a infraestrutura tradicional de computação em nuvem e SaaS, incluindo novos requisitos para portabilidade de aplicações, virtualização, isolamento de segurança, custos, privacidade de dados e propriedade.
GaiaNet é uma infraestrutura de computação descentralizada que permite a todos criar, implementar, escalar e rentabilizar os seus próprios agentes de IA que reflectem os seus estilos, valores, conhecimentos e experiência. Um nó GaiaNet é composto por um tempo de execução de aplicações de alto desempenho e multiplataforma, um LLM afinado, um modelo de incorporação de conhecimentos, uma base de dados vetorial, um gestor de pedidos, um servidor de API aberto e um sistema de plug-ins para chamar ferramentas e funções externas utilizando os resultados do LLM. Pode ser implementado por qualquer trabalhador do conhecimento como um gémeo digital e oferecido como um serviço API da Web. Uma nova classe de activos transaccionáveis e um mercado poderiam ser criados a partir de bases de conhecimento e componentes individualizados. Os nós GaiaNet semelhantes estão organizados em domínios GaiaNet, que oferecem ao público serviços de agentes de IA fiáveis e de confiança. O nó e os domínios da GaiaNet são geridos pela GaiaNet DAO (Organização Autónoma Descentralizada). Através de contratos inteligentes Purpose Bound Money, a rede GaiaNet é um mercado descentralizado para serviços de agentes de IA.
Introdução
O aparecimento do ChatGPT e do Large Language Model (LLM) revolucionou a forma como os humanos produzem e consomem conhecimento. No espaço de um ano, as aplicações nativas de IA evoluíram de chatbots para copilotos e para agentes.
Os agentes de IA evoluirão cada vez mais de ferramentas de apoio (semelhantes aos copilotos) para entidades autónomas capazes de realizar tarefas de forma independente. - Dr. Andrew Ng na Cimeira Sequoia Capital AI Ascent 2024
Os agentes são aplicações de software que podem realizar tarefas de forma autónoma, tal como um ser humano. O agente pode compreender a tarefa, planear os passos para a realizar, executar todos os passos, tratar erros e excepções e apresentar os resultados. Embora uma poderosa LLM possa atuar como o "cérebro" do agente, precisamos de nos ligar a fontes de dados externas (olhos e ouvidos), a uma base de conhecimentos específicos do domínio e a avisos (competências), a armazenamentos de contexto (memória) e a ferramentas externas (mãos). Para as tarefas do agente, muitas vezes precisamos de personalizar o próprio LLM
- para reduzir as alucinações num domínio específico.
- para gerar respostas num formato específico (por exemplo, um esquema JSON).
- para responder a perguntas "politicamente incorrectas" (por exemplo, para analisar explorações CVE para um agente no domínio da segurança).
- e para responder a pedidos num estilo específico (por exemplo, para imitar uma pessoa).
Os agentes são softwares complexos que exigem uma quantidade significativa de engenharia e recursos. Atualmente, a maioria dos agentes são de código fechado e estão alojados em LLMs baseados em SaaS. Exemplos populares incluem GPTs e copilotos Microsoft/GitHub em LLMs OpenAI, e Duet em LLMs Gemini da Google.
No entanto, como discutimos, um requisito fundamental para os agentes é personalizar e adaptar o LLM subjacente e a pilha de software para tarefas específicas do domínio - uma área em que o SaaS centralizado tem um desempenho muito fraco. Por exemplo, com o ChatGPT, cada pequena tarefa deve ser tratada por um modelo muito grande. Também é extremamente caro ajustar ou modificar qualquer modelo do ChatGPT. Os LLMs de tamanho único são prejudiciais para o caso de utilização do agente em termos de capacidades, alinhamento e estrutura de custos. Além disso, os LLM alojados em SaaS carecem de controlos de privacidade sobre a forma como o conhecimento privado do agente pode ser utilizado e partilhado. Devido a estas deficiências, é difícil para os trabalhadores do conhecimento criarem e rentabilizarem agentes para o seu próprio domínio e tarefas em plataformas SaaS como a OpenAI, Google, Anthropic, Microsoft e AWS.
Neste artigo, propomos uma plataforma de software descentralizada e uma rede de protocolos para agentes de IA para todos. Especificamente, os nossos objectivos são duplos.
Objetivo n.º 1: Permitir que os indivíduos incorporem o seu conhecimento e experiência privados em aplicações pessoais de agentes LLM. Estas aplicações visam realizar tarefas de conhecimento e utilizar ferramentas tal como o indivíduo faria, mas também reflectem o estilo e os valores do indivíduo.
Objetivo #2: Permitir que os indivíduos forneçam e escalem os seus agentes LLM como serviços, e sejam compensados pela sua experiência e trabalho.
GaiaNet é o "YouTube do conhecimento e das competências".
Código aberto e descentralização
Em abril de 2024, existiam mais de 6000 LLMs de código aberto publicados no Hugging face. Em comparação com os LLMs de fonte fechada, como o GPT-4, os LLMs de fonte aberta oferecem vantagens em termos de privacidade, custo e enviesamento sistemático. Mesmo com um desempenho geral de garantia de qualidade, as LLM de fonte aberta estão a aproximar-se rapidamente das contrapartes de fonte fechada.
Para os casos de utilização de agentes de IA, foi demonstrado que os LLM mais pequenos, mas específicos da tarefa, superam frequentemente os modelos gerais maiores.
No entanto, é difícil para os indivíduos e as empresas implementar e orquestrar vários LLMs afinados na sua própria infraestrutura heterogénea de GPU. A complexa pilha de software para agentes, bem como a complexa interação com ferramentas externas, são frágeis e propensas a erros.
Além disso, os agentes LLM têm caraterísticas de escalonamento totalmente diferentes dos servidores de aplicações anteriores. A LLM é extremamente intensiva em termos de computação. Um servidor de agentes LLM normalmente só pode servir um utilizador de cada vez, e muitas vezes bloqueia durante segundos de cada vez. A necessidade de escalonamento não é mais para lidar com muitos pedidos assíncronos num único servidor, mas para equilibrar a carga entre muitos servidores discretos na escala da Internet.
O projeto GaiaNet fornece um SDK e um tempo de execução multiplataforma e altamente eficiente para LLMs de código aberto aperfeiçoados com bases de conhecimento proprietárias, prompts personalizados, respostas estruturadas e ferramentas externas para chamadas de funções. Um nó GaiaNet pode ser iniciado em minutos em qualquer dispositivo pessoal, de nuvem ou de borda. Ele pode então oferecer serviços por meio de uma rede web3 incentivada.
Nó GaiaNet
A unidade operacional básica da rede GaiaNet é um nó. Um nó GaiaNet é uma pilha de software simplificada que permite a qualquer pessoa tecnicamente competente gerir o seu próprio agente de IA. A pilha de software do nó GaiaNet é constituída pelos 7 componentes principais seguintes.
1 Tempo de execução da aplicação. Os aplicativos GaiaNet são executados em uma sandbox leve, segura e de alto desempenho chamada WasmEdge. Como um projeto de código aberto gerenciado pela Linux Foundation e CNCF, o tempo de execução do WasmEdge funciona perfeitamente com as principais ferramentas nativas da nuvem, como Docker, containerd, CRI-O, Podman e Kubernetes. É também a máquina virtual de escolha pelos principais blockchains públicos para executar de forma segura e eficiente contratos inteligentes on-chain e off-chain.
WasmEdge é um tempo de execução de alto desempenho e multiplataforma. Ele pode executar modelos de IA em quase todas as CPUs, GPUs e aceleradores de IA em velocidade nativa, tornando-o um tempo de execução ideal para agentes de IA descentralizados.
2 LLM afinados. O nó GaiaNet suporta quase todos os LLM de código aberto, modelos multimodais (por exemplo, Large Vision Models ou LVMs), modelos de texto para imagem (por exemplo, Stable Diffusion) e modelos de texto para vídeo. Isto inclui todos os modelos aperfeiçoados que utilizam dados pessoais ou proprietários.
O proprietário do nó pode afinar modelos de código aberto utilizando uma grande variedade de ferramentas. Por exemplo, o proprietário do nó pode afinar um LLM usando históricos de conversação pessoais para que o LLM afinado possa imitar o seu próprio estilo de falar. Ele também pode afinar um LLM para o focar num domínio de conhecimento específico para reduzir as alucinações e melhorar a qualidade das respostas a perguntas nesse domínio. Um LLM afinado pode garantir a saída de texto JSON que corresponda a um esquema pré-determinado para uso com ferramentas externas.
Para além dos LLMs, o proprietário do nó pode afinar os modelos de difusão estável com as suas próprias fotografias para gerar imagens que se pareçam com ele.
3 Modelo de incorporação. O nó GaiaNet tem de gerir um conjunto de conhecimentos públicos ou proprietários para o agente de IA. Trata-se de uma caraterística fundamental que permite ao agente especializar-se e superar modelos muito maiores num domínio específico. Os modelos de incorporação são LLMs especialmente treinados que transformam as frases de entrada numa representação vetorial, em vez de gerarem conclusões. Uma vez que os modelos de incorporação são treinados a partir de LLMs, podem "incorporar" o "significado" das frases nos vectores, de modo a que frases semelhantes sejam localizadas próximas umas das outras no espaço de elevada dimensão ocupado por esses vectores.
Com o modelo de incorporação, um nó GaiaNet pode ingerir um corpo de texto, imagens, PDFs, ligações Web, ficheiros de áudio e vídeo e gerar uma coleção de vectores de incorporação com base no seu conteúdo. O modelo de incorporação também transforma as perguntas e conversas dos utilizadores em vectores, o que permite ao nó GaiaNet identificar rapidamente os conteúdos da sua base de conhecimentos que são relevantes para a conversa atual.
4 Base de dados vetorial. Os vectores de incorporação que formam a base de conhecimentos do nó GaiaNet são armazenados no próprio nó para um desempenho ótimo e máxima privacidade. O nó GaiaNet inclui uma base de dados vetorial Qdrant.
5 Pedidos personalizados. Para além da afinação e dos argumentos de conhecimento, a forma mais fácil de personalizar um LLM para novas aplicações é simplesmente dar-lhe instruções. Tal como os humanos, os LLMs aprendem de uma só vez. Pode simplesmente dar um exemplo de como realizar uma tarefa, e ele aprenderá e realizará tarefas semelhantes por si próprio. A engenharia de estímulos é um domínio prático para investigar e desenvolver tais estímulos.
Além disso, os avisos eficazes podem ser altamente dependentes do modelo em utilização. Um aviso que funciona bem para um modelo grande, como o Mixtral 8x22b, provavelmente não funcionará bem para um modelo pequeno como o Mistral 7b.
O nó GaiaNet pode suportar vários prompts diferentes que são escolhidos dinamicamente e utilizados nas aplicações. Por exemplo,
- O
prompt_do_sistema
é uma introdução geral à tarefa do agente que o nó deve realizar. Muitas vezes contém um personagem para ajudar o LLM a responder com o tom correto. Por exemplo, oprompt_do_sistema
para um assistente de ensino universitário poderia ser: "É um assistente de ensino para a aula de ciências informáticas 101 da UC Berkeley. Por favor, explique os conceitos e responda às perguntas em pormenor. Não responda a nenhuma pergunta que não esteja relacionada com matemática ou informática." - O
rag_prompt
é um prompt de prefixo a ser inserido dinamicamente à frente dos resultados de pesquisa da base de conhecimentos num chat RAG. Pode ser algo do género: "Por favor, responda à pergunta com base em factos e opiniões no contexto abaixo. Não faça nada que não esteja no contexto. ---------"
A comunidade LLM desenvolveu muitos avisos úteis para diferentes casos de utilização de aplicações. O nó GaiaNet permite-lhe geri-los e experimentá-los facilmente.
Através do nosso SDK para programadores, os proprietários e operadores do GaiaNet podem personalizar a lógica da geração de mensagens dinâmicas à sua maneira. Por exemplo, um nó do GaiaNet pode efetuar uma pesquisa no Google para qualquer pergunta do utilizador e adicionar os resultados da pesquisa à mensagem como contexto.
6 Chamadas de função e utilização de ferramentas. O LLM não só é ótimo a gerar linguagem humana, como também é excelente a gerar instruções de máquina. Através de afinação e engenharia rápida, podemos conseguir que alguns LLMs gerem consistentemente objectos JSON estruturados ou código de computador em muitas tarefas linguísticas, tais como resumir e extrair elementos-chave de um parágrafo de texto.
O nó GaiaNet permite-lhe especificar o formato de saída do texto gerado. Pode fornecer-lhe um ficheiro de especificação de gramática para impor que as respostas estejam sempre em conformidade com um esquema JSON predefinido.
Uma vez que o LLM devolve uma resposta JSON estruturada, o agente normalmente precisa de passar o JSON para uma ferramenta que executa a tarefa e retorna com uma resposta. Por exemplo, a pergunta do utilizador pode ser.
Como é o tempo em Singapura?
O LLM gera a seguinte resposta JSON.
{"tool":"get_current_weather", "location":"Singapore","unit":"celsius"}
O nó GaiaNet tem de saber qual é a ferramenta associada a get_current_weather e, em seguida, invocá-la. Os proprietários e operadores do nó GaiaNet podem configurar qualquer número de ferramentas externas mapeando um nome de ferramenta com um ponto de extremidade de serviço da Web. No exemplo acima, a ferramenta get_current_weather pode ser associada a um serviço da Web que recebe esses dados JSON. O nó GaiaNet envia o JSON para o ponto de extremidade do serviço da Web via HTTPS POST e recebe uma resposta.
42
Em seguida, opcionalmente, alimenta a resposta ao LLM para gerar uma resposta em linguagem humana.
O tempo atual em Singapura é de 42ºC.
Através do SDK do nó GaiaNet, os programadores não estão limitados à utilização de serviços Web. Eles podem escrever plugins para processar respostas LLM localmente no nó. Por exemplo, a LLM pode devolver código Python, que pode ser executado localmente numa caixa de areia e para que o nó GaiaNet realize uma operação complexa.
7 O servidor API. Todos os nós GaiaNet devem ter a mesma API para perguntas e respostas. Isso permite que os aplicativos front-end trabalhem e sejam potencialmente balanceados para qualquer nó GaiaNet. Optamos por apoiar a especificação da API OpenAI, o que permite que os nós GaiaNet se tornem substitutos dos pontos de extremidade da API OpenAI para um grande ecossistema de aplicativos.
O servidor API funciona de forma segura e multiplataforma no tempo de execução do WasmEdge. Liga todos os outros componentes do nó GaiaNet. Recebe os pedidos dos utilizadores, gera uma incorporação a partir do pedido, pesquisa a base de dados de vectores, adiciona os resultados da pesquisa ao contexto do pedido, gera uma resposta LLM e, opcionalmente, utiliza a resposta para efetuar chamadas de funções. O servidor da API também fornece uma interface de chatbot baseada na Web para que os utilizadores conversem com o LLM aperfeiçoado pelo RAG no nó.
Rede GaiaNet
Embora cada nó da GaiaNet seja já um poderoso agente de IA capaz de responder a perguntas complexas e realizar acções, os nós individuais não são adequados para prestar serviços públicos. Há várias razões importantes.
- Para os consumidores e utilizadores públicos, é muito difícil avaliar a fiabilidade de cada um dos nós da GaiaNet. Os operadores de nós maliciosos podem espalhar informações erróneas prejudiciais.
- Para os proprietários e operadores dos nós da GaiaNet, não existe qualquer incentivo económico para fornecer tais serviços ao público, cuja exploração poderia ser muito dispendiosa.
- Os servidores de agentes de IA têm caraterísticas de escalonamento muito diferentes dos servidores de aplicações Internet tradicionais. Quando o agente está a processar um pedido do utilizador, ocupa normalmente todos os recursos de computação do hardware. Em vez de utilizar software para escalar utilizadores simultâneos num único servidor, o desafio da GaiaNet é escalar para muitos nós idênticos diferentes para uma grande aplicação.
Estes desafios deram origem ao domínio GaiaNet, que constitui a base da rede GaiaNet web3. Um domínio GaiaNet é um conjunto de nós GaiaNet disponíveis sob um único nome de domínio Internet. O operador do domínio decide quais os nós GaiaNet que podem ser registados sob o domínio e disponibiliza os serviços dos nós ao público. Por exemplo, um domínio GaiaNet pode ser um assistente de ensino de Ciências Informáticas da UC Berkeley. O domínio pode prestar serviços através de https://cs101.gaianet.berkeley.edu
. O operador do domínio tem de fazer o seguinte.
- Verificar e admitir nós individuais a serem registados no domínio. Esses nós devem cumprir todos os requisitos, como o LLM, a base de conhecimentos e os prompts, definidos pelo operador do domínio para garantir a qualidade do serviço. O registo de nós num domínio pode ser feito através de uma lista branca ou negra. A decisão é do operador do domínio.
- Monitorizar o desempenho de cada nó em tempo real e remover os inactivos.
- Promove as aplicações chatbot "assistente de ensino" junto do público-alvo.
- Definir o preço dos serviços API.
- Equilíbrio de carga entre nós activos.
- Ser pago pelos utilizadores.
- Pagar aos nós pelos seus serviços.
Cada nó GaiaNet tem um ID de nó único sob a forma de um endereço ETH. A chave privada associada ao endereço ETH é armazenada no nó. Assim que um nó é registado com sucesso num domínio, tem direito a receber pagamentos de receitas de serviços e prémios de rede do domínio. O domínio pode enviar os pagamentos diretamente para o endereço ETH do nó. Ou, o domínio pode fornecer um mecanismo para um operador de nó registar vários nós sob um único endereço Metamask, como assinar uma frase de desafio usando as chaves privadas do nó. Nesse caso, o operador do nó receberá pagamentos agregados na sua conta Metamask para todos os nós associados.
Cada domínio GaiaNet tem um contrato inteligente associado que é utilizado para pagamentos de caução. É semelhante ao modelo de pagamento de créditos da OpenAI, em que os utilizadores compram créditos primeiro e depois consomem-nos ao longo do tempo. Quando o utilizador paga ao contrato inteligente, é-lhe automaticamente atribuído um token de acesso. O utilizador utiliza este token para fazer chamadas API para o domínio, que é então equilibrado em termos de carga para nós aleatórios no domínio. À medida que o utilizador consome esses serviços, o seu fundo no contrato esgota-se e o token de acesso deixa de funcionar se já não tiver saldo.
O preço e o pagamento do serviço API são determinados pelo operador do domínio. Normalmente, é expresso em moedas estáveis em USD. O operador do domínio paga uma parte das receitas aos operadores de nós que prestaram os serviços. A rede GaiaNet é um mercado descentralizado de serviços de agentes.
Os fundos bloqueados nos contratos de domínio GaiaNet destinam-se a um único objetivo de consumo de serviços API. É o chamado Purpose Bound Money.
Um aspeto fundamental do protocolo GaiaNet é que os operadores de domínio são "fornecedores de confiança" no ecossistema de nós descentralizados. A rede do protocolo foi concebida para incentivar a confiança dos operadores através de projectos de tokenomics, tais como mineração e staking. Os nós, domínios, utilizadores e programadores da GaiaNet formam uma DAO para fazer crescer a rede e beneficiar todos os contribuintes.
Token GaiaNet
O token GaiaNet é um token utilitário concebido para facilitar as transacções, apoiar a governação e promover a confiança na rede. Serve três objectivos principais.
- Como um token de governação DAO, os detentores podem participar na definição das regras da rede.
- Como token de staking, os detentores garantem a fiabilidade dos operadores de domínios. Os stakers recebem uma parte das receitas do serviço do operador do domínio. Mas também podem ser reduzidos se o operador do domínio se comportar mal, por exemplo, se espalhar desinformação ou prestar serviços pouco fiáveis.
- Como token de pagamento, o token GaiaNet pode ser depositado no contrato de caução do domínio e ser utilizado para pagar serviços ao longo do tempo.
A utilidade de pagamento do token GaiaNet foi concebida para equilibrar a oferta e a procura da rede. O valor do ativo do token GaiaNet é determinado no momento em que entra ou sai do contrato inteligente de caução com base nas taxas de câmbio em tempo real.
Os consumidores de serviços poderiam poupar com a potencial valorização do token. Por exemplo, se um utilizador depositar $100 de tokens GaiaNet no contrato e, quando o domínio e os nós forem pagos, o valor do token tiver subido para $110, o utilizador terá recebido $110 de serviços de agente.
Por outro lado, se o preço dos tokens baixar, os fornecedores de serviços (domínios e nós) têm agora a oportunidade de "extrair" os tokens a baixo preço. Se os tokens iniciais de 100 dólares valerem apenas 90 dólares agora, os prestadores de serviços receberão mais tokens por cada unidade de eletricidade e computação que fornecerem. Isso incentiva mais nós a se juntarem à rede e especularem sobre um aumento posterior no valor do token.
Um exercício: Prevê-se que a OpenAI atinja 5 mil milhões de dólares em ARR em 2024. Supondo que a maioria dos clientes empresariais paga trimestralmente, isso representa 1,25 mil milhões de dólares de capitalização do mercado de circulação, para além do atual valor da empresa da OpenAI, se esta emitisse um token de pagamento. O tamanho geral do mercado de serviços de IA está projetado para atingir US $ 2 trilhões em alguns anos. Isso se traduz em um valor de mercado de US $ 500 bilhões apenas para um token de utilitário de pagamento.
Mercado de componentes para activos de IA
GaiaNet é uma plataforma de desenvolvimento para criar os seus serviços de agente. Fornecemos-lhe ferramentas para o fazer.
- Ferramentas para gerar conjuntos de dados de afinação e efetuar a afinação em máquinas CPU e GPU.
- Ferramentas para ingerir documentos e criar embeddings vectoriais para a base de conhecimentos.
- SDK baseado em Rust para gerar e gerir dinamicamente prompts.
- SDK baseado em Rust para alargar a capacidade do agente de invocar ferramentas e software no nó.
Para os programadores que não pretendem operar nós, estamos a criar um mercado para
- modelos aperfeiçoados
- bases de conhecimentos e conjuntos de dados
- plugins de chamada de função
Todos esses componentes são activos baseados em blockchain representados por NFTs. Um operador de nó pode comprar NFTs para os componentes que deseja utilizar e partilhar as receitas do serviço com os criadores dos componentes. Isto permite a emissão de activos diversos e geradores de fluxos de caixa a partir do ecossistema GaiaNet.
Conclusão
O GaiaNet fornece ferramentas de código aberto para que indivíduos e equipas criem serviços de agentes utilizando os seus conhecimentos e competências próprios. Os programadores podem criar LLMs aperfeiçoados, colecções de conhecimentos e plugins para o agente, e emitir activos com base nesses componentes. O protocolo GaiaNet torna esses nós detectáveis e acessíveis através dos domínios GaiaNet.