gpt2giga
Описание
Proxy to stream OpenAI traffic to GigaChat
Языки
- Python98,9%
- HTML0,5%
- Makefile0,4%
- Dockerfile0,2%
Утилита для проксирования OpenAI/Anthropic-запросов в GigaChat
Содержание
- Описание
- Возможности gpt2giga
- Начало работы
- Примеры
- Параметры
- Авторизация с помощью заголовка
- Использование HTTPS
- Использование API ключа
- Системные эндпоинты
- Совместимые приложения
- Вклад и PR-шаблоны
Описание
Утилита gpt2giga — это прокси-сервер, который перенаправляет запросы, отправленные в OpenAI API или Anthropic Messages API, в GigaChat API.
При старте утилиты запускается HTTP-сервер, адрес которого нужно использовать вместо адреса OpenAI API (например, ) или Anthropic API (например, ), заданного в вашем приложении.
Утилита обработает запрос и перенаправит его заданной модели GigaChat.
После получения ответа модели, она передаст его в приложение в формате исходного API (OpenAI или Anthropic).
Утилита работает как с запросами на генерацию, так и с запросами на создание эмбеддингов (эндпоинты или ).
Общая схема работы gpt2giga:
Возможности gpt2giga
С помощью gpt2giga вы можете:
- использовать возможности моделей OpenAI и полностью заменить ChatGPT на GigaChat;
- использовать Anthropic SDK — эндпоинт
совместим с Anthropic Messages API, включая стриминг, tool use и extended thinking;/v1/messages - вызывать функции через API, включая передачу и выполнение функций с аргументами;
- использовать структурированный вывод (Structured Outputs) для получения гарантированного JSON-ответа;
- обрабатывать ответ модели в режиме потоковой генерации токенов с помощью параметра
;stream=true - перенаправлять запросы на создание эмбеддингов (поддерживаются эндпоинты
и/embeddings);/v1/embeddings - использовать OpenAI-совместимые Files API и Batches API (
,/files);/batches - использовать Anthropic Message Batches API (
);/v1/messages/batches - отдавать LiteLLM-совместимый эндпоинт
для клиентов и автодополнения моделей;/model/info - работать в асинхронном режиме с множеством потоков запросов от нескольких клиентов;
- общение в openai-формате с файлом;
- использовать эндпоинт
(OpenAI Responses API) для совместимости с новыми клиентами;/responses - отображать подробные сведения о запросах и ответах при включенном логировании
,DEBUG...;INFO - задавать параметры работы как с помощью аргументов командной строки, так и с помощью переменных окружения (
)..env
Начало работы
Утилиту можно запустить как в контейнере, с помощью Docker, так и локально.
Запуск в Docker
-
Переименуйте файл
в.env.example..env -
В файле
укажите данные для авторизации в GigaChat API..envGigaChat API поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи. Пример с
.Authorization key -
(Опционально) Используйте образ/сборку с нужной версией 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:
Доступные теги смотрите в реестрах: Docker Hub и GHCR.
- обновите
-
Запустите контейнер с помощью Docker Compose:
- PROD:
- DEV:
В профиле
порт по умолчанию пробрасывается только наPROD(см.127.0.0.1). Для доступа извне используйте reverse proxy (nginx/Traefik/Caddy) или измените bind-адрес вcompose/base.yaml.ports: - PROD:
Запуск в Docker с Traefik
В репозитории есть готовый стек в файле :
(модель по умолчаниюgpt2giga) →GigaChathttp://localhost:8090(модель по умолчаниюgpt2giga-pro) →GigaChat-Prohttp://localhost:8091(модель по умолчаниюgpt2giga-max) →GigaChat-Maxhttp://localhost:8092- Traefik Dashboard → http://localhost:8080/dashboard/
-
Запустите стек:
Важно: роутинг в Traefik в этой конфигурации завязан на HTTP
(см.Host). Если вы обращаетесь по IP (например,traefik/rules.yml), задайте127.0.0.1или отправляйте корректный заголовокHOST=127.0.0.1.Host:
Локальный запуск
Для управления зависимостями и запуска проекта рекомендуется использовать uv.
-
Установите
:gpt2gigaС помощью
:uvИли используя
:pipВы также можете использовать исходники:
После установки пакета вы сможете использовать команду
, которая позволяет запускать и настраивать прокси-сервер.gpt2giga -
Переименуйте файл
в.env.exampleи сохраните его в корне своего проекта:.env -
В файле
укажите данные для авторизации в GigaChat API..envGigaChat API поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи.
Кроме переменных gpt2giga в
можно указать переменные окружения, которые поддерживает python-библиотека GigaChat..env -
В терминале выполните команду
.gpt2giga
Запустится прокси-сервер, по умолчанию доступный по адресу (если не задан или ).
Адрес и порт сервера, а также другие параметры, можно настроить с помощью аргументов командной строки или переменных окружения.
Документация FastAPI доступна по адресу .
Примеры
Подробные runnable-примеры вынесены в папку .
- 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
Вы можете изменять параметры работы утилиты с помощью аргументов командной строки или переменных окружения.
Аргументы командной строки
Полный список параметров смотрите в .
⚠️ Безопасность: Не передавайте секреты (
,--proxy.api-key,--gigachat.credentials,--gigachat.password,--gigachat.access-token) через аргументы командной строки — они видны всем пользователям через--gigachat.key-file-password. Используйте переменные окружения илиps auxфайл (см. раздел ниже). Утилита поддерживает аргументы 2 типов (настройки прокси и настройки GigaChat):.env
-
— путь до файла с переменными окружения--env-path <PATH>. По умолчанию ищется.envв текущей директории..env -
— set proxy from JSON string (по умолчанию--proxy [JSON]);{} -
— хост, на котором запускается прокси-сервер. По умолчанию--proxy.host <HOST>;localhost -
— порт, на котором запускается прокси-сервер. По умолчанию--proxy.port <PORT>;8090 -
— использовать ли HTTPS. По умолчанию--proxy.use-https <true/false>;False -
— Путь до key файла для https. По умолчанию--proxy.https-key-file <PATH>;None -
— Путь до cert файла https. По умолчанию--proxy.https-cert-file <PATH>;None -
— передавать в GigaChat API модель, которую указал клиент в поле--proxy.pass-model <true/false>в режиме чата;model -
— передавать токен, полученный в заголовке--proxy.pass-token <true/false>, в GigaChat API. С помощью него можно настраивать передачу ключей в GigaChat черезAuthorization;OPENAI_API_KEY -
— модель, которая будет использоваться для создания эмбеддингов. По умолчанию--proxy.embeddings <EMBED_MODEL>;EmbeddingsGigaR -
— включить/выключить передачу изображений в формате OpenAI в GigaChat API (по умолчанию--proxy.enable-images <true/false>);True -
— включить reasoning по умолчанию (добавляет--proxy.enable-reasoning <true/false>в payload к GigaChat, если клиент не указалreasoning_effort="high"явно);reasoning_effort -
— уровень логов--proxy.log-level. По умолчанию{CRITICAL,ERROR,WARNING,INFO,DEBUG};INFO -
— имя лог файла. По умолчанию--proxy.log-filename;gpt2giga.log -
— максимальный размер файла в байтах. По умолчанию--proxy.log-max-size(10 MB);10 * 1024 * 1024 -
— нужно ли закрыть доступ к эндпоинтам (требовать API-ключ). По умолчанию--proxy.enable-api-key-auth;False -
— API ключ для защиты эндпоинтов (если enable_api_key_auth=True).--proxy.api-key
⚠️ Безопасность: Не передавайте секреты (
,--proxy.api-key,--gigachat.credentials,--gigachat.password,--gigachat.access-token) через аргументы командной строки — они видны всем пользователям через--gigachat.key-file-password. Используйте переменные окружения илиps auxфайл (см. раздел ниже)..env
Далее идут стандартные настройки из библиотеки GigaChat:
— set gigachat from JSON string (по умолчанию--gigachat [JSON]);{}— базовый URL для GigaChat API. По умолчанию берется значение переменной--gigachat.base-url <BASE_URL>или поляGIGACHAT_BASE_URLвнутри пакета;BASE_URL— базовый URL для Auth GigaChat API. По умолчанию берется значение переменной--gigachat.auth-url <AUTH_URL>или поляGIGACHAT_AUTH_URLвнутри пакета;AUTH_URL— credentials (ключ/данные авторизации) для GigaChat;--gigachat.credentials <CREDENTIALS>— Скоуп гигачат (API_CORP, API_PERS...);--gigachat.scope <GIGACHAT_SCOPE>— Вариант авторизации через user/password;--gigachat.user <GIGACHAT_USER>— Вариант авторизации через user/password;--gigachat.password <GIGACHAT_PASSWORD>— JWE токен;--gigachat.access-token <ACCESS_TOKEN>— модель для запросов в GigaChat. По умолчанию--gigachat.model <MODEL>;GIGACHAT_MODEL— Параметр цензуры. По умолчанию--gigachat.profanity-check <True/False>;None— таймаут для запросов к GigaChat API. По умолчанию--gigachat.timeout <TIMEOUT>секунд;30— проверять сертификаты SSL (по умолчанию--gigachat.verify-ssl-certs <True/False>);True— Пользовательский SSL контекст;--gigachat.ssl-context— Путь к CA bundle файлу для проверки TLS сертификатов;--gigachat.ca-bundle-file <PATH>— Путь к файлу клиентского сертификата;--gigachat.cert-file <PATH>— Путь к файлу приватного ключа клиента;--gigachat.key-file <PATH>— Пароль для зашифрованного файла приватного ключа;--gigachat.key-file-password <PASSWORD>— Дополнительные флаги для управления поведением клиента;--gigachat.flags <FLAGS>— Максимальное количество одновременных подключений к GigaChat API;--gigachat.max-connections <INT>— Максимальное количество попыток повтора для временных ошибок. По умолчанию--gigachat.max-retries <INT>(отключено);0— Множитель задержки для повторных попыток. По умолчанию--gigachat.retry-backoff-factor <FLOAT>;0.5— HTTP коды статуса, вызывающие повторную попытку. По умолчанию--gigachat.retry-on-status-codes <INT,INT...>;(429, 500, 502, 503, 504)— Буфер времени (мс) до истечения токена для запуска обновления. По умолчанию--gigachat.token-expiry-buffer-ms <INT>(60 секунд).60000
Пример запуска утилиты с заданными параметрами
Для запуска прокси-сервера с заданным адресом и портом выполните команду:
Переменные окружения
Для настройки параметров утилиты также можно использовать переменные окружения, заданные в файле .
У настроек прокси префикс , у настроек GigaChat:
Список доступных переменных:
— хост, на котором запускается прокси-сервер. По умолчаниюGPT2GIGA_HOST="localhost";localhost— режим запуска (GPT2GIGA_MODE="DEV"илиDEV). ВPRODотключаютсяPROD,/docs,/redoc; в/openapi.jsonтакже обязательно требуетсяPROD, отключаютсяGPT2GIGA_API_KEY,/logs,/logs/stream; и автоматически ужесточается CORS (нет wildcard/logs/html,*);allow_credentials=False— порт, на котором запускается прокси-сервер. По умолчаниюGPT2GIGA_PORT="8090";8090— Использовать ли https. По умолчаниюGPT2GIGA_USE_HTTPS="False";False— Путь до key файла для https. По умолчаниюGPT2GIGA_HTTPS_KEY_FILE=<PATH>;None— Путь до cert файла https. По умолчаниюGPT2GIGA_HTTPS_CERT_FILE=<PATH>;None— передавать ли модель, указанную в запросе, непосредственно в GigaChat;GPT2GIGA_PASS_MODEL="False"— передавать токен, полученный в заголовкеGPT2GIGA_PASS_TOKEN="False", в GigaChat API;Authorization— модель для создания эмбеддингов.GPT2GIGA_EMBEDDINGS="EmbeddingsGigaR"— флаг, который включает передачу изображений в формате OpenAI в GigaChat API;GPT2GIGA_ENABLE_IMAGES="True"— включить reasoning по умолчанию (добавляетGPT2GIGA_ENABLE_REASONING="False"в payload к GigaChat, если клиент не указалreasoning_effort="high"явно);reasoning_effort— Уровень логовGPT2GIGA_LOG_LEVEL="INFO". По умолчанию{CRITICAL,ERROR,WARNING,INFO,DEBUG}INFO— Имя лог файла. По умолчаниюGPT2GIGA_LOG_FILENAME="gpt2giga.log"gpt2giga.logМаксимальный размер файла в байтах. По умолчаниюGPT2GIGA_LOG_MAX_SIZE="10*1024*1024"(10 MB)10 * 1024 * 1024— Нужно ли закрыть доступ к эндпоинтам (требовать API-ключ). По умолчаниюGPT2GIGA_ENABLE_API_KEY_AUTH="False"False— API ключ для защиты эндпоинтов (если enable_api_key_auth=True).GPT2GIGA_API_KEY=""— список разрешенных Origin (JSON массив);GPT2GIGA_CORS_ALLOW_ORIGINS='["*"]'— список разрешенных HTTP-методов (JSON массив);GPT2GIGA_CORS_ALLOW_METHODS='["*"]'— список разрешенных заголовков (JSON массив).GPT2GIGA_CORS_ALLOW_HEADERS='["*"]'
Также можно использовать переменные, которые поддерживает библиотека GigaChat:
— базовый URL GigaChat;GIGACHAT_BASE_URL="https://gigachat.devices.sberbank.ru/api/v1"— модель GigaChat API, которая будет обрабатывать запросы по умолчанию;GIGACHAT_MODEL="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— для того, чтобы проверять SSL сертификаты, по умолчаниюGIGACHAT_VERIFY_SSL_CERTS;True- Максимальное количество одновременных подключений к GigaChat API;GIGACHAT_MAX_CONNECTIONS- Максимальное количество попыток повтора для временных ошибок. По умолчаниюGIGACHAT_MAX_RETRIES(отключено);0- Множитель задержки для повторных попыток. По умолчаниюGIGACHAT_RETRY_BACKOFF_FACTOR;0.5- Буфер времени (мс) до истечения токена для запуска обновления. По умолчаниюGIGACHAT_TOKEN_EXPIRY_BUFFER_MS(60 секунд).60000
После запуска сервер будет перенаправлять все запросы, адресованные OpenAI API, в GigaChat API.
Авторизация с помощью заголовка
Утилита может авторизовать запросы в GigaChat API с помощью данных, полученных в заголовке .
Для этого запустите gpt2giga с аргументом или задайте переменную окружения .
Поддерживается авторизация с помощью ключа, токена доступа и логина и пароля.
Возможные варианты содержимого заголовка :
— авторизация с помощью ключа. Вместоgiga-cred-<credentials>:<scope>нужно указать версию API, к которой будут выполняться запросы. Подробнее о ключе авторизации и версии API.<scope>— при авторизации с помощью токена доступа. Токен доступа получается в обмен на ключ авторизации и действителен в течение 30 минут.giga-auth-<access_token>— при авторизации с помощью логина и пароля.giga-user-<user>:<password>
Использование HTTPS
Утилита может использоваться с протоколом HTTPS, пример генерации сертификатов:
После этого укажите пути к сертификатам в переменных окружения или CLI-аргументах и включите HTTPS.
Альтернатива: разместите за reverse proxy с TLS-терминацией:
- пример стека с Traefik:
и правила вcompose/traefik.yaml(при необходимости добавьте ACME/сертификаты под свой домен).traefik/
Использование API ключа
После этого, в сервисе будет добавлена авторизация по токену. Возможны разные варианты выполнения запросов, например: Авторизация по запросу:
Авторизация по заголовкам:
Авторизация через Bearer:
Системные эндпоинты
- GET /health
- GET | POST /ping
- получение последних N строчек из логов;GET /logs/{last_n_lines}- SSE стриминг логов;GET /logs/stream- HTML страница для удобства просмотра стрима логовGET /logs/html
При использовании можно зайти на страницу: и:
- Если используется API ключ Использование API ключа, то введите ваш GPT2GIGA_API_KEY
- Иначе, введите любой символ
После этого, воспользуйтесь утилитой и будут выведены логи.
⚠️ Безопасность: Эндпоинты
предназначены только для разработки. В/logs*режиме (PROD) они автоматически отключены. Не открывайте log-эндпоинты наружу без аутентификации.GPT2GIGA_MODE=PROD
Production hardening checklist
Перед развертыванием gpt2giga в production-среде убедитесь, что выполнены следующие шаги:
Обязательные
- Режим PROD: установите
. В этом режиме автоматически отключаютсяGPT2GIGA_MODE=PROD,/docs,/redocи все/openapi.json-эндпоинты; CORS ужесточается (нет wildcard/logs*,*).allow_credentials=False - API key аутентификация: установите
и задайте надёжныйGPT2GIGA_ENABLE_API_KEY_AUTH=True(минимум 32 символа, случайная строка).GPT2GIGA_API_KEY - TLS-сертификаты GigaChat: установите
. Не отключайте проверку SSL в production.GIGACHAT_VERIFY_SSL_CERTS=True - HTTPS: включите
и укажите пути к TLS-сертификатам (GPT2GIGA_USE_HTTPS=True,GPT2GIGA_HTTPS_KEY_FILE), либо разместите прокси за reverse proxy (nginx, Caddy, Traefik) с TLS-терминацией.GPT2GIGA_HTTPS_CERT_FILE - CORS origins: ограничьте
конкретными доменами вместоGPT2GIGA_CORS_ALLOW_ORIGINS.["*"] - Секреты: храните
,GIGACHAT_CREDENTIALSи другие секреты в переменных окружения или secrets manager.GPT2GIGA_API_KEY - Не передавайте секреты через CLI: используйте
или переменные окружения вместо.envи--proxy.api-key(аргументы видны в--gigachat.credentials).ps aux
Рекомендуемые
- Reverse proxy: разместите gpt2giga за reverse proxy (nginx, Caddy и др.) для rate limiting, TLS-терминации и дополнительной фильтрации.
- Уровень логов: установите
илиGPT2GIGA_LOG_LEVEL=WARNING(неINFO) для production — уровеньDEBUGможет содержать чувствительные данные в логах.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-шаблон по умолчанию находится в .
Русскоязычный вариант расположен в .
Чтобы открыть pull request с русским шаблоном, используйте параметр GitHub в URL сравнения веток:
Замените на имя вашей ветки. Если базовая ветка отличается от , замените и ее в URL.
История изменений
Подробная информация об изменениях в каждой версии доступна в файле CHANGELOG.md или CHANGELOG_en.md.
Лицензия
Проект распространяется под лицензией MIT. Подробная информация — в файле LICENSE.