Создайте чат -бот Chatgpt для вашего сайта, используя Langchain, Supabase, TypeScript, Openai и Next.js. Langchain - это структура, которая облегчает создание масштабируемых приложений AI/LLM. Supabase - это база данных Postgres с открытым исходным кодом, которая может хранить встраиваемые вставки с использованием расширения вектора PG.
Учебное видео
Свяжитесь с нами через Twitter, если вам нужна помощь
Визуальное руководство этого репо и учебника находится в папке visual guide .
git clone [github https url]
pnpm install
.env.env.local.example в .env Ваш файл .env должен выглядеть так: OPENAI_API_KEY=
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
.env . В папке config замените URL -адреса в массиве на URL -адреса вашего веб -сайта (сценарий требует более одного URL).
В utils/custom_web_loader.ts внутри функции load замените значения title , date и content на элементы текста CSS, которые вы хотели бы извлечь с данной веб -страницы. Вы можете узнать больше о том, как использовать Cheerio здесь
Вы можете добавить свои пользовательские элементы в метаданные для удовлетворения ваших потребностей, однако обратите внимание, что формат загрузчика по умолчанию в соответствии с нижеприведенными, ожидается, по крайней мере, строку для pageContent и metadata , которые содержат свойство source в качестве возвращаемого значения:
async load(): Promise<Document[]>{
const $ = await this.scrape();
const text = $("body").text();
const metadata = { source: this.webPath };
return [new Document({ pageContent: text, metadata })];
}
pageContent и metadata будут позже храниться в вашей таблице баз данных Supabase.
schema.sql в вашем редакторе Supabase SQLdocuments существует в базе данных, а также функции match_documents . Чтобы запустить скрипт соскобки и встраивания в scripts/scrape-embed.ts
npm run scrape-embed
Этот скрипт посетит все URL -адреса, отмеченные в папке config , и извлекут данные, указанные в файле custom_web_loader.ts .
Затем он будет использовать Entgeddings OpenAI ( text-embedding-ada-002 ) для преобразования ваших сокраренных данных в векторы.
После того, как вы подтвердили, что встраиваемые и контент были успешно добавлены в вашу таблицу Supabase, вы можете запустить приложение npm run dev и ввести вопрос, чтобы задать ваш сайт.
Ледовый фронт этого репо вдохновлен Langchain-Chat-nextjs
В этом репо используются подробные руководства по понятию с сайта эксперта по производительности Томаса Фрэнка.