https://github.com/ai-forever/gigachat
Библиотека для доступа к 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 (6.7%) to scientific vocabulary
Keywords
Repository
Библиотека для доступа к GigaChat
Basic Info
Statistics
- Stars: 120
- Watchers: 14
- Forks: 33
- Open Issues: 4
- Releases: 9
Topics
Metadata Files
README.md
О gigachat
GigaChat — это Python-библиотека для работы с REST API GigaChat. Она является частью GigaChain и входит в состав langchain-gigachat — партнерского пакета opensource-фреймворка LangChain.
Библиотека управляет авторизацией запросов и предоставляет все необходимые методы для работы с API. Кроме этого она поддерживает:
- обработку потоковой передачи токенов;
- работу с функциями;
- создание эмбеддингов;
- работу в синхронном или в асинхронном режиме.
[!TIP] Примеры работы с библиотекой gigachat — в папке examples.
Установка
Для установки библиотеки используйте менеджер пакетов pip:
sh
pip install gigachat
Быстрый старт
Для работы с библиотекой вам понадобится ключ авторизации API.
Чтобы получить ключ авторизации:
- Создайте проект GigaChat API в личном кабинете Studio.
- В интерфейсе проекта, в левой панели выберите раздел Настройки API.
- Нажмите кнопку Получить ключ.
В открывшемся окне скопируйте и сохраните значение поля Authorization Key. Ключ авторизации, отображается только один раз и не хранятся в личном кабинете. При компрометации или утере ключа авторизации вы можете сгенерировать его повторно.
Подробно о том, как создать проект GigaChat API — в официальной документации, в разделах Быстрый старт для физических лиц и Быстрый старт для ИП и юридических лиц.
Передайте полученный ключ авторизации в параметре credentials при инициализации объекта GigaChat.
Пример показывает как отправить простой запрос на генерацию с помощью библиотеки GigaChat:
```py from gigachat import GigaChat
Укажите ключ авторизации, полученный в личном кабинете, в интерфейсе проекта GigaChat API
with GigaChat(credentials="вашключавторизации", verifysslcerts=False) as giga: response = giga.chat("Какие факторы влияют на стоимость страховки на дом?") print(response.choices[0].message.content) ```
[!NOTE] Этот и другие примеры работы с библиотекой gigachat — в папке examples.
Параметры объекта GigaChat
В таблице описаны параметры, которые можно передать при инициализации объекта GigaChat:
| Параметр | Обязательный | Описание |
| ------------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| credentials | да | Ключ авторизации для обмена сообщениями с GigaChat API.
Ключ авторизации содержит информацию о версии API, к которой выполняются запросы. Если вы используете версию API для ИП или юрлиц, укажите это явно в параметре scope |
| verify_ssl_certs | нет | Отключение проверки ssl-сертификатов.
Для обращения к GigaChat API нужно установить корневой сертификат НУЦ Минцифры.
Используйте параметр ответственно, так как отключение проверки сертификатов снижает безопасность обмена данными |
| scope | нет | Версия API, к которой будет выполнен запрос. По умолчанию запросы передаются в версию для физических лиц. Возможные значения:
GIGACHAT_API_PERS— версия API для физических лиц;GIGACHAT_API_B2B— версия API для ИП и юрлиц при работе по предоплате.GIGACHAT_API_CORP— версия API для ИП и юрлиц при работе по постоплате.
model | нет | необязательный параметр, в котором можно явно задать модель GigaChat. Вы можете посмотреть список доступных моделей с помощью метода get_models(), который выполняет запрос GET /models.Стоимость запросов к разным моделям отличается. Подробную информацию о тарификации запросов к той или иной модели вы ищите в официальной документации | |
base_url | нет | Адрес API. По умолчанию запросы отправляются по адресу https://gigachat.devices.sberbank.ru/api/v1/, но если вы хотите использовать модели в раннем доступе, укажите адрес https://gigachat-preview.devices.sberbank.ru/api/v1 |
[!TIP] Чтобы не указывать параметры при каждой инициализации, задайте их в переменных окружения.
Способы авторизации
Для авторизации запросов, кроме ключа, полученного в личном кабинете, вы можете использовать:
- имя пользователя и пароль для доступа к сервису;
- сертификаты TLS;
- токен доступа (access token), полученный в обмен на ключ авторизации в запросе
POST /api/v2/oauth.
Для этого передайте соответствующие параметры при инициализации.
Пример авторизации с помощью логина и пароля:
py
giga = GigaChat(
base_url="https://gigachat.devices.sberbank.ru/api/v1",
user="имя_пользоваеля",
password="пароль",
)
Авторизация с помощью сертификатов по протоколу TLS (mTLS):
py
giga = GigaChat(
base_url="https://gigachat.devices.sberbank.ru/api/v1",
ca_bundle_file="certs/ca.pem", # chain_pem.txt
cert_file="certs/tls.pem", # published_pem.txt
key_file="certs/tls.key",
key_file_password="123456",
ssl_context=context # optional ssl.SSLContext instance
)
Авторизация с помощью токена доступа:
py
giga = GigaChat(
access_token="ваш_токен_доступа",
)
[!NOTE] Токен действителен в течение 30 минут.
Предварительная авторизация
По умолчанию, библиотека GigaChat получает токен доступа при первом запросе к API.
Если вам нужно получить токен и авторизоваться до выполнения запроса, инициализируйте объект GigaChat и вызовите метод get_token().
py
giga = GigaChat(
base_url="https://gigachat.devices.sberbank.ru/api/v1",
user="имя_пользователя",
password="пароль",
)
giga.get_token()
Установка корневого сертификата НУЦ Минцифры
Чтобы библиотека GigaChat могла передавать запросы в GigaChat API, вам нужно установить корневой сертификат НУЦ Минцифры.
Для этого выполните команду:
bash
curl -k "https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer" -w "\n" >> $(python -m certifi)
Вы также можете отключить проверку сертификатов с помощью параметра verify_ssl_certs=False, который передается при инициализации.
py
giga = GigaChat(
credentials="ключ_авторизации",
verify_ssl_certs=False
)
[!WARNING] Отключение проверки сертификатов снижает безопасность обмена данными.
Настройка переменных окружения
Чтобы задать параметры с помощью переменных окружения, в названии переменной используйте префикс GIGACHAT_.
Пример переменных окружения, которые задают ключ авторизации, версию API и отключают проверку сертификатов.
sh
export GIGACHAT_CREDENTIALS=...
export GIGACHAT_SCOPE=...
export GIGACHAT_VERIFY_SSL_CERTS=False
Пример переменных окружения, которые задают адрес API, имя пользователя и пароль.
sh
export GIGACHAT_BASE_URL=https://gigachat.devices.sberbank.ru/api/v1
export GIGACHAT_USER=...
export GIGACHAT_PASSWORD=...
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: 30
- Issues event: 8
- Release event: 8
- Watch event: 52
- Delete event: 11
- Member event: 1
- Issue comment event: 9
- Push event: 41
- Pull request review comment event: 2
- Pull request review event: 6
- Pull request event: 60
- Fork event: 19
Last Year
- Create event: 30
- Issues event: 8
- Release event: 8
- Watch event: 52
- Delete event: 11
- Member event: 1
- Issue comment event: 9
- Push event: 41
- Pull request review comment event: 2
- Pull request review event: 6
- Pull request event: 60
- Fork event: 19
Committers
Last synced: about 1 year ago
Top Committers
| Name | Commits | |
|---|---|---|
| Konstantin Krestnikov | K****v@s****u | 28 |
| Mikhail Murtazin | m****z@g****m | 19 |
| Sergey Malyshev | i****t@y****u | 18 |
| Konstantin Krestnikov | r****0@g****m | 13 |
| Lytkini | i****n@s****u | 7 |
| Michael S2pac | m****1@m****u | 5 |
| Dmitry Labazkin | l****y@g****m | 4 |
| kzayko | k****o@g****m | 1 |
| Lytkini | i****8@g****m | 1 |
| Idris Y | i****v@a****i | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 11 months ago
All Time
- Total issues: 14
- Total pull requests: 73
- Average time to close issues: about 1 month
- Average time to close pull requests: 5 days
- Total issue authors: 13
- Total pull request authors: 11
- Average comments per issue: 0.64
- Average comments per pull request: 0.14
- Merged pull requests: 58
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 5
- Pull requests: 49
- Average time to close issues: about 10 hours
- Average time to close pull requests: 6 days
- Issue authors: 4
- Pull request authors: 8
- Average comments per issue: 0.0
- Average comments per pull request: 0.2
- Merged pull requests: 34
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- Mihailllll (2)
- MLDovakin (1)
- Mikelarg (1)
- qSerj (1)
- Partysun (1)
- fizikoz (1)
- Void-fun (1)
- kirillkoncha (1)
- skarndev (1)
- MrBoriska (1)
- seldereyy (1)
- person2217 (1)
- David3456789 (1)
- mixa2130 (1)
Pull Request Authors
- Rai220 (44)
- Mikelarg (33)
- labdmitriy (10)
- Lytkini (7)
- mixa2130 (2)
- antonko (2)
- kzayko (2)
- makargon (2)
- sld (1)
- MariaNovozhilova (1)
- Radren (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- annotated-types 0.6.0
- anyio 4.0.0
- black 23.10.1
- certifi 2023.7.22
- click 8.1.7
- colorama 0.4.6
- coverage 7.3.0
- exceptiongroup 1.1.3
- h11 0.14.0
- httpcore 0.17.3
- httpcore 0.18.0
- httpx 0.24.1
- httpx 0.25.0
- idna 3.4
- iniconfig 2.0.0
- mypy 1.6.1
- mypy-extensions 1.0.0
- packaging 23.2
- pathspec 0.11.2
- platformdirs 3.11.0
- pluggy 1.3.0
- pydantic 2.4.2
- pydantic-core 2.10.1
- pytest 7.4.3
- pytest-asyncio 0.21.1
- pytest-httpx 0.22.0
- pytest-httpx 0.26.0
- ruff 0.0.285
- sniffio 1.3.0
- tomli 2.0.1
- typing-extensions 4.8.0
- httpx --- - !ruby/hash:ActiveSupport::HashWithIndifferentAccess version: "^0.24.0" python: "~3.8" - !ruby/hash:ActiveSupport::HashWithIndifferentAccess version: "^0.25.0" python: "^3.9"
- pydantic >=1,<3
- python ^3.8