Готовые решения для 1С-Битрикс
Карточка решения
База знаний по решению:
Интеграция с ChartGPT и GigaChat

Все часто задаваемые вопросы по решению: Интеграция с ChartGPT и GigaChat

ChatGPT

Регистрация и получение API ключа chatGPT

Внимание! Для работы с сайтом https://chat.openai.com, регистрации, получения ключа вам потребуется VPN, т.к. со стороны OpenAI ограничена работа с пользователями из РФ.

Получить API ключ ChatGPT можно двумя способами:

1. Купить ключ с 5$ баланса в интернете
2. Пройти процедуру регистрации
3. Альтернатива: использование GPT сервисов

Какой способ выбрать - выбирать вам. Я опишу оба способа, что бы вы могли выбрать тот что подойдёт Вам.

Получение ключа через покупку

Плюсы: быстро, просто, дешево.
Минусы: нужно найти хорошего и надежного продавца ключей.

При покупке можно взять готовый api ключ с балансом 5$ без аккаунта за 50р.

Получение ключа через Регистрацию

Плюсы: более безопасный вариант получения ключа.
Минусы: это сложный и долгий способ.

1. Регистрация

Регистрация - самая сложная часть получения API ключа. Для регистрации нужен номер мобильного телефона с подтверждением, а со стороны OpenAI работа с пользователями из РФ ограничена, как следствие Российские мобильные номера не подходят.

Но это решаемая проблема - в интернете достаточно много сервисов помогающих с регистрацией на данном сайте.

Для регистрации перейдите на сайт https://chat.openai.com/auth/login и нажмите кнопку "Sign up", чтобы создать учетную запись OpenAI.

Следуйте по шагам регистрации, введите email, пароль, номер телефона, подтверждение и т.п.

Если при регистрации вы видите ошибку: Signup is currently unavailable, please try again later. Попробуйте использовать почту сервиса Google (с окончанием @gmail.com)

2. Авторизация

Перейдите на сайт https://chat.openai.com/auth/login и нажмите кнопку "Log in". Введите ваш Логин, Пароль и нажмите Continue

s1.jpg

3. Создание API ключа

Перейдите на страницу https://platform.openai.com/account/api-keys и нажмите кнопку "Create new secret key"

s2.jpg

После нажатия откроется окно, в нём нужно ввести название ключа. Например "For website". Далее нажимаем "Create secret key"

s3.jpg

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

s4.jpg



Лимиты на запросы к chatGPT

Ошибка: You exceeded your current quota, please check your plan and billing details

Обозначает, что лимит вашего аккаунта chatGPT на запросы по API исчерпан.

Подробнее о лимитах и ограничениях


1. Ограничения со стороны решения
Со стороны решения никаких ограничений нет (нет лимита на количество запросов, нет подписок, нет любых других ограничений)

2. Ограничения со стороны ChatGPT / OpenAI
У ChatGPT есть тестовый бесплатный доступ к API, но он ограничен определенным объёмом вычислений и периодом тестирования.

Посмотреть ваш оставшийся лимит можно на странице https://platform.openai.com/account/usage

Важно понимать - 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. Регион не РФ, но и не далеко территориально от РФ.



Где покупаю прокси для тестирования решения?
Это не рекомендация покупать прокси именно тут, это информация для примера как это выглядит, какие параметры выбираю и т.п. (практика показывает что многим не понятен процесс)
На сайте proxy.market

При покупке выбираю такие параметры. Страну можно выбирать любую (не РФ, не далеко от РФ). Скорость выбираю самую дешевую.

proxy-1.png


После покупки прокси отображаются в лк в удобном формате.

proxy-2.png


Использование GPT сервисов

Внимание! Приведенные в статье GPT сервисы указаны для примера, данные сервисы никак не связаны со мной и повлиять на их работу я никак не могу. Для использования выбирайте GPT сервис самостоятельно (особое внимание уделяйте надежности).

ChatGPT от OpenAi на данный момент самый иновационный и мощный инструмент генерации данных. Но из-за ограничений компании OpenAI на использование их сервиса в РФ возникает множество сложностей:
  • Неудобно регистрироваться и получать ключи
  • Необходимо использовать прокси
  • Нет возможности оплатить сервис картой РФ
  • Нет возможности использовать современные модели, например gpt-4o из за проблем с оплатой

Как можно обойти данную проблему?


Уже сейчас существует много сервисов берущих на себя посредничество межу вами и open ai. При использовании таких сервисов, запрос с сайта идёт не напрямую open ai, а сервису (который далее делает запрос к серверам open ai).

Преимущества использования таких сервисов:
  • Нет проблем с регистрацией и оплатой из РФ
  • Не нужен прокси
  • Нет ограничений на доступ к моделям

Недостатки:
  • Цена за токен дороже чем у OpenAI

Пример таких сервисов и как использовать их в решении


Для примера приведу сервис https://proxyapi.ru/ (в будущем список сервисов будет расширен)


Настроить решение на работу с сервисом достаточно просто:

1. Настройки вводим на вкладке "Настройки chatGPT", при запросах AI-модель выбираем "ChatGPT"

2. В качестве "Ключа API" - указываем ключ полученный в данном сервисе

3. Proxy можно не заполнять

4. В настройке "Кастомный адрес сервера" указываем адрес данного сервиса, для сервиса примера это https://api.proxyapi.ru/openai/v1 (для каждого сервиса адрес свой, если не понятно какой адрес указывать - напишите в поддержку я подскажу)

5. Всё готово, все необходимые настройки выполнены, можно использовать.




GigaChat

Регистрация и получение API ключа GigaChat

Получить доступ к API GigaChat просто.

Ниже описан механизм регистрации для физических лиц (с бесплатным лимитом в 1 миллион токенов)

1. Заходим на https://developers.sber.ru/studio/workspaces/ и регистрируемся (телефон или сбер айди)
2. В левом меню нажимаем создать проект, в инструментах выбираем GigaChat API, проходим на следующие шаги создания (заполняем название проекта и т.п.)

Создание проекта сбер гигачат

3. Заходим в созданный проект

Новый проект сбер гигачат

4. В другой вкладке браузера открываем сайт, настройки решения, вкладку Сбер GigaChat. Туда мы будем вносить нужные данные

Настройки решения


5. В открытом проекте смотрим правую колонку, там нас интересует Scope. Устанавливаем в настройках решения соотвествующее значение параметра Scope.

Так же нас интересует кнопка сгенерировать Client Secret. Нажимаем её

где найти scope сбер gigachat

5. Открывается окно с новым Client Secret. Тут нам нужно поле авторизационные данные. Копируем его значение в настройки решения, в соотвествующее поле, жмём готово в окне создания Client Secret.

Генерация авторизационных данных в сбер гигачат


6. Сохраняем настройки решения. Если всё сделано корректно, запросы к Сбер Гигачату из решения начнут проходить корректно.

Массовая генерация

Начиная с версии 2.0.0 решение поддерживает массовую генерацию данных.

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

Для массовой генерации данных перейдите в список разделов или элементов инфоблока. Выберите элементы с которыми хотите работать, в меню действия выберите Генератор ChatGPT, нажмите применить

Массовая генерация контента chatgpt

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

Форма массовой генерации контента 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'; } }