Утилита для проксирования OpenAI и Anthropic запросов в GigaChat
Project description
Утилита для проксирования OpenAI/Anthropic-запросов в GigaChat
Содержание
- Описание
- Возможности gpt2giga
- Начало работы
- Примеры
- Параметры
- Авторизация с помощью заголовка
- Использование HTTPS
- Использование API ключа
- Системные эндпоинты
- Совместимые приложения
- Вклад и PR-шаблоны
Описание
Утилита gpt2giga — это прокси-сервер, который перенаправляет запросы, отправленные в OpenAI API или Anthropic Messages API, в GigaChat API.
При старте утилиты запускается HTTP-сервер, адрес которого нужно использовать вместо адреса OpenAI API (например, https://api.openai.com/v1/) или Anthropic API (например, https://api.anthropic.com/v1/), заданного в вашем приложении.
Утилита обработает запрос и перенаправит его заданной модели GigaChat.
После получения ответа модели, она передаст его в приложение в формате исходного API (OpenAI или Anthropic).
Утилита работает как с запросами на генерацию, так и с запросами на создание эмбеддингов (эндпоинты /embeddings или /v1/embeddings).
Общая схема работы gpt2giga:
sequenceDiagram
participant YourApp as Приложение
participant gpt2giga
participant GigaChat as GigaChat API
YourApp->>gpt2giga: OpenAI / Anthropic запрос
gpt2giga->>GigaChat: Запрос формата GigaChat API
GigaChat->>gpt2giga: Ответ формата GigaChat API
gpt2giga->>YourApp: OpenAI / Anthropic ответ
Возможности gpt2giga
С помощью gpt2giga вы можете:
- использовать OpenAI-совместимые и Anthropic-совместимые клиенты поверх GigaChat без переписывания основного клиентского кода;
- работать через OpenAI Chat Completions API и OpenAI Responses API;
- использовать Anthropic Messages API, включая стриминг, tool use и extended thinking;
- вызывать функции и инструменты через API, включая передачу аргументов в OpenAI- и Anthropic-совместимом формате;
- использовать structured outputs для получения JSON-ответов;
- обрабатывать ответы модели в потоковом режиме с помощью
stream=true; - создавать эмбеддинги через
/embeddingsи/v1/embeddings; - использовать подготовленные OpenAI-совместимые Files API и Batches API после включения соответствующих роутеров в следующем релизе;
- использовать подготовленный Anthropic Message Batches API после включения соответствующего роутера в следующем релизе;
- получать список моделей и информацию о конкретной модели через OpenAI-совместимый Models API;
- использовать LiteLLM-совместимый эндпоинт
/model/infoдля клиентов и автодополнения моделей; - работать с несколькими клиентами и множеством запросов в асинхронном режиме;
- настраивать прокси через
.env, переменные окружения и аргументы командной строки; - включать логирование, HTTPS и API-key авторизацию для локальной разработки и production-сценариев.
Поддерживаемые API routes
Ниже перечислены основные route-группы официальных OpenAI и Anthropic API и отмечено, что из этого поддерживается в gpt2giga. Все смонтированные маршруты в gpt2giga доступны как без префикса, так и с префиксом /v1, например /chat/completions и /v1/chat/completions.
OpenAI API
| Route / группа | Официальный OpenAI API | В gpt2giga | Что поддерживается |
|---|---|---|---|
POST /chat/completions |
Да | Да | Основной чатовый эндпоинт, включая stream=true, tools/function calling, structured outputs, работу с вложениями |
GET /models |
Да | Да | Список доступных моделей GigaChat в OpenAI-совместимом виде |
GET /models/{model} |
Да | Да | Информация по конкретной модели |
POST /embeddings |
Да | Да | Создание эмбеддингов через модель из запроса или настроек прокси |
POST /responses |
Да | Да | OpenAI Responses API для новых клиентов |
POST /files |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
GET /files |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
GET /files/{file_id} |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
DELETE /files/{file_id} |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
GET /files/{file_id}/content |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
POST /batches |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
GET /batches |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
GET /batches/{batch_id} |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
GET/POST /chat/completions stored-completions routes |
Да | Нет | Маршруты для хранения, выборки и обновления сохранённых chat completions не реализованы |
POST /completions |
Да | Нет | Legacy Completions API не реализован |
POST /images* |
Да | Нет | Генерация и редактирование изображений не реализованы |
POST /audio* |
Да | Нет | Speech / transcription / translation не реализованы |
POST /moderations |
Да | Нет | Moderations API не реализован |
POST /uploads* |
Да | Нет | Uploads API не реализован |
POST /fine_tuning* |
Да | Нет | Fine-tuning API не реализован |
POST /assistants*, POST /threads*, POST /runs* |
Да | Нет | Assistants/Threads/Runs API не реализованы |
POST /vector_stores* |
Да | Нет | Vector Stores API не реализован |
Realtime API |
Да | Нет | Realtime/WebSocket API не реализован |
Anthropic API
| Route / группа | Официальный Anthropic API | В gpt2giga | Что поддерживается |
|---|---|---|---|
POST /messages |
Да | Да | Основной Messages API, включая стриминг |
POST /messages/count_tokens |
Да | Да | Подсчёт токенов для Messages API |
POST /messages/batches |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
GET /messages/batches |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
GET /messages/batches/{message_batch_id} |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
GET /messages/batches/{message_batch_id}/results |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
POST /messages/batches/{message_batch_id}/cancel |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
DELETE /messages/batches/{message_batch_id} |
Да | Временно отключено | Router-модуль подготовлен, но публичный маршрут не смонтирован до следующего релиза GigaChat SDK |
| Другие route Anthropic API | Частично | Нет | В проекте нет отдельной реализации дополнительных route вне Messages API и Message Batches API |
Коротко по покрытию
- OpenAI: поддерживается основной рабочий набор для прокси-сценариев:
models,chat/completions,responses,embeddings; router-модулиfilesиbatchesподготовлены, но временно не смонтированы. - Anthropic: поддерживается
Messages APIиcount_tokens; router-модульMessage Batches APIподготовлен, но временно не смонтирован. - Не цель проекта: полная реализация всех route официальных OpenAI/Anthropic API, включая fine-tuning, images, audio, vector stores, assistants и realtime.
Начало работы
Утилиту можно запустить как в контейнере, с помощью Docker, так и локально.
Запуск в Docker
-
Переименуйте файл
.env.exampleв.env.cp .env.example .env
-
В файле
.envукажите данные для авторизации в GigaChat API.GigaChat API поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи. Пример с
Authorization key.GPT2GIGA_MODE=PROD GPT2GIGA_HOST=0.0.0.0 GPT2GIGA_PORT=8090 GPT2GIGA_ENABLE_API_KEY_AUTH=True GPT2GIGA_API_KEY="<your_strong_api_key>" GIGACHAT_CREDENTIALS="<your_gigachat_credentials>" GIGACHAT_SCOPE=<your_api_scope> GIGACHAT_MODEL=GigaChat GIGACHAT_VERIFY_SSL_CERTS=True
-
(Опционально) Используйте образ/сборку с нужной версией Python (3.10–3.14).
Все Docker Compose-стеки лежат в папке
compose/. Вcompose/base.yamlпо умолчанию заданimage: ghcr.io/ai-forever/gpt2giga:latestиbuild.args.PYTHON_VERSION. При необходимости:- обновите
build.args.PYTHON_VERSION(если собираете образ локально); - или замените
image:на нужный тег из реестра.
PYTHON_VERSION=3.10 docker pull gigateam/gpt2giga:python${PYTHON_VERSION} docker pull ghcr.io/ai-forever/gpt2giga:py${PYTHON_VERSION}
Доступные теги смотрите в реестрах: Docker Hub и GHCR.
- обновите
-
Запустите контейнер с помощью Docker Compose:
- PROD:
docker compose --env-file .env -f compose/base.yaml --profile PROD up -d
- DEV:
docker compose --env-file .env -f compose/base.yaml --profile DEV up -d
В профиле
PRODпорт по умолчанию пробрасывается только на127.0.0.1(см.compose/base.yaml). Для доступа извне используйте reverse proxy (nginx/Traefik/Caddy) или измените bind-адрес вports:. - PROD:
Запуск в Docker с Traefik
В репозитории есть готовый стек Traefik + несколько инстансов gpt2giga в файле compose/traefik.yaml:
gpt2giga(модель по умолчаниюGigaChat) →http://localhost:8090gpt2giga-pro(модель по умолчаниюGigaChat-Pro) →http://localhost:8091gpt2giga-max(модель по умолчаниюGigaChat-Max) →http://localhost:8092- Traefik Dashboard →
http://localhost:8080/dashboard/
-
Запустите стек:
docker compose --env-file .env -f compose/traefik.yaml up -d
Важно: роутинг в Traefik в этой конфигурации завязан на HTTP
Host(см.traefik/rules.yml). Если вы обращаетесь по IP (например,127.0.0.1), задайтеHOST=127.0.0.1или отправляйте корректный заголовокHost:.
Локальный запуск
Для управления зависимостями и запуска проекта рекомендуется использовать uv.
-
Установите
gpt2giga:С помощью
uv:uv tool install gpt2giga # или uv add 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_PORT или --proxy.port).
Адрес и порт сервера, а также другие параметры, можно настроить с помощью аргументов командной строки или переменных окружения.
Документация FastAPI доступна по адресу http://localhost:<PORT>/docs.
Примеры
Подробные runnable-примеры вынесены в папку examples/.
- OpenAI Python SDK:
- Chat Completions API:
examples/openai/chat_completions/README.md - Responses API:
examples/openai/responses/README.md - Files / Batches / embeddings / models:
examples/README.md
- Chat Completions API:
- Anthropic Python SDK (Messages API):
examples/anthropic/README.md - Индекс всех примеров:
examples/README.md
Изменение параметров gpt2giga
Вы можете изменять параметры работы утилиты с помощью аргументов командной строки или переменных окружения.
Аргументы командной строки
Полный список параметров смотрите в gpt2giga --help.
⚠️ Безопасность: Не передавайте секреты (
--proxy.api-key,--gigachat.credentials,--gigachat.password,--gigachat.access-token,--gigachat.key-file-password) через аргументы командной строки — они видны всем пользователям черезps aux. Используйте переменные окружения или.envфайл (см. раздел ниже). Утилита поддерживает аргументы 2 типов (настройки прокси и настройки GigaChat):
-
--env-path <PATH>— путь до файла с переменными окружения.env. По умолчанию ищется.envв текущей директории. -
--proxy [JSON]— set proxy from JSON string (по умолчанию{}); -
--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 <true/false>— передавать в GigaChat API модель, которую указал клиент в полеmodel(для чата и эмбеддингов); -
--proxy.pass-token <true/false>— передавать токен, полученный в заголовкеAuthorization, в GigaChat API. С помощью него можно настраивать передачу ключей в GigaChat черезOPENAI_API_KEY; -
--proxy.embeddings <EMBED_MODEL>— модель для создания эмбеддингов по умолчанию. Игнорируется при--proxy.pass-model true, если клиент указалmodelв запросе. По умолчаниюEmbeddingsGigaR; -
--proxy.enable-images <true/false>— включить/выключить передачу изображений в формате OpenAI в GigaChat API (по умолчаниюTrue); -
--proxy.enable-reasoning <true/false>— включить reasoning по умолчанию (добавляетreasoning_effort="high"в payload к GigaChat, если клиент не указалreasoning_effortявно); -
--proxy.structured-output-mode <function_call/native>— режим structured output: совместимый fallback через function calling или нативноеresponse_formatGigaChat SDK 0.2.1+; -
--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).
⚠️ Безопасность: Не передавайте секреты (
--proxy.api-key,--gigachat.credentials,--gigachat.password,--gigachat.access-token,--gigachat.key-file-password) через аргументы командной строки — они видны всем пользователям черезps aux. Используйте переменные окружения или.envфайл (см. раздел ниже).
Далее идут стандартные настройки из библиотеки GigaChat:
--gigachat [JSON]— set gigachat from JSON string (по умолчанию{});--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 <CREDENTIALS>— credentials (ключ/данные авторизации) для GigaChat;--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);--gigachat.ssl-context— Пользовательский SSL контекст;--gigachat.ca-bundle-file <PATH>— Путь к CA bundle файлу для проверки TLS сертификатов;--gigachat.cert-file <PATH>— Путь к файлу клиентского сертификата;--gigachat.key-file <PATH>— Путь к файлу приватного ключа клиента;--gigachat.key-file-password <PASSWORD>— Пароль для зашифрованного файла приватного ключа;--gigachat.flags <FLAGS>— Дополнительные флаги для управления поведением клиента;--gigachat.max-connections <INT>— Максимальное количество одновременных подключений к GigaChat API;--gigachat.max-retries <INT>— Максимальное количество попыток повтора для временных ошибок. По умолчанию0(отключено);--gigachat.retry-backoff-factor <FLOAT>— Множитель задержки для повторных попыток. По умолчанию0.5;--gigachat.retry-on-status-codes <INT,INT...>— HTTP коды статуса, вызывающие повторную попытку. По умолчанию(429, 500, 502, 503, 504);--gigachat.token-expiry-buffer-ms <INT>— Буфер времени (мс) до истечения токена для запуска обновления. По умолчанию60000(60 секунд).
Пример запуска утилиты с заданными параметрами
Для запуска прокси-сервера с заданным адресом и портом выполните команду:
gpt2giga \
--proxy.host 127.0.0.1 \
--proxy.port 8080 \
--proxy.pass-model true \
--proxy.pass-token true \
--gigachat.base-url https://gigachat.devices.sberbank.ru/api/v1 \
--gigachat.model GigaChat-2-Max \
--gigachat.timeout 300 \
--proxy.embeddings EmbeddingsGigaR
Переменные окружения
Для настройки параметров утилиты также можно использовать переменные окружения, заданные в файле .env.
У настроек прокси префикс GPT2GIGA_, у настроек GigaChat: GIGACHAT_
Список доступных переменных:
GPT2GIGA_HOST="localhost"— хост, на котором запускается прокси-сервер. По умолчаниюlocalhost;GPT2GIGA_MODE="DEV"— режим запуска (DEVилиPROD). ВPRODотключаются/docs,/redoc,/openapi.json; вPRODтакже обязательно требуетсяGPT2GIGA_API_KEY, отключаются/logs,/logs/stream,/logs/html; и автоматически ужесточается CORS (нет wildcard*,allow_credentials=False);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="True"— передавать ли модель, указанную в запросе, непосредственно в GigaChat (для чата и эмбеддингов);GPT2GIGA_PASS_TOKEN="False"— передавать токен, полученный в заголовкеAuthorization, в GigaChat API;GPT2GIGA_EMBEDDINGS="EmbeddingsGigaR"— модель для создания эмбеддингов по умолчанию. ПриGPT2GIGA_PASS_MODEL=Trueиспользуется модель из запроса клиента (с fallback на это значение).GPT2GIGA_ENABLE_IMAGES="True"— флаг, который включает передачу изображений в формате OpenAI в GigaChat API;GPT2GIGA_ENABLE_REASONING="False"— включить reasoning по умолчанию (добавляетreasoning_effort="high"в payload к GigaChat, если клиент не указалreasoning_effortявно);GPT2GIGA_STRUCTURED_OUTPUT_MODE="function_call"— режим structured output:function_callсохраняет совместимый fallback через function calling,nativeпередает JSON Schema в нативное полеresponse_formatGigaChat SDK 0.2.1+ (требует поддержки модели/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).GPT2GIGA_CORS_ALLOW_ORIGINS='["*"]'— список разрешенных Origin (JSON массив);GPT2GIGA_CORS_ALLOW_METHODS='["*"]'— список разрешенных HTTP-методов (JSON массив);GPT2GIGA_CORS_ALLOW_HEADERS='["*"]'— список разрешенных заголовков (JSON массив).
Breaking change в 0.1.6:
GPT2GIGA_PASS_MODELпо умолчаниюTrue. Если клиент отправляет OpenAI/Anthropic-имя модели, оно будет передано в GigaChat. Чтобы всегда использовать модель изGIGACHAT_MODEL/ настроек прокси, задайтеGPT2GIGA_PASS_MODEL=False.
Также можно использовать переменные, которые поддерживает библиотека 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_CERT_FILE- путь к клиентскому сертификату;GIGACHAT_KEY_FILE- путь к закрытому ключу;GIGACHAT_KEY_FILE_PASSWORD- пароль от закрытого ключа;GIGACHAT_VERIFY_SSL_CERTS— для того, чтобы проверять SSL сертификаты, по умолчаниюTrue;GIGACHAT_MAX_CONNECTIONS- Максимальное количество одновременных подключений к GigaChat API;GIGACHAT_MAX_RETRIES- Максимальное количество попыток повтора для временных ошибок. По умолчанию0(отключено);GIGACHAT_RETRY_BACKOFF_FACTOR- Множитель задержки для повторных попыток. По умолчанию0.5;GIGACHAT_TOKEN_EXPIRY_BUFFER_MS- Буфер времени (мс) до истечения токена для запуска обновления. По умолчанию60000(60 секунд).
После запуска сервер будет перенаправлять все запросы, адресованные OpenAI API, в GigaChat API.
Авторизация с помощью заголовка
Утилита может авторизовать запросы в GigaChat API с помощью данных, полученных в заголовке Authorization.
Для этого запустите gpt2giga с аргументом --proxy.pass-token true или задайте переменную окружения 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=True
GPT2GIGA_HTTPS_KEY_FILE="Path to key.pem"
GPT2GIGA_HTTPS_CERT_FILE="Path to cert.pem"
После этого укажите пути к сертификатам в переменных окружения или CLI-аргументах и включите HTTPS.
Альтернатива: разместите gpt2giga за reverse proxy с TLS-терминацией:
- пример стека с Traefik:
compose/traefik.yamlи правила вtraefik/(при необходимости добавьте ACME/сертификаты под свой домен).
Использование 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 - Иначе, введите любой символ
После этого, воспользуйтесь утилитой и будут выведены логи.
⚠️ Безопасность: Эндпоинты
/logs*предназначены только для разработки. ВPRODрежиме (GPT2GIGA_MODE=PROD) они автоматически отключены. Не открывайте log-эндпоинты наружу без аутентификации.
Production hardening checklist
Перед развертыванием gpt2giga в production-среде убедитесь, что выполнены следующие шаги:
Обязательные
- Режим PROD: установите
GPT2GIGA_MODE=PROD. В этом режиме автоматически отключаются/docs,/redoc,/openapi.jsonи все/logs*-эндпоинты; CORS ужесточается (нет wildcard*,allow_credentials=False). - API key аутентификация: установите
GPT2GIGA_ENABLE_API_KEY_AUTH=Trueи задайте надёжныйGPT2GIGA_API_KEY(минимум 32 символа, случайная строка). - TLS-сертификаты GigaChat: установите
GIGACHAT_VERIFY_SSL_CERTS=True. Не отключайте проверку SSL в production. - HTTPS: включите
GPT2GIGA_USE_HTTPS=Trueи укажите пути к TLS-сертификатам (GPT2GIGA_HTTPS_KEY_FILE,GPT2GIGA_HTTPS_CERT_FILE), либо разместите прокси за reverse proxy (nginx, Caddy, Traefik) с TLS-терминацией. - CORS origins: ограничьте
GPT2GIGA_CORS_ALLOW_ORIGINSконкретными доменами вместо["*"]. - Секреты: храните
GIGACHAT_CREDENTIALS,GPT2GIGA_API_KEYи другие секреты в переменных окружения или secrets manager. - Не передавайте секреты через CLI: используйте
.envили переменные окружения вместо--proxy.api-keyи--gigachat.credentials(аргументы видны вps aux).
Рекомендуемые
- Reverse proxy: разместите gpt2giga за reverse proxy (nginx, Caddy и др.) для rate limiting, TLS-терминации и дополнительной фильтрации.
- Уровень логов: установите
GPT2GIGA_LOG_LEVEL=WARNINGилиINFO(неDEBUG) для production — уровеньDEBUGможет содержать чувствительные данные в логах. - Network isolation: запускайте gpt2giga в изолированной сети, чтобы исключить доступ к внутренним сервисам через SSRF.
- Мониторинг: настройте мониторинг
/healthи/pingэндпоинтов. - Ротация секретов: регулярно обновляйте
GPT2GIGA_API_KEYиGIGACHAT_CREDENTIALS.
Совместимые приложения
Таблица содержит приложения, проверенные на совместную работу с gpt2giga.
| Название агента/фреймворка | URL | Описание |
|---|---|---|
| OpenCode | https://opencode.ai/ | AI-агент с открытым исходным кодом |
| KiloCode | https://kilo.ai/ | AI-агент для написания кода, доступен в JetBrains/VSCode |
| OpenHands | https://openhands.dev/ | AI-ассистент для разработки. Подробнее о запуске и настройке OpenHands для работы с gpt2giga — в README |
| Zed | https://zed.dev/ | AI-ассистент |
| Cline | https://cline.bot/ | AI-ассистент разработчика |
| OpenAI Codex | https://github.com/openai/codex | CLI-агент от OpenAI. Подробнее о запуске и настройке Codex для работы с gpt2giga — в README |
| Aider | https://aider.chat/ | AI-ассистент для написания приложений. Подробнее о запуске и настройке Aider для работы с gpt2giga — в README |
| Langflow | https://github.com/langflow-ai/langflow | Low/No-code платформа для создания агентов |
| DeepAgentsCLI | https://github.com/langchain-ai/deepagents | Deep Agents — это платформа для работы с агентами, построенная на основе langchain и langgraph |
| CrewAI | https://github.com/crewAIInc/crewAI | Фреймворк для оркестрации агентов |
| Qwen Agent | https://github.com/QwenLM/Qwen-Agent | Фреймворк |
| PydanticAI | https://github.com/pydantic/pydantic-ai | GenAI Agent Framework, the Pydantic way |
| Camel | https://github.com/camel-ai/camel | Мультиагентный фреймворк |
| smolagents | https://github.com/huggingface/smolagents | Фреймворк от hf |
| Openclaw | https://openclaw.ai/ | Personal AI assistant |
| Claude Code | https://code.claude.com/docs/en/overview | CLI-агент от Anthropic. Подробнее о запуске и настройке Claude Code для работы с gpt2giga — в README |
| OpenAI Agents SDK | https://github.com/openai/openai-agents-python | SDK для создания агентов с function calling и handoffs. Пример использования — в examples/openai_agents.py |
| Anthropic SDK | https://github.com/anthropics/anthropic-sdk-python | Официальный Python SDK для Anthropic API. Примеры использования — в examples/anthropic/ |
| Cursor | https://cursor.com/ | Редактор с ИИ и агентом для программирования. Подробнее о запуске и настройке Cursor для работы с gpt2giga — в README |
| Qwen Code | https://github.com/QwenLM/qwen-code | CLI-агент для написания кода. Подробнее о запуске и настройке Qwen Code для работы с gpt2giga — в README |
| Xcode | https://developer.apple.com/xcode/ | Coding Intelligence и внешние агентные инструменты Apple. Подробнее о подключении Xcode к gpt2giga — в README |
Вклад и PR-шаблоны
Основной PR-шаблон по умолчанию находится в .github/PULL_REQUEST_TEMPLATE.md.
Русскоязычный вариант расположен в .github/PULL_REQUEST_TEMPLATE/ru.md.
Чтобы открыть pull request с русским шаблоном, используйте параметр GitHub template=ru.md в URL сравнения веток:
https://github.com/ai-forever/gpt2giga/compare/main...your-branch?quick_pull=1&template=ru.md
Замените your-branch на имя вашей ветки. Если базовая ветка отличается от main, замените и ее в URL.
История изменений
Подробная информация об изменениях в каждой версии доступна в файле CHANGELOG.md или CHANGELOG_en.md.
Лицензия
Проект распространяется под лицензией 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.1.6.tar.gz.
File metadata
- Download URL: gpt2giga-0.1.6.tar.gz
- Upload date:
- Size: 602.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c338bd6b3556f158605f35acf6d1d4c0e685ec36adb331527f99ff90305a911
|
|
| MD5 |
fe45269b0ec2864a560eea6382bb8cba
|
|
| BLAKE2b-256 |
4ddc71077c04102416a1773615e851b26ed1a2e7f17a62068f71d54c5f31039e
|
File details
Details for the file gpt2giga-0.1.6-py3-none-any.whl.
File metadata
- Download URL: gpt2giga-0.1.6-py3-none-any.whl
- Upload date:
- Size: 100.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f08f141e914dd7dff181e916ef2aa637b41f8de256f58e97b5e2c1f11630b20e
|
|
| MD5 |
368329763d85f972a578f21d78b6239a
|
|
| BLAKE2b-256 |
0143d8024af64c1f19ab6e01fb4b5d73221840fa952e4e7ecd209d5f8353a651
|