Crie um chatgt chatbot para o seu site usando Langchain, Supabase, TypeScript, OpenAI e Next.JS. O Langchain é uma estrutura que facilita a criação de aplicativos escaláveis de AI/LLM. O Supabase é um banco de dados Postgres de código aberto que pode armazenar incorporação usando uma extensão vetorial PG.
Vídeo tutorial
Entre em contato via Twitter se precisar de ajuda
O guia visual deste repositório e tutorial está na pasta visual guide .
git clone [github https url]
pnpm install
.env.env.local.example em .env seu arquivo .env deve ser assim: OPENAI_API_KEY=
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
.env . Na pasta config , substitua os URLs na matriz pelos URLs do seu site (o script requer mais de um URL).
Nos utils/custom_web_loader.ts dentro da função load , substitua os valores do title , date e content pelos elementos CSS do texto que você deseja extrair de uma determinada página da web. Você pode aprender mais sobre como usar o Cheerio aqui
Você pode adicionar seus elementos personalizados aos metadados para atender às suas necessidades, observe que o formato padrão do carregador, conforme abaixo, espera pelo menos uma string para pageContent e metadata que contêm uma propriedade source como um valor retornado:
async load(): Promise<Document[]>{
const $ = await this.scrape();
const text = $("body").text();
const metadata = { source: this.webPath };
return [new Document({ pageContent: text, metadata })];
}
O pageContent e metadata serão posteriormente armazenados na sua tabela de banco de dados Supabase.
schema.sql em seu editor Supabase SQLdocuments existe no banco de dados, bem como na função match_documents . Para executar o script de raspagem e incorporação em scripts/scrape-embed.ts basta executar:
npm run scrape-embed
Este script visitará todos os URLs observados na pasta config e extrairá os dados especificados no arquivo custom_web_loader.ts .
Em seguida, ele usará as incorporações do OpenAI ( text-embedding-ada-002 ) para converter seus dados raspados em vetores.
Depois de verificar se as incorporações e o conteúdo foram adicionados com sucesso à sua tabela Supabase, você pode executar o aplicativo npm run dev e digitar uma pergunta para fazer seu site.
Frontend deste repositório é inspirado em Langchain-Chat-Nextjs
Este repositório usa guias detalhados do site de especialista em produtividade, Thomas Frank.