gpt2giga

0

Описание

Proxy to stream OpenAI traffic to GigaChat

Языки

  • Python100%
README.md

Прокси для использования GigaChat вместо OpenAI GPT

Данный проект представляет собой HTTP-прокси, который позволяет подменять использование ChatGPT на GigaChat в тех случаях, когда возможна настройка URL для взаимодействия с ChatGPT. Утилита поддерживает все основные функции взаимодействия с чат-моделями, включая поддержку работы с функциями, стриминг-ответов и проксирование эндпоинтов для

embeddings
.

alt text

Основные возможности

  • Полная замена: утилита подменяет использование ChatGPT на GigaChat, позволяя использовать все его возможности.
  • Поддержка функций: корректно обрабатываются вызовы функций через API, включая передачу и выполнение функций с аргументами.
  • Поддержка стриминга: возможно получение ответа стримом (построчная отправка фрагментов) при запросах с параметром
    stream=true
    .
  • Проксирование Embeddings: поддержка эндпоинтов
    /embeddings
    и
    /v1/embeddings
    .
  • Асинхронный HTTP-прокси: поддерживает многопоточную обработку запросов для эффективной работы с большим количеством клиентов.
  • Простота настройки: конфигурация через аргументы командной строки или переменные окружения (
    .env
    ).
  • Поддержка логирования: при включённом
    verbose
    -режиме отображаются подробные сведения о запросах и ответах.

Установка

  1. Установите пакет из pypi:

    Или напрямую из исходников:

  2. Переименуйте файл

    .env.example
    в
    .env
    и расположите его в корне вашего проекта, укажите необходимые учетные данные для доступа к GigaChat:

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

Использование

После установки пакет добавит команду

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
    в текущей директории).

Пример использования с кастомными настройками

После запуска сервер будет слушать указанный хост и порт и перенаправлять все запросы, адресованные 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.
Поддерживаются варианты:

  • Bearer giga-user-<user>:<password>
  • Bearer giga-cred-<credentials>:<scope>
  • Bearer giga-auth-<access_token>

Совместимые решения

Ниже приведен список проверенных приложений, работа с которыми возможна через gpt2giga.

Aider

Aider - AI-ассистент для написания приложений. Для запуска используйте следующую команду:

aider --openai-api-base http://localhost:8090 --model gpt-4o --openai-api-key 123

Более подробно про настройку aider с помощью gpt2giga можно прочитать здесь

n8n

Платформа для создания nocode агентов

Лицензия

Этот проект распространяется под лицензией MIT. См. LICENSE для получения подробной информации.