Skip to content

Experimento usando a API da OpenAI e a Vercel AI SDK, que consite em um chatbot, que permite enviar um PDF e "conversar com ele".

Notifications You must be signed in to change notification settings

Jonatan966/pdf-teacher

Repository files navigation

PDF Teacher

Experimento usando a API da OpenAI e a Vercel AI SDK, que consite em um chatbot, que permite enviar um PDF e "conversar com ele".

Tecnologias usadas

  • Vercel AI SDK
  • Langchain
  • OpenAI
  • Supabase

Como iniciar

  • É necessário configurar o Supabase com a tabela necessária para o funcionamento da aplicação. Consulte este trecho de um guia para saber o que fazer;
  • É necessário ter uma chave de acesso a API da OpenAI;
  • Preencha as variáveis de ambiente necessárias. Consulte o arquivo .env.example

Demonstração

Gravando.2023-07-30.150333.mp4

Fluxo

  • Primeiro, é necessário selecionar um PDF, e escrever uma pergunta;
  • Ao clicar em Enviar, uma requisição separada para o PDF é feita;
    • O PDF é convertido para um hash MD5, e uma verificação no banco de dados é feita, verificando se o PDF já foi processado antes;
    • Caso o PDF já tenha sido processado, essa requisição apenas retorna seu hash MD5;
    • No caso contrário, o PDF é processado e seu conteúdo é transformado em vetores;
    • O resultado do processamento é armazenado no banco de dados vetorial.
  • Uma nova requisição é feita, para a geração da resposta do chatbot.
    • Um prompt template é usado para a geração da resposta;
    • Uma busca semântica é feita no banco de dados vetorial, filtrando os conteúdos relevantes para geração da resposta;
      • O hash MD5 do PDF previamente processado é usado para filtrar os resultados;
    • Depois de todas as informações serem coletadas, a resposta é gerada e retornada em formato Stream.

About

Experimento usando a API da OpenAI e a Vercel AI SDK, que consite em um chatbot, que permite enviar um PDF e "conversar com ele".

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published