https://github.com/ai-forever/gpt2giga
Proxy to stream OpenAI traffic to GigaChat
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (1.8%) to scientific vocabulary
Repository
Proxy to stream OpenAI traffic to GigaChat
Basic Info
- Host: GitHub
- Owner: ai-forever
- License: mit
- Language: Python
- Default Branch: main
- Size: 226 KB
Statistics
- Stars: 50
- Watchers: 5
- Forks: 20
- Open Issues: 7
- Releases: 1
Metadata Files
README.md
Утилита для проксирования OpenAI-запросов в GigaChat
Утилита gpt2giga — это прокси-сервер, который перенаправляет запросы, отправленные в OpenAI API, в GigaChat API.
При старте утилиты запускается HTTP-сервер, адрес которого нужно использовать вместо адреса OpenAI API, заданного в вашем приложении (например, https://api.openai.com/v1/).
Утилита обработает запрос и перенаправит его заданной модели GigaChat.
После получения ответа модели, она передаст его в приложение в формате OpenAI.
Утилита работает как с запросами на генерацию, так и с запросами на создание эмбеддингов (эндпоинты /embeddings или /v1/embeddings).
Общая схема работы gpt2giga:
```mermaid 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
Для запуска с помощью Docker:
- В файле
docker-compose.ymlукажите ключ авторизации GigaChat API:
yaml
environment:
- GIGACHAT_CREDENTIALS: <your_api_key>
- GIGACHAT_SCOPE: <your_api_scope>
2. Запустите контейнер с помощью Docker Compose:
```sh # В зависимости от версии Docker используйте одну из команд docker-compose up -d
# или docker compose up -d ```
Локальный запуск
Для локального запуска:
- Установите пакет gpt2giga с помощью менеджера пакетов pip:
sh
pip install gpt2giga
Вы также можете использовать исходники:
sh
pip install git+https://github.com/ai-forever/gpt2giga.git
После установки пакета вы сможете использовать команду gpt2giga, которая позволяет запускать и настраивать прокси-сервер.
- Переименуйте файл
.env.exampleв.envи сохраните его в корне своего проекта:
sh
cp .env.example .env
- В файле
.envукажите данные для авторизации в GigaChat API.
GigaChat API поддерживает различные способы авторизации, которые отличаются в зависимости от типа вашей учетной записи.
[!NOTE] Кроме переменных gpt2giga в
.envможно указать переменные окружения, которые поддерживает python-библиотека GigaChat.
- В терминале выполните команду
gpt2giga.
Запустится прокси-сервер, по умолчанию доступный по адресу localhost:8090.
Адрес и порт сервера, а также другие параметры, можно настроить с помощью аргументов командной строки или переменных окружения.
Изменение параметров gpt2giga
Вы можете изменять параметры работы утилиты с помощью аргументов командной строки или переменных окружения.
Аргументы командной строки
Утилита поддерживает аргументы:
--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.
Пример запуска утилиты с заданными параметрами
Для запуска прокси-сервера с заданным адресом и портом выполните команду:
sh
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.
Owner
- Name: AI Forever
- Login: ai-forever
- Kind: organization
- Location: Armenia
- Repositories: 60
- Profile: https://github.com/ai-forever
Creating ML for the future. AI projects you already know. We are non-profit organization with members from all over the world.
GitHub Events
Total
- Create event: 7
- Release event: 1
- Issues event: 5
- Watch event: 41
- Delete event: 2
- Issue comment event: 11
- Member event: 3
- Push event: 32
- Pull request review comment event: 6
- Pull request review event: 6
- Pull request event: 24
- Fork event: 16
Last Year
- Create event: 7
- Release event: 1
- Issues event: 5
- Watch event: 41
- Delete event: 2
- Issue comment event: 11
- Member event: 3
- Push event: 32
- Pull request review comment event: 6
- Pull request review event: 6
- Pull request event: 24
- Fork event: 16
Committers
Last synced: about 1 year ago
Top Committers
| Name | Commits | |
|---|---|---|
| mikelarg | m****z@g****m | 15 |
| Konstantin Krestnikov | r****0@g****m | 8 |
| Dmitrii Overchenko | l****z@b****u | 2 |
| Dmitry Abramov | A****B@y****u | 1 |
| Lytkini | i****n@s****u | 1 |
| Aleksey Shvedchikov | a****k@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 7
- Total pull requests: 27
- Average time to close issues: about 18 hours
- Average time to close pull requests: 15 days
- Total issue authors: 7
- Total pull request authors: 15
- Average comments per issue: 0.86
- Average comments per pull request: 0.04
- Merged pull requests: 14
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 7
- Pull requests: 27
- Average time to close issues: about 18 hours
- Average time to close pull requests: 15 days
- Issue authors: 7
- Pull request authors: 15
- Average comments per issue: 0.86
- Average comments per pull request: 0.04
- Merged pull requests: 14
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- Webbrother (1)
- nnnet (1)
- nickbob (1)
- perovskikh (1)
- mitrokun (1)
- RussianLioN (1)
- choopachuck (1)
Pull Request Authors
- Lytkini (4)
- Rai220 (4)
- Mikelarg (2)
- artemkolyadin (2)
- Webbrother (2)
- nepshaaa (2)
- Redrrah (2)
- n1654 (2)
- Asya02 (1)
- alexsvdk (1)
- choopachuck (1)
- A6PAMOB (1)
- RakhimovRamis (1)
- Artem-eho (1)
- drauggres (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 348 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 13
- Total maintainers: 1
pypi.org: gpt2giga
- Documentation: https://gpt2giga.readthedocs.io/
- License: MIT
-
Latest release: 0.0.12
published 11 months ago
Rankings
Maintainers (1)
Dependencies
- aiohappyeyeballs 2.4.3
- aiohttp 3.10.10
- aiosignal 1.3.1
- annotated-types 0.7.0
- anyio 4.6.2.post1
- async-timeout 4.0.3
- asyncio 3.4.3
- attrs 24.2.0
- certifi 2024.8.30
- exceptiongroup 1.2.2
- frozenlist 1.5.0
- gigachat 0.1.35
- h11 0.14.0
- httpcore 1.0.6
- httpx 0.27.2
- idna 3.10
- multidict 6.1.0
- propcache 0.2.0
- pydantic 2.9.2
- pydantic-core 2.23.4
- python-dotenv 1.0.1
- sniffio 1.3.1
- typing-extensions 4.12.2
- yarl 1.17.1
- aiohttp ^3.10.10
- asyncio ^3.4.3
- gigachat ^0.1.35
- python ^3.9
- python-dotenv ^1.0.1
- python 3.9-slim build