November 19, 2023

API OpenAI. Создаем чат-бот в телеграме с GPT

Сегодня мы познакомимся с API ChatGPT и узнаем, как выстраивать интеграции. Потренируемся на примере телеграм-бота

▶️ Время чтения и просмотра: ~ 30 минут

⏱ Время выполнения задания: ~ 40 минут

Темы на сегодня:

  • API OpenAI
  • Интеграции
  • Чат-боты
  • Salebot

1. API OpenAI

‼️ Внимание! Если выданные ключи не работают и сервис просит оплату, то нужно пополнить счет хотя бы на 1$. Если нет возможности оплатить, запроси действующие API у @Zerocoder_connect

Евгения Заяц — технический директор университета Zerocoder.

API — программный интерфейс приложения. По сути, это инструкция приложения, в которой описаны методы и запросы, которые мы можем дать приложению для того, чтобы оно что-то сделало.

Посылая запрос по API, мы “говорим” приложению совершить определённое действие.

Взаимодействие по API осуществляется с помощью запросов, в которые включается ключ.

API-ключ — это пароль, который позволяет нам обращаться к приложению.

Бывают открытые и закрытые API. Нам повезло, что у ChatGPT API открытый — это означает, что мы можем связать его со всем, у чего так же открытый API (например, с гугл-таблицами, Glide, Bubble, Directual).

Как нам получить от ChatGPT API-ключ?

  1. Перейдем в личный кабинет на сайте ChatGPT.
  2. В верхнем правом углу нажимаем на значок аватара и выбираем View API keys.

3. Нажимаем Create new secret key. Называем его Salebot.

4. Получаем подобную генерацию и нажимаем на значок рядом, чтобы скопировать ее.

ОБЯЗАТЕЛЬНО скопируйте API-ключ себе в блокнот, потому что после нажатия кнопки Done он запишется в список ваших ключей и сократится (как на предыдущем скриншоте), и в целом виде вы его больше не увидите.

API интеграции у ChatGPT платные. Каждый запрос стоит денег. Вы платите за токены.

Чтобы посмотреть стоимость, вы можете перейти на страницу прайсинга.

До недавнего времени на счету каждого аккаунта было 5 долларов для тестового периода интеграций. Проверить, есть ли они у вас, можно в разделе Usage.

2. Регистрация в Salebot

  1. Переходим на официальный сайт.
  2. Нажимаем на кнопку в правом верхнем углу Регистрация.
  3. Выбираем Аккаунт в Salebot.
  4. Вводим свои данные и нажимаем Зарегистрироваться.

У одного аккаунта может быть несколько проектов. Например, если вы разработчик чат-бота, то вы можете создавать проекты и потом передавать права на них своим клиентам.

5. Нажимаем Создать проект. Придумываем название для проекта, а в поле промокод пишем Zerocode (проверьте, действует ли промокод). Нажимаем Готово.

Что дает промокод? 10 дней тестового доступа на тарифе Премиум вместо 3 дней.

3. Salebot с API OpenAI

Salebot — конструктор, который может построить вам бота не только в Telegram, но и В контакте, Facebook, Avito, Viber, WhatsApp, Одноклассники, Instagram, даже в Юле.

Вы можете обучиться работе с Salebot самостоятельно или прийти на наш курс “Автоматизатор бизнес-процессов”.

  1. Телеграм-бот создается при помощи другого телеграм-бота BotFather.
  2. Выбираем в нем меню — /newbot.

3. Далее BotFather просит нас ввести название бота и его юзернейм (он должен обязательно заканчиваться на bot). Вы можете ввести любые данные. После чего получаем сообщение с результатом, из которого мы можем скопировать токен.

4. Возвращаемся в Salebot и вставляем скопированный токен на моменте добавления телеграм-канала. Нажимаем Готово.

5. После этого откроем инструкцию вверху экрана:

В поиске вводим openai и открываем страничку.

Пролистываем инструкцию до этого момента:

Копируем open_ai_token.

6. Возвращаемся на предыдущую страницу и в левом нижнем углу выбираем Настройки проекта. Пролистываем до поля “Константы проекта”Изменить константыДобавить переменную. Заполняем (справа вставляется ключ, который мы копировали в блокнот). Готово.

7. В меню слева находим Конструктор воронок. Открывается абсолютно белый лист. Справа в меню находим блок Сообщение и нажимаем на него.

8. Там, где написано Состояние диалога, меняем на Первостепенная проверка условия. Заполняем и сохраняем:

На экране появляется зеленый блок, назовем его Начало.

9. Со страницы помощи копируем open_ai_create_completion(prompt, model, max_tokens, temperature, variants)

Обратите внимание на перечень моделей, с которыми работает бот.

10. Переходим во вкладку Калькулятор. и вставляем скопированную строку, но удаляем все, что идет после prompt.

