https://github.com/ai-forever/gigachat

Библиотека для доступа к GigaChat

https://github.com/ai-forever/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

ai gigachain gigachat llm
Last synced: 11 months ago · JSON representation

Repository

Библиотека для доступа к GigaChat

Basic Info
  • Host: GitHub
  • Owner: ai-forever
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 784 KB
Statistics
  • Stars: 120
  • Watchers: 14
  • Forks: 33
  • Open Issues: 4
  • Releases: 9
Topics
ai gigachain gigachat llm
Created almost 3 years ago · Last pushed 11 months ago
Metadata Files
Readme License

README.md

О gigachat

GitHub Actions Workflow Status GitHub License GitHub Downloads (all assets, all releases) GitHub Repo stars GitHub Open Issues

GigaChat — это Python-библиотека для работы с REST API GigaChat. Она является частью GigaChain и входит в состав langchain-gigachat — партнерского пакета opensource-фреймворка LangChain.

Библиотека управляет авторизацией запросов и предоставляет все необходимые методы для работы с API. Кроме этого она поддерживает:

[!TIP] Примеры работы с библиотекой gigachat — в папке examples.

Установка

Для установки библиотеки используйте менеджер пакетов pip:

sh pip install gigachat

Быстрый старт

Для работы с библиотекой вам понадобится ключ авторизации API.

Чтобы получить ключ авторизации:

  1. Создайте проект GigaChat API в личном кабинете Studio.
  2. В интерфейсе проекта, в левой панели выберите раздел Настройки API.
  3. Нажмите кнопку Получить ключ.

В открывшемся окне скопируйте и сохраните значение поля 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

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

All Time
  • Total Commits: 97
  • Total Committers: 10
  • Avg Commits per committer: 9.7
  • Development Distribution Score (DDS): 0.711
Past Year
  • Commits: 37
  • Committers: 7
  • Avg Commits per committer: 5.286
  • Development Distribution Score (DDS): 0.649
Top Committers
Name Email 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
codex (1)

Dependencies

.github/workflows/gigachat.yml actions
  • actions/checkout v3 composite
poetry.lock pypi
  • 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
pyproject.toml pypi
  • 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