Чат с OpenAI
Вы можете поставить на свой сайт чат с моделью OpenAI, который отвечает посетителям по вашим инструкциям. Например:
- консультант в магазине помогает выбрать товар;
- поддержка отвечает на частые вопросы о сервисе;
- помощник на курсе объясняет материал урока;
- собеседник на странице статьи отвечает на вопросы по ее теме.
Чат печатает ответ по мере генерации, оформляет код и таблицы, а переписки хранит в браузере посетителя. Посмотрите демо: без подключенной модели оно отвечает заготовками. Весь код лежит в репозитории на GitHub, его можно взять как есть. Интерфейс чата на русском.
Как поставить чат
Понадобятся Node.js, ключ OpenAI и аккаунт Cloudflare, хватит бесплатного тарифа.
- Скачайте папку
demos/chatиз репозитория. - В файле
worker/wrangler.tomlвпишите адрес сайта вALLOWED_ORIGINS, а роль чата и нужные ему сведения — вSYSTEM_PROMPT. - В папке
workerопубликуйте функцию, которая хранит ключ. Командаsecret putспросит ключ OpenAI:
«`bash
npm i -D wrangler@latest
npx wrangler login
npx wrangler secret put OPENAI_API_KEY
npx wrangler deploy
«`
Wrangler напечатает адрес функции вида https://onpress-chat.<поддомен>.workers.dev.
- В файле
page.mdукажите адрес страницы на своем сайте и добавьте адрес функции:
«`yaml
url: «/chat/»
data.chat_endpoint: «https://onpress-chat.<поддомен>.workers.dev»
«`
- Загрузите фрейм из файлов
frame.html,style.cssиscript.js, а потом опубликуйтеpage.mdкак обычную страницу.
Откройте страницу и задайте вопрос: чат ответит через вашу модель.
Зачем нужна функция
Скрипт фрейма видит каждый посетитель. Ключ в нем можно скопировать и потратить ваш баланс OpenAI. Поэтому браузер отправляет переписку вашей функции на Cloudflare Workers, функция добавляет ключ и спрашивает OpenAI, а ответ по частям передает обратно в чат. Функция принимает запросы только со страниц сайтов из ALLOWED_ORIGINS, поэтому чужие сайты не встроят чат к себе.
Сколько стоит
Бесплатный тариф Cloudflare Workers дает 100 000 запросов в день. За ответы модели вы платите OpenAI по цене выбранной модели, ее задает OPENAI_MODEL в wrangler.toml.