ChatGPT-OpenAI

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

Получение токена для подключения

Для получения токена зарегистрируйтесь на сайте OpenAI

Сервис не работает в России. Для регистрации зарубежного номера можно воспользоваться сторонними сервисами для покупки виртуального номера (это стоит в районе 50 рублей), чтобы получить СМС.

Важно: покупая смс на чужой номер, Вы полностью компрометируете безопасность своего аккаунта.

Поэтому помните, что представленный в данной статье способ получения доступа - это только для "поиграться".

После успешной регистрации Вы попадете на стартовую страницу OpenAI:

Перейдите в личный кабинет -> Просмотр API-ключей:

Сгенерируйте новый ключ:

Внимание! Ключ показывается только один раз - сразу скопируйте и сохраните его

Переходим в проект Salebot - Настройки проекта и создаем константу open_ai_token Внимание! В значение константы указываем API-токен Open AI без кавычек.

Получение ответа от OpenAI

open_ai_create_completion(prompt, model, max_tokens, temperature, variants)

Параметры:

ПараметрыЗначениеПримечание

! prompt

текст запроса к нейросети в виде строки. Уточнения вида "на каком языке отвечать" и прочее прописываем в данный параметр

model

модель ответа (по умолчанию - 'text-davinci-003')

Возможные варианты: - 'text-davinci-003' - данная модель может решать логические задачи, определять причину и следствие, понимать смысл текста, создавать творческий контент, объяснять мотивы персонажей и выполнять сложные задачи обобщения. - 'text-curie-001' - данная модель лучше справляется с обобщением, языковым переводом и классификацией настроений. - 'text-babbage-001' - модель хорошо подходит для задач семантического поиска, которые оценивают, насколько документы соответствуют поисковому запросу. - 'text-ada-001' - самая быстрая и наименее затратная модель. Лучше всего подходит для тривиальных задач, например для разбора текста, переформатирования текста и более простых задач классификации. Чем больше описания вы предоставите Аде, тем лучше она будет работать.

max_tokens

указание максимального числа токенов, которые могут быть использованы (по умолчанию - 512)

Какую температуру выборки использовать, от 0 до 2.

Более высокие значения, такие, как 0.8, сделают вывод более случайным, а более низкие значения, такие, как 0.2, сделают его более сфокусированным и детерминированным. По умолчанию, 1.

variants

сколько вариаций ответов сгенерить (1 если не передать)

Ответ функции в переменную

Если используется любой из параметров max_tokens, temperature, variants, то обязательно должен быть указан параметр model

Для получения ответа на русском обязательно укажите это в тексте запроса - prompt. Не забывайте, что чем больше по размерам запрос и подробнее ответ, тем больше расходуется "токенов". Некоторое количество токенов будет выдано бесплатно при регистрации, но в дальнейшем их необходимо докупать.

Примеры:

answer = open_ai_create_completion('поздоровайся по-китайски')

После выполнения в переменной answer будет ответ сервера.

Полный вебхук вы найдете в переменной сделки open_ai_request: {"id":"cmpl-6v3pVDEZ5Hkzlm5zEzTYljuZmKFg4", "object":"text_completion","created":1679057437, "model":"text-davinci-003","choices":[{"text":"\n\n你好!", "index":0,"logprobs":null,"finish_reason":"stop"}], "usage":{"prompt_tokens":27,"completion_tokens":9,"total_tokens":36}}

В ответе указывается модель - поле model и массив с ответами в поле choices. В нашем примере там 1 ответ, в поле text - ответ, а далее его параметры. Например, на запрос из примера затрачено 36 токенов - поле total_tokens.

Если не передавать необязательные параметры, то значения по умолчанию будут следующие: model = 'text-davinci-003', max_tokens = 16, temperature=1, variants=1

max_tokens ограничивает максимальное значение completion_tokens, им регулируете в том числе размер ответа

variants - число вариантов, которые сгенерирует нейросеть

По достижению лимита токенов будет получен ответ: { "error": { "message": "You exceeded your current quota, please check your plan and billing details.", "type": "insufficient_quota", "param": null, "code": null } } Этот ответ говорит о том, что закончилась предоставленная квота и требуется выбрать тариф для оплаты.

Модерация текста нейросетью

open_ai_moderations(moderated_text)

ПараметрыОписаниеПримечание

moderated_text

текст для проверки

Данная функция оценит текст через нейросеть по разным показателям: - наличие «сексуального» контекста - проявление «ненависти» - призыв к «насилию»/«самоповреждение» - наличие «сексуального контекста в отношении несовершеннолетних» - проявление «ненависти/угрозы»/"насилие/графика"

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

Пример ответа:

{"id":"modr-6wYsfOLFauZVZJSRWXJtPJdfnEFTn","model":"text-moderation-004","results":[{"flagged":false,"categories":{"sexual":false,"hate":false,"violence":false,"self-harm":false,"sexual/minors":false,"hate/threatening":false,"violence/graphic":false},"category_scores":"sexual":0.04952487722039223,"hate":0.002161110285669565,"violence":0.002313266508281231,"self-harm":3.314739660709165e-05, "sexual/minors":0.00018231201102025807, "hate/threatening":2.090354882966494e-06, "violence/graphic":8.858629598762491e-07}}]}

Генерация картинок нейросетью

open_ai_images_generations(prompt, variants, size) - генерация картинок

prompt

описание желаемого изображения, не более 1000 символов

variants

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

size

необязательный параметр, размер картинки. Указать нужно один из вариантов 1024 (значение по умолчанию), 512 или 256. Генерирует только квадратные картинки.

Функцию помещаем в переменную для получения содержимого ответа. Ответ содержит ссылки на сгенерированные изображения

Работа нейросети и человека в чате (выстраивание диалога)

