Skip to main content

Утилита для проксирования OpenAI и Anthropic запросов в GigaChat

Project description

Утилита для проксирования OpenAI/Anthropic-запросов в GigaChat

GitHub Actions Workflow Status GitHub License PyPI Downloads GitHub Repo stars GitHub Open Issues Telegram

Coverage

Содержание

  1. Описание
  2. Возможности gpt2giga
  3. Начало работы
    1. Запуск в Docker
    2. Запуск в Docker с Traefik
    3. Локальный запуск
  4. Примеры
  5. Параметры
    1. Аргументы командной строки
    2. Переменные окружения
  6. Авторизация с помощью заголовка
  7. Использование HTTPS
  8. Использование API ключа
  9. Системные эндпоинты
  10. Совместимые приложения
  11. Вклад и 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 после появления полного batch API в GigaChat SDK/backend;
  • использовать подготовленный Anthropic Message Batches API после появления batch methods в GigaChat SDK;
  • получать список моделей и информацию о конкретной модели через OpenAI- и Anthropic-совместимый 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-модуль подготовлен, но не смонтирован: files отключены вместе с batches, пока в gigachat==0.2.1 нет полного batch API
GET /files Да Временно отключено Router-модуль подготовлен, но не смонтирован: files отключены вместе с batches, пока в gigachat==0.2.1 нет полного batch API
GET /files/{file_id} Да Временно отключено Router-модуль подготовлен, но не смонтирован: files отключены вместе с batches, пока в gigachat==0.2.1 нет полного batch API
DELETE /files/{file_id} Да Временно отключено Router-модуль подготовлен, но не смонтирован: files отключены вместе с batches, пока в gigachat==0.2.1 нет полного batch API
GET /files/{file_id}/content Да Временно отключено Router-модуль подготовлен, но не смонтирован: files отключены вместе с batches, пока в gigachat==0.2.1 нет полного batch API
POST /batches Да Временно отключено Router-модуль подготовлен, но не смонтирован: в gigachat==0.2.1 нет полного набора batch methods
GET /batches Да Временно отключено Router-модуль подготовлен, но не смонтирован: в gigachat==0.2.1 нет полного набора batch methods
GET /batches/{batch_id} Да Временно отключено Router-модуль подготовлен, но не смонтирован: в gigachat==0.2.1 нет полного набора batch methods
POST /batches/{batch_id}/cancel Да Временно отключено Не смонтирован: в текущем gigachat==0.2.1 нет полного набора batch methods, включая cancel
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 Что поддерживается
GET /models Да Да Список моделей в Anthropic-совместимом виде для запросов с Anthropic SDK headers
GET /models/{model_id} Да Да Информация о модели в Anthropic-совместимом виде для запросов с Anthropic SDK headers
POST /messages Да Да Основной Messages API, включая стриминг
POST /messages/count_tokens Да Да Подсчёт токенов для Messages API
POST /messages/batches Да Временно отключено Router-модуль подготовлен, но публичный маршрут не смонтирован: в текущем gigachat==0.2.1 нет batch methods
GET /messages/batches Да Временно отключено Router-модуль подготовлен, но публичный маршрут не смонтирован: в текущем gigachat==0.2.1 нет batch methods
GET /messages/batches/{message_batch_id} Да Временно отключено Router-модуль подготовлен, но публичный маршрут не смонтирован: в текущем gigachat==0.2.1 нет batch methods
GET /messages/batches/{message_batch_id}/results Да Временно отключено Router-модуль подготовлен, но публичный маршрут не смонтирован: в текущем gigachat==0.2.1 нет batch methods
POST /messages/batches/{message_batch_id}/cancel Да Временно отключено Router-модуль подготовлен, но публичный маршрут не смонтирован: в текущем gigachat==0.2.1 нет batch methods
DELETE /messages/batches/{message_batch_id} Да Временно отключено Router-модуль подготовлен, но публичный маршрут не смонтирован: в текущем gigachat==0.2.1 нет batch methods
Files API beta Да Нет Anthropic file upload/download/delete routes не реализованы
Skills API beta Да Нет Anthropic Skills API не реализован
Agents API beta Да Нет Anthropic Agents API не реализован
Sessions / Environments / Admin API beta Да Нет Управляемые beta/API группы Anthropic не реализованы

Коротко по покрытию

  • OpenAI: поддерживается основной рабочий набор для прокси-сценариев: models, chat/completions, responses, embeddings; router-модули files и batches подготовлены, но временно не смонтированы, потому что в gigachat==0.2.1 отсутствует полный batch API.
  • Anthropic: поддерживается Models API, Messages API и count_tokens; router-модуль Message Batches API подготовлен, но временно не смонтирован.
  • Не цель проекта: полная реализация всех route официальных OpenAI/Anthropic API, включая fine-tuning, images, audio, vector stores, assistants и realtime.

Совместимость SDK и политика extra_*

Подробная таблица совместимости параметров вынесена в docs/client-parameter-compatibility.md.

Клиентские настройки SDK вроде base_url, api_key, timeout, retry-настроек, http_client и proxy/transport остаются на стороне клиента. Сервер не трактует их как body-параметры и не прокидывает пользовательские Authorization, x-api-key, cookies, transport headers, x-stainless-*, openai-* или anthropic-* во внешний GigaChat upstream.

extra_headers и HTTP headers переносятся в request-scoped contextvars SDK GigaChat для безопасных служебных заголовков: x-request-id, x-session-id, x-service-id, x-operation-id, x-client-id, x-trace-id, x-agent-id. Прочие безопасные пользовательские заголовки идут через custom_headers_cvar; Authorization, x-api-key, transport headers, x-stainless-*, openai-* и anthropic-* заблокированы. extra_query по умолчанию не прокидывает произвольные query-параметры upstream. Неподдержанные body-параметры возвращают совместимую ошибку 400.

