Experimente sem autenticação Firebase (solução temporária): #2 (comentário)
Nossa pilha consiste em Next.js, Rust, Postgres, MeiliSearch e Firebase Auth para autenticação. Cadastre-se para uma conta do Firebase e crie um projeto.
No Firebase, navegue até Configurações do projeto -> Contas de serviço, gere uma chave privada e salve-a em firebaseAdmin/cert/dev.json
se for para desenvolvimento ou prod.json se for para produção.
Depois disso, certifique-se de instalar as dependências antes de iniciar o aplicativo.
npm install
npm run db:deploy
npm run dev
(para desenvolvimento)npm run build
(para produção)npm run start
(para produção) Depois de executar 'dev' ou 'build', você encontrará a extensão construída dentro da pasta ./client/extension/build
. Você pode então carregar esta pasta como uma extensão descompactada em seu navegador.
Existem vários problemas com os agentes de navegador atuais. Aqui explicamos os problemas e como os resolvemos.
Existem várias técnicas para isso, desde o envio de um formato abreviado de HTML para o GPT-3, a criação de uma caixa delimitadora com IDs e o envio para o GPT-4-vision para executar ações, ou a solicitação direta do GPT-4-vision para obter o Coordenadas X e Y do elemento. Contudo, nenhum destes métodos era confiável; todos eles levaram a alucinações.
Para resolver isso, desenvolvemos uma nova técnica onde indexamos todo o DOM no MeiliSearch, permitindo que o GPT-4-vision gere comandos para qual texto interno do elemento clicar, copiar ou realizar outras ações. Em seguida, pesquisamos o índice com o texto gerado e recuperamos o ID do elemento para enviar de volta ao navegador para agir. Existem algumas limitações aqui, mas implementamos algumas técnicas para superá-las, como lidar com o mesmo texto em vários elementos ou clicar em um ícone (ainda estamos trabalhando nisso).
Para evitar que o GPT descarrile as tarefas, usamos uma técnica semelhante à geração aumentada de recuperação, mas chamamos isso de Geração Aumentada de Ações. Essencialmente, quando um usuário cria um fluxo de trabalho, não gravamos a tela, o microfone ou a câmera, mas registramos as alterações do elemento DOM para cada ação (clicar, digitar, etc.) que o usuário realiza. Em seguida, usamos o título do fluxo de trabalho, o objetivo e as ações registradas para gerar um conjunto de tarefas. Sempre que executamos uma tarefa, incorporamos todas as ações que o usuário realizou naquele domínio específico com o prompt. Dessa forma, o GPT mantém o controle da tarefa, mesmo que o usuário não tenha fornecido um título e objetivo muito breves; suas ações guiarão o GPT para concluir a tarefa.