Данный проект представляет собой HTTP-прокси, который позволяет подменять использование ChatGPT на GigaChat в тех случаях, когда возможна настройка URL для взаимодействия с ChatGPT. Утилита поддерживает все основные функции взаимодействия с чат-моделями, включая поддержку работы с функциями, стриминг-ответов и проксирование эндпоинтов для embeddings
.
- Полная замена: утилита подменяет использование ChatGPT на GigaChat, позволяя использовать все его возможности.
- Поддержка функций: корректно обрабатываются вызовы функций через API, включая передачу и выполнение функций с аргументами.
- Поддержка стриминга: возможно получение ответа стримом (построчная отправка фрагментов) при запросах с параметром
stream=true
. - Проксирование Embeddings: поддержка эндпоинтов
/embeddings
и/v1/embeddings
. - Асинхронный HTTP-прокси: поддерживает многопоточную обработку запросов для эффективной работы с большим количеством клиентов.
- Простота настройки: конфигурация через аргументы командной строки или переменные окружения (
.env
). - Поддержка логирования: при включённом
verbose
-режиме отображаются подробные сведения о запросах и ответах.
-
Установите пакет из pypi:
pip install gpt2giga
Или напрямую из исходников:
pip install git+https://github.com/ai-forever/gpt2giga.git
-
Переименуйте файл
.env.example
в.env
и расположите его в корне вашего проекта, укажите необходимые учетные данные для доступа к GigaChat:cp .env.example .env
Обратите внимание, что поддерживаются различные способы авторизации в зависимости от типа вашей учетной записи. Также можно настроить другие переменные, поддерживаемые GigaChat (см. документацию).
После установки пакет добавит команду gpt2giga
, с помощью которой вы можете запускать прокси-сервер.
gpt2giga
По умолчанию сервер запустится на localhost:8090
(при отсутствии соответствующих переменных окружения).
--host <HOST>
— хост, на котором будет запущен прокси (по умолчаниюlocalhost
).--port <PORT>
— порт, на котором будет запущен прокси (по умолчанию8090
).--verbose
— включить подробный вывод логов (запросы и ответы).--pass-model
— передавать в GigaChat модель, которую указал клиент в полеmodel
в режиме чата.--pass-token
— передавать токен, полученный в заголовкеAuthorization
, в GigaChat. С помощью него можно настраивать передачу ключей в GigaChat черезOPENAI_API_KEY
--base-url <BASE_URL>
— базовый URL для GigaChat API (по умолчанию берётся из переменнойGIGACHAT_BASE_URL
или значенияBASE_URL
внутри пакета).--model <MODEL>
— модель по умолчанию для запросов в GigaChat (по умолчаниюGIGACHAT_MODEL
).--timeout <TIMEOUT>
— таймаут для запросов к GigaChat (по умолчанию600
секунд).--embeddings <EMBED_MODEL>
— модель Embeddings (по умолчаниюEmbeddingsGigaR
).--env-path <PATH>
— путь до .env-файла (по умолчанию ищется.env
в текущей директории).
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
После запуска сервер будет слушать указанный хост и порт и перенаправлять все запросы, адресованные ChatGPT, на GigaChat.
Любое приложение, которое взаимодействует с ChatGPT через настраиваемый URL (например, в настройках вы указываете API_URL=https://api.openai.com/v1/
), можно «обмануть», подставив вместо https://api.openai.com/v1/
адрес вашего запущенного прокси, например, http://localhost:8090/v1/
. Тогда все запросы к ChatGPT будут перенаправлены в GigaChat.
То же самое справедливо для эндпоинтов /embeddings
или /v1/embeddings
, которые будет обслуживать прокси и отправлять запросы к GigaChat для генерации эмбеддингов.
Вы можете либо передавать все параметры напрямую через аргументы, либо использовать .env
/ переменные окружения. Ниже список основных переменных, которые можно переопределить (название = значение по умолчанию):
PROXY_HOST="localhost"
— хост для запуска прокси.PROXY_PORT="8090"
— порт для запуска прокси.GPT2GIGA_VERBOSE="False"
— выводить ли подробную информацию (True/False).GPT2GIGA_PASS_MODEL="False"
— передавать ли модель, указанную в запросе, непосредственно в GigaChat.GPT2GIGA_PASS_TOKEN="False"
— пробрасывать ли токен авторизации дальше в GigaChat.GIGACHAT_BASE_URL="https://gigachat.devices.sberbank.ru/api/v1"
— базовый URL GigaChat.GIGACHAT_MODEL="GigaChat"
— модель GigaChat по умолчанию.GPT2GIGA_TIMEOUT="600"
— таймаут для запросов (в секундах).GPT2GIGA_EMBEDDINGS="EmbeddingsGigaR"
— модель для эндпоинта/embeddings
.
Также при необходимости можно настроить:
GIGACHAT_USER
иGIGACHAT_PASSWORD
— если требуется аутентификация по логину/паролю.GIGACHAT_CREDENTIALS
— если нужно передавать токен в стилеBearer giga-cred-...
.GIGACHAT_ACCESS_TOKEN
— если уже есть готовый токен аутентификации.
Если вы запускаете прокси с флагом --pass-token
(или переменной окружения GPT2GIGA_PASS_TOKEN=True
), то прокси будет пытаться преобразовать заголовок Authorization
в формат, понятный GigaChat.
Поддерживаются варианты:
giga-cred-<credentials>:<scope>
giga-user-<user>:<password>
giga-auth-<access_token>
Ниже приведен список проверенных приложений, работа с которыми возможна через gpt2giga.
Aider - AI-ассистент для написания приложений. Для запуска используйте следующую команду:
aider --openai-api-base http://localhost:8090 --model gpt-4o --openai-api-key 123
Более подробно про настройку aider с помощью gpt2giga можно прочитать здесь
Платформа для создания nocode агентов
Этот проект распространяется под лицензией MIT. См. LICENSE для получения подробной информации.