Утилита 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 вы можете:
- использовать возможности моделей OpenAI и полностью заменить ChatGPT на GigaChat;
- вызывать функции через API, включая передачу и выполнение функций с аргументами;
- обрабатывать ответ модели в режиме потоковой генерации токенов с помощью параметра stream=true;
- перенаправлять запросы на создание эмбеддингов (поддерживаются эндпоинты /embeddingsи/v1/embeddings);
- работать в асинхронном режиме с множеством потоков запросов от нескольких клиентов;
- отображать подробные сведения о запросах и ответах при включенном verbose-режиме логирования;
- задавать параметры работы как с помощью аргументов командной строки, так и с помощью переменных окружения (.env).
Утилиту можно запустить как в контейнере, с помощью Docker, так и локально.
- 
Переименуйте файл .env.exampleв.env.cp .env.example .env 
- 
В файле .envукажите данные для авторизации в GigaChat API.GigaChat API поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи. Пример с Authorization key.PROXY_HOST=0.0.0.0 GIGACHAT_CREDENTIALS=<Authorization key GigaChat API> GIGACHAT_SCOPE=<your_api_scope> GIGACHAT_MODEL=GigaChat GIGACHAT_VERIFY_SSL_CERTS=False
- 
Запустите контейнер с помощью Docker Compose: docker-compose up -d
Для локального запуска:
- 
Установите пакет gpt2giga с помощью менеджера пакетов pip: pip install gpt2giga Вы также можете использовать исходники: pip install git+https://github.com/ai-forever/gpt2giga.git После установки пакета вы сможете использовать команду gpt2giga, которая позволяет запускать и настраивать прокси-сервер.
- 
Переименуйте файл .env.exampleв.envи сохраните его в корне своего проекта:cp .env.example .env 
- 
В файле .envукажите данные для авторизации в GigaChat API.GigaChat API поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи. [!NOTE] Кроме переменных gpt2giga в .envможно указать переменные окружения, которые поддерживает python-библиотека GigaChat.
- 
В терминале выполните команду gpt2giga.
Запустится прокси-сервер, по умолчанию доступный по адресу localhost:8090.
Адрес и порт сервера, а также другие параметры, можно настроить с помощью аргументов командной строки или переменных окружения.
Вы можете изменять параметры работы утилиты с помощью аргументов командной строки или переменных окружения.
Утилита поддерживает аргументы:
- --host <HOST>— хост, на котором запускается прокси-сервер. По умолчанию- localhost;
- --port <PORT>— порт, на котором запускается прокси-сервер. По умолчанию- 8090;
- --mtls-ca-cert-path- путь к файлу сертификата mTLS корневого центра сертификации;
- --mtls-cert-file-path- путь к клиентский сертификату mTLS;
- --mtls-key-file-path- путь к закрытому ключу mTLS;
- --verbose— включить подробный вывод логов (запросы и ответы);
- --pass-model— передавать в GigaChat API модель, которую указал клиент в поле- modelв режиме чата;
- --pass-token— передавать токен, полученный в заголовке- Authorization, в GigaChat API. С помощью него можно настраивать передачу ключей в GigaChat через- OPENAI_API_KEY;
- --base-url <BASE_URL>— базовый URL для GigaChat API. По умолчанию берется значение переменной- GIGACHAT_BASE_URLили поля- BASE_URLвнутри пакета;
- --model <MODEL>— модель для запросов в GigaChat. По умолчанию- GIGACHAT_MODEL;
- --timeout <TIMEOUT>— таймаут для запросов к GigaChat API. По умолчанию- 600секунд;
- --embeddings <EMBED_MODEL>— модель, которая будет использоваться для создания эмбеддингов. По умолчанию- EmbeddingsGigaR;
- --env-path <PATH>— путь до файла с переменными окружения- .env. По умолчанию ищется- .envв текущей директории
- --verify-ssl-certs <True/False>- проверять сертификаты SSL (по умолчанию- True)
- --mtls-auth- использовать аутентификацию по сертефикатам mTLS
- --enable-images— экспериментальный флаг, который включает передачу изображений в формате OpenAI в GigaChat API
Для настройки параметров утилиты также можно использовать переменные окружения, заданные в файле .env.
Список доступных переменных:
- PROXY_HOST="localhost"— хост, на котором запускается прокси-сервер. По умолчанию- localhost;
- PROXY_PORT="8090"— порт, на котором запускается прокси-сервер. По умолчанию- 8090;
- MTLS_CA_CERT_PATH- путь к файлу сертификата корневого центра сертификации;
- MTLS_CERT_FILE_PATH- путь к клиентский сертификату;
- MTLS_KEY_FILE_PATH- путь к закрытому ключу;
- 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 \
    --host 127.0.0.1 \
    --port 8080 \
    --verbose \
    --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.