extra_body для Chat Completions, Responses и Anthropic Messages переносится в GigaChat additional_fields целиком, включая SDK-style поля, которые клиент разворачивает в top-level JSON:

  • OpenAI Embeddings не поддерживает extra_body; используйте только input, model, dimensions, encoding_format, user, extra_headers, extra_query.
  • Для OpenAI Chat/Responses unsupported параметры вроде logprobs, top_logprobs, audio, prediction, web_search_options, n > 1, parallel_tool_calls=true и built-in tools возвращают 400.
  • Для Anthropic Messages unsupported параметры и блоки вроде container, context_management, mcp_servers, server tools, document, file, container_upload, search_result, thinking/redacted_thinking во входном контенте возвращают 400.

OpenAI SDK:

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8090/v1", api_key="local-key")

client.chat.completions.create(
    model="GigaChat",
    messages=[{"role": "user", "content": "Привет"}],
    extra_body={"profanity_check": False},
)

Anthropic SDK:

from anthropic import Anthropic

client = Anthropic(base_url="http://localhost:8090", api_key="local-key")

client.messages.create(
    model="GigaChat",
    max_tokens=256,
    messages=[{"role": "user", "content": "Привет"}],
)

Пример ожидаемой ошибки:

client.messages.create(
    model="GigaChat",
    max_tokens=256,
    messages=[{"role": "user", "content": "Привет"}],
    extra_body={"mcp_servers": []},  # 400: MCP server tools are not supported
)

Начало работы

Утилиту можно запустить как в контейнере, с помощью Docker, так и локально.

Запуск в Docker

  1. Переименуйте файл .env.example в .env.

    cp .env.example .env
    
  2. В файле .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
    
  3. (Опционально) Используйте образ/сборку с нужной версией 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.

  4. Запустите контейнер с помощью 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:.

Запуск в Docker с Traefik

В репозитории есть готовый стек Traefik + несколько инстансов gpt2giga в файле compose/traefik.yaml:

  • gpt2giga (модель по умолчанию GigaChat) → http://localhost:8090
  • gpt2giga-pro (модель по умолчанию GigaChat-Pro) → http://localhost:8091
  • gpt2giga-max (модель по умолчанию GigaChat-Max) → http://localhost:8092
  • Traefik Dashboard → http://localhost:8080/dashboard/
  1. Запустите стек:

    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.

  1. Установите gpt2giga:

    С помощью uv:

    uv tool install gpt2giga
    # или uv add gpt2giga
    

    Или используя pip:

    pip install gpt2giga
    

    Вы также можете использовать исходники:

    pip install git+https://github.com/ai-forever/gpt2giga.git
    

    После установки пакета вы сможете использовать команду gpt2giga, которая позволяет запускать и настраивать прокси-сервер.

  2. Переименуйте файл .env.example в .env и сохраните его в корне своего проекта:

    cp .env.example .env
    
  3. В файле .env укажите данные для авторизации в GigaChat API.

    GigaChat API поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи.

    Кроме переменных gpt2giga в .env можно указать переменные окружения, которые поддерживает python-библиотека GigaChat.

  4. В терминале выполните команду gpt2giga.

Запустится прокси-сервер, по умолчанию доступный по адресу localhost:8090 (если не задан GPT2GIGA_PORT или --proxy.port). Адрес и порт сервера, а также другие параметры, можно настроить с помощью аргументов командной строки или переменных окружения. Документация FastAPI доступна по адресу http://localhost:<PORT>/docs.

Примеры

Подробные runnable-примеры вынесены в папку examples/.

Изменение параметров 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_format GigaChat 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_format GigaChat SDK 0.2.1+ (требует поддержки модели/API);
  • 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 * 1024 * 1024 (10 MB)
  • GPT2GIGA_ENABLE_API_KEY_AUTH="False" — Нужно ли закрыть доступ к эндпоинтам (требовать API-ключ). По умолчанию False
  • GPT2GIGA_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 /health
  • GET | POST /ping
  • GET /logs/{last_n_lines} - получение последних N строчек из логов;
  • GET /logs/stream - SSE стриминг логов;
  • GET /logs/html - HTML страница для удобства просмотра стрима логов

При использовании можно зайти на страницу: http://localhost:8090/logs/html и:

  1. Если используется API ключ Использование API ключа, то введите ваш GPT2GIGA_API_KEY
  2. Иначе, введите любой символ

После этого, воспользуйтесь утилитой и будут выведены логи.

⚠️ Безопасность: Эндпоинты /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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gpt2giga-0.1.7.tar.gz (630.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gpt2giga-0.1.7-py3-none-any.whl (115.8 kB view details)

Uploaded Python 3

File details

Details for the file gpt2giga-0.1.7.tar.gz.

File metadata

  • Download URL: gpt2giga-0.1.7.tar.gz
  • Upload date:
  • Size: 630.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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

Hashes for gpt2giga-0.1.7.tar.gz
Algorithm Hash digest
SHA256 d045aeea58981155ff1909ec814c3ee7515eacbce75dc36aed4e532d1750b462
MD5 51f0b2ab0364b8b1ed6e775ad1897cf3
BLAKE2b-256 a744ab00dadd4e5082603cd946ad95e3a37f90165924ef173b9df7c03b26cdbe

See more details on using hashes here.

File details

Details for the file gpt2giga-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: gpt2giga-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 115.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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

Hashes for gpt2giga-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 281ed6c6c9d3fcfc42f2488ee1996951018e1d73a7660aa84048d4216c743679
MD5 b147c1b5c84dd4ec226e8206126e3b66
BLAKE2b-256 e331605b81cb4b6f681329413a14f3183e3744484db4d6f5967ad0744697606c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page