open_ai_chat_completions(client_answer, model, max_tokens, temperature) - функционал для чата, работает специфично, но это позволило оформить его в таком виде.

ПараметрыОписаниеПримечание

client_answer

текст, содержащий вопрос в чат

model

используемая модель,

'gpt-3.5-turbo-instruct'

(значение по умолчанию)

max_tokens

максимум токенов, который может быть израсходован, по умолчанию 1024.

Не забывайте учитывать ограничения версий нейросети, в частности: - 'gpt-3.5-turbo-instruct' имеет ограничение в 4096 токенов

- 'gpt-4' - в 8192 токена

temperature

необязательный параметр, значение от 0 до 2 (значение по умолчанию 1)

Чем выше значение, тем разнообразнее варианты ответов, чем меньше, тем предопределеннее будут ответы на однотипные запросы.

На данный момент доступны следующие версии: 'gpt-3.5-turbo', 'gpt-4', 'gpt-4-turbo-preview'.

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

Если Вы получаете ошибку вида:

{ "error": { "message": "The model: gpt-4 does not exist", "type": "invalid_request_error", "param": null, "code": "model_not_found" } } значит Вам недоступна данная модель, используйте модель помладше.

Список моделей для open_ai_chat_completions:

'gpt-3.5-turbo-instruct'

Общие настройки нейросети для работы с чатом

Для указания общих инструкций работы нейросети добавьте в константы проекта переменную open_ai_instruction, чтобы бот понимал как отвечать в той или иной ситуации. Например, укажите значение "Отвечай вежливо на том языке, на котором к тебе обращаются".

История хранится в переменных сделки, в переменной под названием open_ai_chat_messages.

Будьте внимательнее при редактировании значения переменной open_ai_chat_messages. При внесении некорректных правок функция может стать невыполнимой

У нейросети есть ограничение - в историю сохраняются 25 сообщений. Если их больше, то делает 25, а потом добавляет сообщение пользователя и ответ нейросети (ну и инструкцию, если ее вдруг удалило).

Роли для работы следующие: - user - пользователь - system - инструкции для бота - assistant - ответы нейросети.

Не бойтесь удалить переменную инструкции. В случае, если мы не найдем те инструкции, что были заданы в переменной open_ai_instruction, мы добавим их до добавления последнего сообщения в историю.

Как получить полный вебхук от нейросети

предусмотрено только для функций open_ai_create_completion() и open_ai_chat_completions()

Для получения полного вебхука от OpenAI достаточно присвоить любое значение переменной save_webhook(переменная может быть как константой проекта, так и переменной сделки).

При этом ответ OpenAI будет записываться в переменную open_ai_request, которую вы найдете в карточке клиента среди переменных сделки. В частности, open_ai_request будет содержать количество израсходованных токенов для выполнения запроса и прочую полезную информацию.

Функцию выполнять нужно внутри переменной и тогда в нее вернется ответ нейросети в виде текста без лишних данных и можно будет сразу отправить его клиенту.

Если что-то пошло не так (например токены закончились, бесплатный период использования истек или возникли непредвиденные ошибки из-за вмешательства в историю чата), то вернет ответ сервера полностью:

  • 'gpt-3.5-turbo', 'gpt-4', 'gpt-4-0613', 'gpt-4-32k', 'gpt-4-32k-0613', 'gpt-3.5-turbo-0613', 'gpt-3.5-turbo-16k', 'gpt-3.5-turbo-16k-0613'

Создание ассистента

Для работы с новым функционалом предварительно нужно создать и настроить ассистента в личном кабинете. Ссылка:

https://platform.openai.com/assistants

Для использования ассистента понадобится вида

'asst_llbZN9Y23hQKla7mPmOjUFOw'.

Также нужно создать и добавить в проект API ключ, как в начале документации.

Создание треда

open_ai_thread_create()

Функция не принимает параметры, возвращает вида

'thread_SEchUQQl2L1N4qnuXjEhmbGw'.

Полный ответ можно получить из переменной сделки open_ai_request , если save_webhook активирован.

Пример ответа:

{

"id":"thread_SEchUQQl2L1N4qnuXjEhmbGw",

"object":"thread",

"created_at":1712323995,

"metadata":{}

}

Добавление сообщений в тред

open_ai_thread_add_message(thread_id, content) - добавление сообщений.

Оба параметра обязательны.

thread_id - id треда, который получили ранее.

content - сообщение, которое хотим добавить в тред.

Пример ответа:

Запуск треда

open_ai_thread_run(thread_id, assistant_id, instructions, additional_instructions, model, temperature) - запуск треда

Обязательные параметры:

thread_id - id треда, который получили ранее.

assistant_id - id ассистента, который должен обработать тред.

Необязательные параметры:

instructions - можно передать инструкцию, которая будет использована для обработки треда, вместо установленной при настройке ассистента.

additional_instructions - можно передать дополнительную инструкцию.

model - модель, которую должен использовать ассистент при обработке треда.

temperature - какую температуру выборки использовать, от 0 до 2.

Пример ответа:

Получение сообщений

open_ai_thread_get_messages(thread_id) - получение сообщений из треда. Функция возвращает самое новое сообщение из треда, таким образом получаем ответ от ассистента, если тред был предварительно обработан им.

Если активирован save_webhook, в переменной будет сохранен полный ответ, в котором содержатся последние 5 сообщений треда.

Пример полного вебхука:

Пример использования

  1. В одном блоке создаем тред

  2. В другом блоке получаем любое сообщение клиента, добавляем его в тред и запускаем обработку треда с указанием и

  1. На обработку треда требуется некоторое время, поэтому запрашиваем ответ не сразу, а, например, через 20 секунд.

Получаем ответ и отправляем его в чат:

Last updated