- Описание
- Возможности gpt2giga
- Начало работы
- Параметры
- Авторизация с помощью заголовка
- Использование HTTPS
- Использование API ключа
- Системные эндпоинты
- Совместимые приложения
Утилита 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); - работать в асинхронном режиме с множеством потоков запросов от нескольких клиентов;
- отображать подробные сведения о запросах и ответах при включенном логирования
DEBUG,INFO...; - задавать параметры работы как с помощью аргументов командной строки, так и с помощью переменных окружения (
.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.10-3.13).
PYTHON_VERSION=3.10
docker pull gigateam/gpt2giga:python${PYTHON_VERSION}Доступные образы можно увидеть на https://hub.docker.com/r/gigateam/gpt2giga
- Запустите контейнер с помощью 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 поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи.
Кроме переменных 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— Уровень логов{CRITICAL,ERROR,WARNING,INFO,DEBUG}. По умолчаниюINFO -
--proxy-log-filename— Имя лог файла. По умолчаниюgpt2giga.log -
--proxy-log-max-size— Максимальный размер файла в байтах. По умолчанию10 * 1024 * 1024(10 MB) -
--proxy-enable-api-key-auth— Нужно ли закрыть доступ к эндпоинтам (требовать API-ключ). По умолчаниюFalse -
--proxy-api-key— API ключ для защиты эндпоинтов (если enable_api_key_auth=True).
Далее идут стандартные настройки из библиотеки 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)
Для запуска прокси-сервера с заданным адресом и портом выполните команду:
gpt2giga \
--proxy-host 127.0.0.1 \
--proxy-port 8080 \
--proxy-log-level \
--proxy-pass-model \
--proxy-pass-token \
--gigachat-base-url https://gigachat.devices.sberbank.ru/api/v1 \
--gigachat-model GigaChat-Max \
--gigachat-timeout 300 \
--gigachat-embeddings EmbeddingsGigaRДля настройки параметров утилиты также можно использовать переменные окружения, заданные в файле .env.
У настроек прокси префикс GPT2GIGA_, у настроек GigaChat: GIGACHAT_
Список доступных переменных:
GPT2GIGA_HOST="localhost"— хост, на котором запускается прокси-сервер. По умолчаниюlocalhost;GPT2GIGA_PORT="8090"— порт, на котором запускается прокси-сервер. По умолчанию8090;GPT2GIGA_USE_HTTPS="False"— Использовать ли https. По умолчаниюFalse;GPT2GIGA_HTTPS_KEY_FILE=<PATH>— Путь до key файла для https. По умолчаниюNone;GPT2GIGA_HTTPS_CERT_FILE=<PATH>— Путь до cert файла https. По умолчаниюNone;GPT2GIGA_PASS_MODEL="False"— передавать ли модель, указанную в запросе, непосредственно в GigaChat;GPT2GIGA_PASS_TOKEN="False"— передавать токен, полученный в заголовкеAuthorization, в GigaChat API;GPT2GIGA_TIMEOUT="600"— таймаут для запросов к GigaChat API (в секундах);GPT2GIGA_EMBEDDINGS="EmbeddingsGigaR"— модель для создания эмбеддингов.GPT2GIGA_ENABLE_IMAGES="True"— флаг, который включает передачу изображений в формате OpenAI в GigaChat API;GPT2GIGA_LOG_LEVEL="INFO"— Уровень логов{CRITICAL,ERROR,WARNING,INFO,DEBUG}. По умолчаниюINFOGPT2GIGA_LOG_FILENAME="gpt2giga.log"— Имя лог файла. По умолчаниюgpt2giga.logGPT2GIGA_LOG_MAX_SIZE="10*1024*1024"Максимальный размер файла в байтах. По умолчанию10 * 1024 * 1024(10 MB)GPT2GIGA_ENABLE_API_KEY_AUTH="False"— Нужно ли закрыть доступ к эндпоинтам (требовать API-ключ). По умолчаниюFalseGPT2GIGA_API_KEY=""— API ключ для защиты эндпоинтов (если enable_api_key_auth=True).
Также можно использовать переменные, которые поддерживает библиотека GigaChat:
GIGACHAT_BASE_URL="https://gigachat.devices.sberbank.ru/api/v1"— базовый URL GigaChat;GIGACHAT_MODEL="GigaChat"— модель GigaChat API, которая будет обрабатывать запросы по умолчанию;GIGACHAT_USERиGIGACHAT_PASSWORD— для авторизации с помощью с помощью логина и пароля;GIGACHAT_CREDENTIALSиGIGACHAT_SCOPE— для авторизации с помощью ключа авторизации;GIGACHAT_ACCESS_TOKEN— для авторизации с помощью токена доступа, полученного в обмен на ключ;GIGACHAT_CA_BUNDLE_FILE- путь к файлу сертификата корневого центра сертификации;GIGACHAT_MTLS_AUTH— использовать аутентификацию по сертефикатам mTLS;GIGACHAT_CERT_FILE- путь к клиентскому сертификату;GIGACHAT_KEY_FILE- путь к закрытому ключу;GIGACHAT_KEY_FILE_PASSWORD- пароль от закрытого ключа;GIGACHAT_VERIFY_SSL_CERTS— для того, что бы проверять SSL сертификаты, по умолчаниюFalse.
После запуска сервер будет перенаправлять все запросы, адресованные 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>— при авторизации с помощью логина и пароля.
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8090", api_key="giga-cred-<credentials>:<scope>")
completion = client.chat.completions.create(
model="gpt-5",
messages=[
{"role": "user", "content": "Кто ты?"},
],
)Утилита может использоваться с протоколом HTTPS, пример генерации сертификатов:
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout key.pem -out cert.pem -subj "/CN=localhost" -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"GPT2GIGA_USE_HTTPS=False
GPT2GIGA_HTTPS_KEY_FILE="Path to key.pem"
GPT2GIGA_HTTPS_CERT_FILE="Path to cert.pem"После этого, в переменные окружения или в cli-args нужно добавить данные сертификаты.
GPT2GIGA_ENABLE_API_KEY_AUTH=True
GPT2GIGA_API_KEY=123После этого, в сервисе будет добавлена авторизация по токену. Возможны разные варианты выполнения запросов, например: Авторизация по запросу:
curl -L http://localhost:8090/models?x-api-key=123Авторизация по заголовкам:
curl -H "x-api-key:123" -L http://localhost:8090/modelsАвторизация через Bearer:
curl -H "Authorization: Bearer 123" -L http://localhost:8090/modelsfrom openai import OpenAI
client = OpenAI(base_url="http://localhost:8090", api_key="123")
completion = client.chat.completions.create(
model="gpt-5",
messages=[
{"role": "user", "content": "Кто ты?"},
],
)GET /healthGET | POST /pingGET /logs/{last_n_lines}- получение последних N строчек из логов;GET /logs/stream- SSE стриминг логов;GET /logs/html- HTML страница для удобства просмотра стрима логов
При использовании можно зайти на страницу: http://localhost:8090/logs/html и:
- Если используется API ключ Использование API ключа, то введите ваш
GPT2GIGA_API_KEY - Иначе, введите любой символ
После этого, воспользуйтесь утилитой и будут выведены логи
Таблица содержит приложения, проверенные на совместную работу с gpt2giga.
| Приложение | Описание |
|---|---|
| Aider | AI-ассистент для написания приложений. Подробнее о запуске и настройке Aider для работы с gpt2giga — в README |
| n8n | Платформа для создания nocode-агентов |
| Cline | AI-ассистент разработчика |
| OpenHands | AI-ассистент для разработки Подробнее о запуске и настройке OpenHands для работы с gpt2giga — в README |
Проект распространяется под лицензией MIT. Подробная информация — в файле LICENSE.