Skip to main content

No project description provided

Project description

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

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

Coverage

Утилита 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);
  • работать в асинхронном режиме с множеством потоков запросов от нескольких клиентов;
  • отображать подробные сведения о запросах и ответах при включенном verbose-режиме логирования;
  • задавать параметры работы как с помощью аргументов командной строки, так и с помощью переменных окружения (.env).

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

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

Запуск в Docker

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

    cp .env.example .env
    
  2. В файле .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
    
  3. Выберите образ с нужной версией Python (3.9-3.13).

PYTHON_VERSION=3.10
docker pull gigateam/gpt2giga:python${PYTHON_VERSION}

Доступные образы можно увидеть на https://hub.docker.com/r/gigateam/gpt2giga 4. Запустите контейнер с помощью Docker Compose: docker-compose up -d

Локальный запуск

Для локального запуска:

  1. Установите пакет 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 поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи.

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

  4. В терминале выполните команду 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 — Уровень логов(INFO, DEBUG, WARNING). По умолчанию INFO

Далее идут стандартные настройки из библиотеки 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)

Переменные окружения

Для настройки параметров утилиты также можно использовать переменные окружения, заданные в файле .env.

У настроек прокси префикс GPT2GIGA_, у настроек GigaChat: GIGACHAT_

Список доступных переменных:

  • GPT2GIGA_HOST="localhost" — хост, на котором запускается прокси-сервер. По умолчанию localhost;
  • GPT2GIGA_PROXY_PORT="8090" — порт, на котором запускается прокси-сервер. По умолчанию 8090;
  • GPT2GIGA_VERBOSE="False" — включает/отключает вывод подробной информации;
  • GPT2GIGA_PASS_MODEL="False" — передавать ли модель, указанную в запросе, непосредственно в GigaChat;
  • GPT2GIGA_PASS_TOKEN="False" — передавать токен, полученный в заголовке Authorization, в GigaChat API;
  • GIGACHAT_BASE_URL="https://gigachat.devices.sberbank.ru/api/v1" — базовый URL GigaChat;
  • GIGACHAT_MODEL="GigaChat" — модель GigaChat API, которая будет обрабатывать запросы по умолчанию;
  • GPT2GIGA_TIMEOUT="600" — таймаут для запросов к GigaChat API (в секундах);
  • GIGACHAT_MTLS_AUTH - использовать аутентификацию по сертефикатам mTLS;
  • GPT2GIGA_EMBEDDINGS="EmbeddingsGigaR" — модель для создания эмбеддингов.

Также можно использовать переменные, которые поддерживает библиотека 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 - пароль от закрытого ключа;
  • GIGACHAT_VERIFY_SSL_CERTS — для того, что бы проверять SSL сертификаты, по умолчанию False.

Пример запуска утилиты с заданными параметрами

Для запуска прокси-сервера с заданным адресом и портом выполните команду:

gpt2giga \
    --proxy-host 127.0.0.1 \
    --proxy-port 8080 \
    --proxy-log-level \
    --pass-model \
    --pass-token \
    --base-url https://gigachat.devices.sberbank.ru/api/v1 \
    --model GigaChat-Max \
    --timeout 300 \
    --embeddings EmbeddingsGigaR

После запуска сервер будет перенаправлять все запросы, адресованные 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> — при авторизации с помощью логина и пароля.

Совместимые приложения

Таблица содержит приложения, проверенные на совместную работу с gpt2giga.

Приложение Описание
Aider AI-ассистент для написания приложений.
Подробнее о запуске и настройке Aider для работы с gpt2giga — в README
n8n Платформа для создания nocode-агентов
Cline AI-ассистент разработчика
OpenHands AI-ассистент для разработки
Подробнее о запуске и настройке OpenHands для работы с gpt2giga — в README

Лицензия

Проект распространяется под лицензией 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.0.14.tar.gz (19.9 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.0.14-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gpt2giga-0.0.14.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.3 Darwin/24.4.0

File hashes

Hashes for gpt2giga-0.0.14.tar.gz
Algorithm Hash digest
SHA256 e0852bc4644c6d244303fb650e4f8250c15a54700c4c38bc75f119c36c0324fe
MD5 55bed7003aa408e7444491752b574f8a
BLAKE2b-256 cfc643d2cc5da46057f117715191ba55e759560015c2b7396c537c4ff99f0bf6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: gpt2giga-0.0.14-py3-none-any.whl
  • Upload date:
  • Size: 18.5 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

Hashes for gpt2giga-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 88fea03ebda730efc75139c3cc51ed2d637aaf22717bd0136216906f481b9d78
MD5 e0d203cfffef660570f58815220b69af
BLAKE2b-256 320e97255c51eba9c61373cd43252aa8c10ffc5d173c7c918a67938d8785ed2e

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