Skip to content

ai-forever/gpt2giga

Repository files navigation

Прокси для использования 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:

    pip install gpt2giga

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

    pip install git+https://github.com/ai-forever/gpt2giga.git
  2. Переименуйте файл .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 для получения подробной информации.

About

Proxy to stream OpenAI traffic to GigaChat

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages