GigaChat. Python-library for GigaChain and LangChain


Keywords
ai, gigachain, gigachat, llm
License
MIT
Install
pip install gigachat==0.1.0

Documentation

GigaChat. Python-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для GigaChain

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ GigaChain ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ GigaChat β€” нСйросСтСвой ΠΌΠΎΠ΄Π΅Π»ΠΈ, которая ΡƒΠΌΠ΅Π΅Ρ‚ вСсти Π΄ΠΈΠ°Π»ΠΎΠ³, ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ тСксты ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΏΠΎ запросу.

ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с сСрвисом обСспСчиваСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat API. О Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ API Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² синхронном ΠΈΠ»ΠΈ Π² асинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ подсчСт Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² Π² тСкстС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat API.

Warning

Π’ вСрсии 0.1.14 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (functions). Данная опция находится Π½Π° этапС тСстирования ΠΈ ΠΏΠΎΠΊΠ° доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях.

Установка

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip:

pip install gigachat

Π Π°Π±ΠΎΡ‚Π° с GigaChat

ΠŸΠ΅Ρ€Π΅Π΄ использованиСм модуля:

  1. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ GigaChat API.

  2. Π’ Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Client Secret.

    ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ ΠΎΠΊΠ½ΠΎ Новый Client Secret.

  3. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅, скопируйтС ΠΈ сохранитС Ρ‚ΠΎΠΊΠ΅Π½, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΠΎΠ»Π΅ АвторизационныС Π΄Π°Π½Π½Ρ‹Π΅.

    [!WARNING] НС Π·Π°ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ, ΠΏΠΎΠΊΠ° Π½Π΅ сохранитС Ρ‚ΠΎΠΊΠ΅Π½. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² GigaChain ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для обращСния ΠΊ GigaChat:

from gigachat import GigaChat

# Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅ ΠΈΠ· поля АвторизационныС Π΄Π°Π½Π½Ρ‹Π΅
with GigaChat(credentials=<Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅>, verify_ssl_certs=False) as giga:
    response = giga.chat("КакиС Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ страховки Π½Π° Π΄ΠΎΠΌ?")
    print(response.choices[0].message.content)

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Бпособы Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

Авторизация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΠΊΠ΅Π½Π° (Π² Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅ ΠΈΠ· поля АвторизационныС Π΄Π°Π½Π½Ρ‹Π΅):

giga = GigaChat(credentials=...)

# Π›ΠΈΡ‡Π½ΠΎΠ΅ пространство
giga = GigaChat(credentials=..., scope="GIGACHAT_API_PERS")

# ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ пространство
giga = GigaChat(credentials=..., scope="GIGACHAT_API_CORP")

Авторизация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΠΎΠ³ΠΈΠ½Π° ΠΈ пароля:

giga = GigaChat(
    base_url="https://gigachat.devices.sberbank.ru/api/v1",
    user=...,
    password=...,
)

Взаимная аутСнтификация ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ TLS (mTLS):

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",
)

Авторизация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΊΠ΅Π½Π°

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ настройки

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠΎΠ΄Π΅Π»ΠΈ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChain Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ модСлям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт GigaChat.

Для этого ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ model:

giga = GigaChat(model="GigaChat-Pro")

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список доступных ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запроса GET /models ΠΊ GigaChat API.

Warning

Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ запросов ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ модСлям отличаСтся. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π°Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ запросов ΠΊ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Ρ‹ ΠΈΡ‰ΠΈΡ‚Π΅ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²

Для подсчСта количСства Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² Π² запросах ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ tokens_count(["тСкст1", "тСкст2", ...]).

ΠœΠ΅Ρ‚ΠΎΠ΄ выполняСт запрос POST /tokens/count ΠΊ GigaChat API ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ количСствС Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС.

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ прСдставлСниС тСкста

Π­ΠΌΠ±Π΅Π΄Π΄ΠΈΠ½Π³ (Π°Π½Π³Π». embedding) β€” это Π²Π΅ΠΊΡ‚ΠΎΡ€, прСдставлСнный Π² Π²ΠΈΠ΄Π΅ массива чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ получаСтся Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ прСобразования Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, тСкста. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ этих чисСл, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€, дСйствуСт ΠΊΠ°ΠΊ многомСрная ΠΊΠ°Ρ€Ρ‚Π° для измСрСния сходства.

Для получСния эмбСддингов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ embeddings("тСкст").

Warning

Ѐункция получСния эмбСддингов находится Π½Π° этапС тСстирования ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступна Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ катСгориям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСртификатов

Для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСртификатов ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ verify_ssl_certs=False:

giga = GigaChat(verify_ssl_certs=False)

Warning

ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСртификатов сниТаСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Установка ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ сСртификата НУЦ ΠœΠΈΠ½Ρ†ΠΈΡ„Ρ€Ρ‹:

Для установка ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ сСртификата НУЦ ΠœΠΈΠ½Ρ†ΠΈΡ„Ρ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

curl -k "https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer" -w "\n" >> $(python -m certifi)

Настройки Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ настройки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ прСфикс GIGACHAT_.

Авторизация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСртификатов:

export GIGACHAT_CREDENTIALS=...
export GIGACHAT_SCOPE=...
export GIGACHAT_VERIFY_SSL_CERTS=False

Авторизация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΠΎΠ³ΠΈΠ½Π° ΠΈ пароля:

export GIGACHAT_BASE_URL=https://gigachat.devices.sberbank.ru/api/v1
export GIGACHAT_USER=...
export GIGACHAT_PASSWORD=...