ChatGPT
Регистрация и получение API ключа chatGPT
Внимание! Для работы с сайтом
https://chat.openai.com, регистрации, получения ключа вам потребуется VPN, т.к. со стороны OpenAI ограничена работа с пользователями из РФ.
Получить API ключ ChatGPT можно двумя способами:
1. Купить ключ с 5$ баланса в интернете
2. Пройти процедуру регистрации
3. Альтернатива:
использование GPT сервисов
Какой способ выбрать - выбирать вам. Я опишу оба способа, что бы вы могли выбрать тот что подойдёт Вам.
Получение ключа через покупку
Плюсы: быстро, просто, дешево.
Минусы: нужно найти хорошего и надежного продавца ключей.
При покупке можно взять готовый api ключ с балансом 5$ без аккаунта за 50р.
Получение ключа через Регистрацию
Плюсы: более безопасный вариант получения ключа.
Минусы: это сложный и долгий способ.
1.
Регистрация
Регистрация - самая сложная часть получения API ключа. Для регистрации нужен номер мобильного телефона с подтверждением, а со стороны OpenAI работа с пользователями из РФ ограничена, как следствие Российские мобильные номера не подходят.
Но это решаемая проблема - в интернете достаточно много сервисов помогающих с регистрацией на данном сайте.
Следуйте по шагам регистрации, введите email, пароль, номер телефона, подтверждение и т.п.
Если при регистрации вы видите ошибку: Signup is currently unavailable, please try again later. Попробуйте использовать почту сервиса Google (с окончанием @gmail.com)
2. Авторизация
3. Создание API ключа
После нажатия откроется окно, в нём нужно ввести название ключа. Например "For website". Далее нажимаем "Create secret key"
Далее открывается окно с вашим сгенерированным ключем. Сохраняем ключ его в блокнот, после закрытия окна просмотр ключа будет невозможен.
Лимиты на запросы к chatGPT
Ошибка: You exceeded your current quota, please check your plan and billing details
Обозначает, что лимит вашего аккаунта chatGPT на запросы по API исчерпан.
Подробнее о лимитах и ограничениях
1. Ограничения со стороны решения
Со стороны решения никаких ограничений нет (нет лимита на количество запросов, нет подписок, нет любых других ограничений)
2. Ограничения со стороны ChatGPT / OpenAI
У ChatGPT есть тестовый бесплатный доступ к API, но он ограничен определенным объёмом вычислений и периодом тестирования.
Важно понимать - OpenAI коммерческая организация. Она в любой момент может снизить бесплатный лимит или отменить его вовсе
3. Как понять что лимит исчерпан?
После того как вы исчерпаете бесплатный лимит, при генерации будет появляться ошибка: You exceeded your current quota, please check your plan and billing details.
4. Как продолжить работу после окончания лимита?
Перейти на платный тариф либо зарегистрировать новый аккаунт и сгенерировать новый api-ключ.
5. Сразу после регистрации показывает ошибку: You exceeded your current quota, please check your plan and billing details
Бесплатные лимиты на работу с API даются при регистрации, если по номеру телефона, указанному при регистрации, не было других регистраций в системе OpenAi.
Если указанный вами номер телефона ранее уже был использован для регистрации кем то другим, вы увидите после регистрации
сообщение, информирующее вас о повторной регистрации телефона. И
лимит 0$ на запросы в разделе баланса.
Что такое прокси-сервер и где его взять? (proxy)
Что такое прокси сервер?
Прокси-сервер — это промежуточное звено, посредник при запросе от вашего сайта к адресату. Адресат думает что запрос идёт не от IP вашего сайта, а от IP прокси сервера (со всеми вытекающими вроде страны из которой идёт запрос и т.п.). Если приводить анологию - прокси сервер, это VPN для сайта.
Почему для запросов к chatGPT теперь нужен прокси сервер?
Потому что OpenAi начала блокировать запросы с IP серверов в зоне РФ.
Где взять прокси и какой брать?
Купить в интернете (набираем в поиске купить прокси и выбираем тот сайт который кажется вам наиболее надежным)
1. Прокси должен быть приватный и анонимный
2. IPv4 + HTTPS
3. Платный. Бесплатные сервера медленные и не надежные, работать с ними нормально не получится (замедление каждого запроса от 2х минут и падения в 3/4 случаев). Платный обычно стоит 150-250р в месяц.
4. Регион не РФ, но и не далеко территориально от РФ.
Где покупаю прокси для тестирования решения?
Это не рекомендация покупать прокси именно тут, это информация для примера как это выглядит, какие параметры выбираю и т.п. (практика показывает что многим не понятен процесс)
При покупке выбираю такие параметры. Страну можно выбирать любую (не РФ, не далеко от РФ). Скорость выбираю самую дешевую.
После покупки прокси отображаются в лк в удобном формате.
Использование GPT сервисов
Внимание! Приведенные в статье GPT сервисы указаны для примера, данные сервисы никак не связаны со мной и повлиять на их работу я никак не могу. Для использования выбирайте GPT сервис самостоятельно (особое внимание уделяйте надежности).
ChatGPT от OpenAi на данный момент самый иновационный и мощный инструмент генерации данных. Но из-за ограничений компании OpenAI на использование их сервиса в РФ возникает множество сложностей:
-
Неудобно регистрироваться и получать ключи
-
Необходимо использовать прокси
-
Нет возможности оплатить сервис картой РФ
-
Нет возможности использовать современные модели, например gpt-4o из за проблем с оплатой
Как можно обойти данную проблему?
Уже сейчас существует много сервисов берущих на себя посредничество межу вами и open ai. При использовании таких сервисов, запрос с сайта идёт не напрямую open ai, а сервису (который далее делает запрос к серверам open ai).
Преимущества использования таких сервисов:
Недостатки:
- Цена за токен дороже чем у OpenAI
Пример таких сервисов и как использовать их в решении
Настроить решение на работу с сервисом достаточно просто:
1. Настройки вводим на вкладке "Настройки chatGPT", при запросах AI-модель выбираем "ChatGPT"
2. В качестве "Ключа API" - указываем ключ полученный в данном сервисе
3. Proxy можно не заполнять
4. В настройке "Кастомный адрес сервера" указываем адрес данного сервиса, для сервиса примера это
https://api.proxyapi.ru/openai/v1 (для каждого сервиса адрес свой, если не понятно какой адрес указывать - напишите в поддержку я подскажу)
5. Всё готово, все необходимые настройки выполнены, можно использовать.
GigaChat
Регистрация и получение API ключа GigaChat
Получить доступ к API GigaChat просто.
Ниже описан механизм регистрации для физических лиц (с бесплатным лимитом в 1 миллион токенов)
2. В левом меню нажимаем создать проект, в инструментах выбираем GigaChat API, проходим на следующие шаги создания (заполняем название проекта и т.п.)
3. Заходим в созданный проект
4. В другой вкладке браузера открываем сайт, настройки решения, вкладку Сбер GigaChat. Туда мы будем вносить нужные данные
5. В открытом проекте смотрим правую колонку, там нас интересует Scope. Устанавливаем в настройках решения соотвествующее значение параметра Scope.
Так же нас интересует кнопка сгенерировать Client Secret. Нажимаем её
5. Открывается окно с новым Client Secret. Тут нам нужно поле авторизационные данные. Копируем его значение в настройки решения, в соотвествующее поле, жмём готово в окне создания Client Secret.
6. Сохраняем настройки решения. Если всё сделано корректно, запросы к Сбер Гигачату из решения начнут проходить корректно.
Массовая генерация
Начиная с версии 2.0.0 решение поддерживает массовую генерацию данных.
Перед использованием массовой генерации, рекомендую поработать с генерацией данных для отдельных элементов. Это даст вам понимание механизмов работы решения.
Для массовой генерации данных перейдите в список разделов или элементов инфоблока. Выберите элементы с которыми хотите работать, в меню действия выберите Генератор ChatGPT, нажмите применить
После нажатия применить откроется окно массовой генерации, в котором вы сможете выбрать нужные параметры и запустить генерацию.
Типовые ошибки и их решение
Ошибка, обратитесь в техническую поддержку решения.
Периодически в поддержку приходит запрос:
При генерации (чаще больших по объёму) текстов выпадает ошибка: "Ошибка, обратитесь в техническую поддержку решения."
Из за чего появляется такая ошибка?
Чем более сложный и длинный текст вам нужно создать, тем дольше СhatGPT будет "думать". Создание текстов текстов длинной 4-5тыс. символов обычно занимает 60-120 секунд. Сайт в это время должен не обрывать выполнение скрипта, ждать ответа.
Обычно на хостингах (или vds) по умолчанию стоит достаточно маленькое максимальное время выполнения скрипта - 30-60 секунд. Соответственно по достижению этого времени сервер прерывает работу скрипта, не дождавшись ответа.
Как поправить ошибку?
Увеличить лимит на выполнение скрипта на сервере.
Единого ответа какую настройку поменять что бы оно увеличилось нет, т.к. сборок сервера может быть очень много (сброс может происходит на разных уровнях, на mysql, nginx и т.п.).
Для того что бы точно понять на каком уровне - нужно посмотреть лог ошибок.
1) Если в логах ошибка [2006] MySQL server has gone away (400), скорее всего вам поможет:
Добавление в /bitrix/php_interface/after_connect.php строки
$DB->Query("SET wait_timeout=28800");
и добавление в /bitrix/php_interface/after_connect_d7.php
$connection->queryExecute("SET wait_timeout=28800");
или $this->queryExecute("SET wait_timeout=28800");
В зависимости от того, $connection или $this используется у вас в этом файле
2) Другие примеры будут появляться по мере изучения.
Рекомендуемое время выполнения скрипта
Рекомендуемое время выполнения скрипта - не менее 300 секунд.
Ошибка: Failed to connect to 91.218.50.25
Периодически пользователи обращаются с вопросом, возникала ошибка: "Ошибка: Failed to connect to 91.218.50.25 port 9128 after 1201 ms" (ip и port могут отличаться) из за чего она и как её решить?
Тут всё просто, ошибка обозначает что нет соединения с прокси сервером. Проверьте корректность указания прокси сервера, не закончилась ли оплата прокси и т.п.
Публичное API (beta)
Описание API
Публичное API - набор функций которые можно использовать для реализации своих сценариев работы. Для работы с API необходимы навыки программирования.
Публичное API в данный момент находится в активной фазе разработки, все опубликованные функции работают в beta-режиме (будьте внимательны при использовании, прорабатывайте все возможные ситуации).
Техническая поддержка по API
Техническая поддержка распространяется только на сами API функции, техническая поддержка не распространяется на прочий код внутри которого используется API.
Если API работает не верно, для демонстрации проблемы необходимо создать тестовую страничку, на ней разместить код вызова api функции в ситуации вызывающей проблему
Простой запрос к AI
Первая базовая функция API - простой запрос к AI. Задаём вопрос, получаем ответ.
$result = \Arturgolubev\Chatgpt\Api::simpleRequest($question, $options);
Имеет два входных параметра, на выходе формирует массив.
Входные параметры:
$question - строка, запрос
$options - массив, параметры. Поддерживаются ключи:
- provider (строка, возможные значения sber или chatgpt), определяет к какой системе запрос
- keynum (число, от 0 до n), используется только для chatgpt, если в настройках указано несколько ключей указывает какой из них использовать для запроса
Выходные параметры:
$result - массив результатов. Имеющиеся ключи:
- success - если запрос прошел успешно, будет = 1
- answer - если запрос прошел успешно тут будет ответ
- error_message - при ошибках в данном ключе будет выведена ошибка
- debug - массив для внутренней отладки работы api, опираться на данные этого массива не стоит, его содержимое может меняться
Пример кода:
if(\Bitrix\Main\Loader::includeModule('arturgolubev.chatgpt')){
$question = 'Как тебя зовут?';
$options = [
'provider' => 'sber', // chatgpt or sber
'keynum' => 0, // only for chatgpt
];
$result = \Arturgolubev\Chatgpt\Api::simpleRequest($question, $options);
echo '<pre>'; print_r($result); echo '</pre>';
}
События
Событие модификации вопроса перед отправкой (элементы)
Событие modifyElementQuestionBeforeSend срабатывает перед отправкой запроса к chatgpt при генерации данных для элементов.
Через данное событие можно скорректировать запрос, заменить свои макросы и т.п.
AddEventHandler('arturgolubev.chatgpt', "modifyElementQuestionBeforeSend", "modifyElementQBeforeSend");
function modifyElementQBeforeSend(&$question, $params, $curElement){
// $question - запрос к chatgpt который можно редактировать
// $params - параметры генерации
// $curElement - данные элемента для которого происходит генерация
}
Событие модификации вопроса перед отправкой (разделы)
Событие modifySectionQuestionBeforeSend срабатывает перед отправкой запроса к chatgpt при генерации данных для разделов.
Через данное событие можно скорректировать запрос, заменить свои макросы и т.п.
AddEventHandler('arturgolubev.chatgpt', "modifySectionQuestionBeforeSend", "modifySectionQBeforeSend");
function modifySectionQBeforeSend(&$question, $params, $curSection){
// $question - запрос к chatgpt который можно редактировать
// $params - параметры генерации
// $curSection - данные раздела для которого происходит генерация
}
Событие модификации ответа (элементы)
Событие modifyElementAnswer срабатывает после получения ответа от chatgpt при генерации данных для элементов.
Через данное событие можно скорректировать ответ
AddEventHandler('arturgolubev.chatgpt', "modifyElementAnswer", "modifyElementAnswer");
function modifyElementAnswer(&$answer, $params, $curElement){
// $answer - ответ chatgpt который можно редактировать
// $params - параметры генерации
// $curElement - данные элемента для которого происходит генерация
// небольшой пример коррекции ответа
if(!is_array($data['result']['error'])){
$answer['result']['choices'][0]['message']['content'] .= '. Информация была сгенерирована chatGPT';
}
}
Событие модификации ответа (разделы)
Событие modifySectionAnswer срабатывает после получения ответа от chatgpt при генерации данных для разделов.
Через данное событие можно скорректировать ответ
AddEventHandler('arturgolubev.chatgpt', "modifySectionAnswer", "modifySectionAnswer");
function modifySectionAnswer(&$answer, $params, $curSection){
// $answer - ответ chatgpt который можно редактировать
// $params - параметры генерации
// $curSection - данные элемента для которого происходит генерация
// небольшой пример коррекции ответа
if(!is_array($data['result']['error'])){
$answer['result']['choices'][0]['message']['content'] .= '. Информация была сгенерирована chatGPT';
}
}