Утилита gpt2giga — это прокси-сервер, который перенаправляет запросы, отправленные в OpenAI API, в GigaChat API.
При старте утилиты запускается HTTP-сервер, адрес которого нужно использовать вместо адреса OpenAI API, заданного в вашем приложении (например, https://api.openai.com/v1/).
Утилита обработает запрос и перенаправит его заданной модели GigaChat.
После получения ответа модели, она передаст его в приложение в формате OpenAI.
Утилита работает как с запросами на генерацию, так и с запросами на создание эмбеддингов (эндпоинты /embeddings или /v1/embeddings).
Общая схема работы gpt2giga:
sequenceDiagram
participant YourApp as Приложение
participant gpt2giga
participant GigaChat as GigaChat API
YourApp->>gpt2giga: OpenAI-запрос
gpt2giga->>GigaChat: Запрос формата GigaChat API
GigaChat->>gpt2giga: Ответ формата GigaChat API
gpt2giga->>YourApp: OpenAI-ответ
С помощью gpt2giga вы можете:
- использовать возможности моделей OpenAI и полностью заменить ChatGPT на GigaChat;
- вызывать функции через API, включая передачу и выполнение функций с аргументами;
- обрабатывать ответ модели в режиме потоковой генерации токенов с помощью параметра
stream=true; - перенаправлять запросы на создание эмбеддингов (поддерживаются эндпоинты
/embeddingsи/v1/embeddings); - работать в асинхронном режиме с множеством потоков запросов от нескольких клиентов;
- отображать подробные сведения о запросах и ответах при включенном verbose-режиме логирования;
- задавать параметры работы как с помощью аргументов командной строки, так и с помощью переменных окружения (
.env).
Утилиту можно запустить как в контейнере, с помощью Docker, так и локально.
-
Переименуйте файл
.env.exampleв.env.cp .env.example .env
-
В файле
.envукажите данные для авторизации в GigaChat API.GigaChat API поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи. Пример с
Authorization key.GPT2GIGA_HOST=0.0.0.0 GIGACHAT_CREDENTIALS=<Authorization key GigaChat API> GIGACHAT_SCOPE=<your_api_scope> GIGACHAT_MODEL=GigaChat GIGACHAT_VERIFY_SSL_CERTS=False -
Выберите образ с нужной версией Python (3.9-3.13).
PYTHON_VERSION=3.10
docker pull gigateam/gpt2giga:python${PYTHON_VERSION}Доступные образы можно увидеть на https://hub.docker.com/r/gigateam/gpt2giga
4. Запустите контейнер с помощью Docker Compose: docker-compose up -d
Для локального запуска:
-
Установите пакет gpt2giga с помощью менеджера пакетов pip:
pip install gpt2giga
Вы также можете использовать исходники:
pip install git+https://github.com/ai-forever/gpt2giga.git
После установки пакета вы сможете использовать команду
gpt2giga, которая позволяет запускать и настраивать прокси-сервер. -
Переименуйте файл
.env.exampleв.envи сохраните его в корне своего проекта:cp .env.example .env
-
В файле
.envукажите данные для авторизации в GigaChat API.GigaChat API поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи.
[!NOTE] Кроме переменных gpt2giga в
.envможно указать переменные окружения, которые поддерживает python-библиотека GigaChat. -
В терминале выполните команду
gpt2giga.
Запустится прокси-сервер, по умолчанию доступный по адресу localhost:8090.
Адрес и порт сервера, а также другие параметры, можно настроить с помощью аргументов командной строки или переменных окружения.
Вы можете изменять параметры работы утилиты с помощью аргументов командной строки или переменных окружения.
Утилита поддерживает аргументы 2 типов(настройки прокси и настройки GigaChat:
-
--env-path <PATH>— путь до файла с переменными окружения.env. По умолчанию ищется.envв текущей директории. -
--proxy-host <HOST>— хост, на котором запускается прокси-сервер. По умолчаниюlocalhost; -
--proxy-port <PORT>— порт, на котором запускается прокси-сервер. По умолчанию8090; -
--proxy-use-https <True/False>— Использовать ли https. По умолчаниюFalse; -
--proxy-https-key-file <PATH>— Путь до key файла для https. По умолчаниюNone; -
--proxy-https-cert-file <PATH>— Путь до cert файла https. По умолчаниюNone; -
--proxy-pass-model— передавать в GigaChat API модель, которую указал клиент в полеmodelв режиме чата; -
--proxy-pass-token— передавать токен, полученный в заголовкеAuthorization, в GigaChat API. С помощью него можно настраивать передачу ключей в GigaChat черезOPENAI_API_KEY; -
--proxy-embeddings <EMBED_MODEL>— модель, которая будет использоваться для создания эмбеддингов. По умолчаниюEmbeddingsGigaR; -
--proxy-enable-images— экспериментальный флаг, который включает передачу изображений в формате OpenAI в GigaChat API -
--proxy-log-level— Уровень логов(INFO, DEBUG, WARNING). По умолчаниюINFO
Далее идут стандартные настройки из библиотеки GigaChat:
--gigachat-base-url <BASE_URL>— базовый URL для GigaChat API. По умолчанию берется значение переменнойGIGACHAT_BASE_URLили поляBASE_URLвнутри пакета;--gigachat-auth-url <AUTH_URL>— базовый URL для Auth GigaChat API. По умолчанию берется значение переменнойGIGACHAT_AUTH_URLили поляAUTH_URLвнутри пакета;--gigachat-credentials <BASE_URL>— Креды гигачат;--gigachat-scope <GIGACHAT_SCOPE>— Скоуп гигачат (API_CORP, API_PERS...);--gigachat-user <GIGACHAT_USER>— Вариант авторизации через user/password;--gigachat-password <GIGACHAT_PASSWORD>— Вариант авторизации через user/password;--gigachat-access_token <ACCESS_TOKEN>— JWE токен;--gigachat-model <MODEL>— модель для запросов в GigaChat. По умолчаниюGIGACHAT_MODEL;--gigachat-profanity-check <True/False>— Параметр цензуры. По умолчаниюNone;--gigachat-timeout <TIMEOUT>— таймаут для запросов к GigaChat API. По умолчанию30секунд;--gigachat-verify-ssl-certs <True/False>- проверять сертификаты SSL (по умолчаниюTrue)
Для настройки параметров утилиты также можно использовать переменные окружения, заданные в файле .env.
У настроек прокси префикс GPT2GIGA_, у настроек GigaChat: GIGACHAT_
Список доступных переменных:
GPT2GIGA_HOST="localhost"— хост, на котором запускается прокси-сервер. По умолчаниюlocalhost;GPT2GIGA_PROXY_PORT="8090"— порт, на котором запускается прокси-сервер. По умолчанию8090;GPT2GIGA_VERBOSE="False"— включает/отключает вывод подробной информации;GPT2GIGA_PASS_MODEL="False"— передавать ли модель, указанную в запросе, непосредственно в GigaChat;GPT2GIGA_PASS_TOKEN="False"— передавать токен, полученный в заголовкеAuthorization, в GigaChat API;GIGACHAT_BASE_URL="https://gigachat.devices.sberbank.ru/api/v1"— базовый URL GigaChat;GIGACHAT_MODEL="GigaChat"— модель GigaChat API, которая будет обрабатывать запросы по умолчанию;GPT2GIGA_TIMEOUT="600"— таймаут для запросов к GigaChat API (в секундах);GIGACHAT_MTLS_AUTH- использовать аутентификацию по сертефикатам mTLS;GPT2GIGA_EMBEDDINGS="EmbeddingsGigaR"— модель для создания эмбеддингов.
Также можно использовать переменные, которые поддерживает библиотека GigaChat:
GIGACHAT_USERиGIGACHAT_PASSWORD— для авторизации с помощью с помощью логина и пароля;GIGACHAT_CREDENTIALSиGIGACHAT_SCOPE— для авторизации с помощью ключа авторизации;GIGACHAT_ACCESS_TOKEN— для авторизации с помощью токена доступа, полученного в обмен на ключ;GIGACHAT_CA_BUNDLE_FILE- путь к файлу сертификата корневого центра сертификации;GIGACHAT_CERT_FILE- путь к клиентскому сертификату;GIGACHAT_KEY_FILE- путь к закрытому ключу;GIGACHAT_KEY_FILE_PASSWORD- пароль от закрытого ключа;GIGACHAT_VERIFY_SSL_CERTS— для того, что бы проверять SSL сертификаты, по умолчаниюFalse.
Для запуска прокси-сервера с заданным адресом и портом выполните команду:
gpt2giga \
--proxy-host 127.0.0.1 \
--proxy-port 8080 \
--proxy-log-level \
--pass-model \
--pass-token \
--base-url https://gigachat.devices.sberbank.ru/api/v1 \
--model GigaChat-Max \
--timeout 300 \
--embeddings EmbeddingsGigaRПосле запуска сервер будет перенаправлять все запросы, адресованные OpenAI API, в GigaChat API.
Утилита может авторизовать запросы в GigaChat API с помощью данных, полученных в заголовке Authorization.
Для этого запустите gpt2giga с аргументом --pass-token или задайте переменную окружения GPT2GIGA_PASS_TOKEN=True.
Поддерживается авторизация с помощью ключа, токена доступа и логина и пароля.
Возможные варианты содержимого заголовка Authorization:
giga-cred-<credentials>:<scope>— авторизация с помощью ключа. Вместо<scope>нужно указать версию API, к которой будут выполняться запросы. Подробнее о ключе авторизации и версии API.giga-auth-<access_token>— при авторизации с помощью токена доступа. Токен доступа получается в обмен на ключ авторизации и действителен в течение 30 минут.giga-user-<user>:<password>— при авторизации с помощью логина и пароля.
Таблица содержит приложения, проверенные на совместную работу с gpt2giga.
| Приложение | Описание |
|---|---|
| Aider | AI-ассистент для написания приложений. Подробнее о запуске и настройке Aider для работы с gpt2giga — в README |
| n8n | Платформа для создания nocode-агентов |
| Cline | AI-ассистент разработчика |
| OpenHands | AI-ассистент для разработки Подробнее о запуске и настройке OpenHands для работы с gpt2giga — в README |
Проект распространяется под лицензией MIT. Подробная информация — в файле LICENSE.