No project description provided
Project description
Утилита для проксирования OpenAI-запросов в GigaChat
Содержание
- Описание
- Возможности 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
С помощью gpt2giga вы можете:
- использовать возможности моделей OpenAI и полностью заменить ChatGPT на GigaChat;
- вызывать функции через API, включая передачу и выполнение функций с аргументами;
- обрабатывать ответ модели в режиме потоковой генерации токенов с помощью параметра
stream=true; - перенаправлять запросы на создание эмбеддингов (поддерживаются эндпоинты
/embeddingsи/v1/embeddings); - работать в асинхронном режиме с множеством потоков запросов от нескольких клиентов;
- общение в openai-формате с файлом.
- отображать подробные сведения о запросах и ответах при включенном логирования
DEBUG,INFO...; - задавать параметры работы как с помощью аргументов командной строки, так и с помощью переменных окружения (
.env).
Начало работы
Утилиту можно запустить как в контейнере, с помощью Docker, так и локально.
Запуск в 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.
Адрес и порт сервера, а также другие параметры, можно настроить с помощью аргументов командной строки или переменных окружения.
Изменение параметров gpt2giga
Вы можете изменять параметры работы утилиты с помощью аргументов командной строки или переменных окружения.
Аргументы командной строки
Утилита поддерживает аргументы 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
Утилита может использоваться с протоколом 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 нужно добавить данные сертификаты.
Использование API ключа
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/models
from 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 |
| KiloCode | AI-кодовый агент |
Лицензия
Проект распространяется под лицензией MIT. Подробная информация — в файле LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gpt2giga-0.0.15.tar.gz.
File metadata
- Download URL: gpt2giga-0.0.15.tar.gz
- Upload date:
- Size: 26.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.4 CPython/3.13.3 Darwin/24.4.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
878995e5d9c6f7cd64b257fd2b8cd0964beb94035bcf00c9fd095ce5ee2b4672
|
|
| MD5 |
3ebbbf3ba8648dc9442d23ee26cfc14e
|
|
| BLAKE2b-256 |
d55c19ca65e1447c349dfe50c6ff1c34222d5f2a8dd3285e99f6c7577de3469d
|
File details
Details for the file gpt2giga-0.0.15-py3-none-any.whl.
File metadata
- Download URL: gpt2giga-0.0.15-py3-none-any.whl
- Upload date:
- Size: 26.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.4 CPython/3.13.3 Darwin/24.4.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c21342b3a69d7851b7478aebd9bc371c52769c97365bb9bc18c945503be3ccc4
|
|
| MD5 |
3b752b14defb90b41b535e10fcbec2d2
|
|
| BLAKE2b-256 |
01a92c31b3f05db4320a392a6512dce862e53174f1a7778994e445a3376af41f
|