11. Удаляем также prompt и вписываем одинарные кавычки ''. Между них нам нужно вставить переменную #{question}. Сохраняем.

12. Также нам нужно куда-то сохранять ответ. Для этого немного изменим текст внутри этого же поля и снова сохраним изменения:

Давайте перейдем к сообщению от BotFather и пройдем по ссылке, чтобы протестировать бота:

Ничего не происходит, потому что мы не настроили блок отправки сообщений.

Настройка отправки ответа клиенту

  1. У границы зеленого блока найдем белый кружок и протянем его вниз, чтобы получилась стрелка. Нажимаем на значок шестеренки.

2. В меню справа вводим в поле Задержка перед ответом1.

После этого стрелка меняет вид на пунктирную линию.

3. Меняем в белом блоке #{none} на #{answer}.

Проверим в чате — есть ответ.

Попробуем озадачить его запросом:

Ответы получаются местами странные, из чего мы можем сделать вывод, что для наших задач модель работает не очень хорошо.

Пролистываем страницу с помощью почти до самого низа и находим нужный нам раздел:

Скопируем open_ai_chat_completions и поменяем в блоке Начало функцию в разделе Калькулятор. Сохраняем изменения.

Возвращаемся к боту.

Теперь ответ выглядит очень логичным.

Этот ответ гораздо лучше.

Сейчас по умолчанию мы обращаемся к ChatGPT 3.5. Если мы в Калькуляторе укажем дополнительно название модели, то сможем обращаться к ChatGPT 4.

Но бот выдает ошибку:

Чтобы получить доступ к 4 версии, нужно отстоять в очереди тестового периода и получить утверждение на использование. Поэтому сейчас мы удалим последние изменения и останемся на версии 3.5.

Так выглядит минимальная схема работы бота.

4. Взаимодействие Salebot с OpenAI по ключевым словам

Что делать, если нам нужно, чтобы бот отвечал не на все сообщения, а реагировал на определенный хэштег или слово?

  1. Нажмем на пустом пространстве рабочей области.
  2. Выберем Сообщение. Изменим значок сверху на Первостепенная проверка условия. Введем следующие данные:

3. Сохраняем и переименовываем появившийся зеленый блок:

4. Чтобы упростить работу, мы можем скопировать белый блок, переместить его наверх и протянуть от Начала 2 стрелку к нему.

5. Нажмем на значок шестеренки и снова поставим таймер на 1 секунду.

6. Также скопируем функцию из первого зеленого блока во второй. Сохраним изменения.

Протестируем. На первое сообщение наш бот не отвечает, так как оно не содержит хэштег.

Бот сохраняет контекст примерно на протяжении 25 сообщений, поэтому в конце он ставит хэштег.

Если бот выдает ошибку вида {
"error": {
"message": "This model's maximum context length is 4097 tokens. However, you requested 4272 tokens (3248 in the messages, 1024 in the completion). Please reduce the length of the messages or completion.",
"type": "invalid_request_error",
"param": "messages",
"code": "context_length_exceeded"
}
}

то такое происходит при заполнении контекста. Версия 3.5 хранит историю сообщений в 4000 токенов. Тут можно поступить двумя путями:
1. Очищать историю после каждого запроса. Для этого нужно в белом блоке в калькуляторе написать open_ai_request =
open_ai_chat_messages =
2. Это ловить значение переменной answer с этой ошибкой и очищать после заполнения. Но тут уже надо более глубоко изучить тему «переменная для сравнения» или функция IF

Вы можете добавить этого бота в чат, если предварительно через BotFather разрешите боту работать в группах.

  1. Задаете команду в диалоге с BotFather и выбираете бота, с которым хотите сейчас работать.

2. Bot SettingsAllow Groups?

Если попросить нашего бота написать какой-то большой текст, он может прислать отказ.

С чем это связано? Salebot ждет ответ от OpenAI всего 22 секунды. Очевидно, что даже оригинальный ChatGPT не напишет доклад на 3 страницы за 22 секунды, нужно подождать хотя бы минуту.

К сожалению, интеграция Salebot такова, что 22 секунды — это максимум.

Именно поэтому наш Помощник Зерокота не справлялся с некоторыми вашими запросами и мы его поменяли на Нейрокота.

Так что такой бот не заменит вам оригинальной версии ChatGPT.

Напишите, пожалуйста, в группу, какие способы использования данного бота и данной интеграции вы придумали и что вы можете использовать в своей работе 🙂

Бонусное примечание

Сервисы-интеграторыZapier, Integromat, Albato.

Это зерокодерские инструменты, которые позволяют соединять несоединимое.

Например, у Integromat есть встроенная интеграция с OpenAI, благодаря чему вы можете расширить каналы до безграничных возможностей. Это, конечно, задача повышенной сложности.

Если вам будет интересно, у нас есть уроки и по Salebot, и по Igromat — все это входит в курс “Автоматизатора бизнес-процессов”.