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 сообщений треда.
Пример полного вебхука:
Пример использования
В одном блоке создаем тред
В другом блоке получаем любое сообщение клиента, добавляем его в тред и запускаем обработку треда с указанием и
На обработку треда требуется некоторое время, поэтому запрашиваем ответ не сразу, а, например, через 20 секунд.
Получаем ответ и отправляем его в чат:
Last updated