Python SDK для GigaChat API
GigaChat — это Python-библиотека для работы с REST API GigaChat. Она является частью GigaChain и входит в состав langchain-gigachat — партнерского пакета opensource-фреймворка LangChain .
Библиотека управляет авторизацией запросов и предоставляет все необходимые методы для работы с API. Она поддерживает:
- генерацию ответов с помощью моделей GigaChat в синхронном и асинхронном режиме;
- обработку потоковой передачи токенов;
- создание эмбеддингов;
- работу с функциями;
- режим Vision — распознавание изображений;
- работу с файлами;
- подсчет токенов;
- несколько способов аутентификации;
- автоповтор запросов с настраиваемым экспоненциальным откладыванием;
- полную типизацию на Pydantic V2.
Больше информации — в репозитории проекта .
Установка
Для работы библиотеки используйте Python в версии от 3.8 до 3.13.
Для установки библиотеки используйте менеджер пакетов pip:
pip install gigachat
Быстрый старт
Для работы с библиотекой вам понадобятся ключ авторизации API и сертификаты Минцифры.
Передайте полученный ключ авторизации в параметре credentials при инициализации объекта GigaChat.
Пример запроса на генерацию ответа:
from gigachat import GigaChat
# Укажите ключ авторизации, полученный в личном кабинете, в интерфейсе проекта GigaChat API
with GigaChat(credentials="ваш_ключ_авторизации") as client:
response = client.chat.create("Какие факторы влияют на стоимость страховки на дом?")
print(response.messages[0].content[0].text)
Миграция на новый API-контракт
Методы client.chat и client.achat теперь предоставляют primary-поверхность chat/completions:
client.chat.create(...)client.chat.stream(...)client.chat.parse(...)await client.achat.create(...)client.achat.stream(...)await client.achat.parse(...)
Предыдущий контракт доступен через корневые методы совместимости:
client.chat(...)client.stream(...)client.chat_parse(...)await client.achat(...)client.astream(...)await client.achat_parse(...)
Корневые методы не считаются устаревшими и не выдают DeprecationWarning. При миграции используйте новые primary-модели: ChatCompletionRequest, ChatCompletionResponse, ChatMessage и связанные с ними Chat*-модели вместо старых Chat, Messages, Function, Usage.
Примеры использования
Больше примеров — в репозитории .
Генерация ответа
from gigachat import GigaChat
with GigaChat(credentials="<ваш_ключ_авторизации>") as client:
response = client.chat.create("Привет, GigaChat!")
print(response.messages[0].content[0].text)
Потоковая передача токенов
Получение токенов по мере их генера ции:
from gigachat import GigaChat
with GigaChat() as client:
for chunk in client.chat.stream("Напиши короткое стихотворение о программировании"):
for msg in chunk.messages or []:
for part in msg.content or []:
if part.text:
print(part.text, end="", flush=True)
print()
Асинхронный режим
Для работы в асинхронном режиме используйте конструкци ю async/await:
import asyncio
from gigachat import GigaChat
async def main():
async with GigaChat() as client:
# Асинхронный чат
response = await client.achat.create("Объясните квантовые вычисления простыми словами")
print(response.messages[0].content[0].text)
# Асинхронная потоковая передача
print("Потоковый вывод:")
async for chunk in client.achat.stream("Расскажите анекдот"):
for msg in chunk.messages or []:
for part in msg.content or []:
if part.text:
print(part.text, end="", flush=True)
print()
asyncio.run(main())
Создание эмбеддингов
Генерация векторного представления текста:
from gigachat import GigaChat
with GigaChat() as client:
result = client.embeddings(["Привет, мир!", "Машинное обучение интересно"])
for i, item in enumerate(result.data):
print(f"Текст {i + 1}: {len(item.embedding)} измерений")
Работа с функциями
Пример вызова генерации аргументов для пол ьзовательской функции прогноза погоды.
Подробнее о функциях в GigaChat — в разделе Работа с функциями.
from gigachat import GigaChat
from gigachat.models import ChatCompletionRequest, ChatMessage, ChatFunctionSpecification, ChatFunctionsTool
# Описание функции
functions = [
ChatFunctionSpecification(
name="get_weather",
description="Возвращает текущую погоду для местоположения",
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Название города, например, «Москва»"
}
},
"required": ["location"]
}
)
]
request = ChatCompletionRequest(
messages=[ChatMessage(role="user", content="Какая погода в Болхове?")],
tools=[ChatFunctionsTool(functions=functions)],
)
with GigaChat() as client:
response = client.chat.create(chat)
message = response.messages[0]
function_call = extract_function_call(message)
if function_call is not None:
print(f"Функция: {function_call.name}")
print(f"Аргументы: {function_call.arguments}")
Vision
Библиотека поддерживает распознавание изображений — передайте изображение в запр осе и задайте о нем вопрос:
from gigachat import GigaChat
from gigachat.models import ChatCompletionRequest, ChatMessage, ChatContentPart
request = ChatCompletionRequest(
messages=[ChatMessage(role="user", content=[
ChatContentPart(type="text", text="Что изображено на этой картинке?"),
ChatContentPart(type="image_url", image_url={"url": "https://example.com/image.jpg"}),
])],
)
with GigaChat() as client:
response = client.chat.create(request)
print(response.messages[0].content[0].text)
Параметры объекта GigaChat
В таблице описаны параметры, которые можно передать при инициализации объекта GigaChat:
| Параметр | Обязательный | Значение по умолчанию | Описание |
|---|---|---|---|
credentials | да | None | Ключ авторизации для обмена сообщениями с GigaChat API. Ключ авторизации содержит информацию о версии API, к которой выполняются запросы. Если вы используете версию API для ИП или юрлиц, укажите это явно в параметре scope |
user | str | None | Имя пользователя для аутентификации |
password | str | None | Пароль для аутентификации |
ca_bundle_file | str | None | Путь к файлу корневого сертификата |
cert_file | str | None | Путь к клиентскому сертификату (для mTLS) |
key_file | str | None | Путь к клиентскому ключу (для mTLS) |
key_file_password | str | None | Пароль для клиентского ключа |
verify_ssl_certs | нет | True | Отключение проверки ssl-сертификатов. Для обращения к GigaChat API нужно установить корневой сертификат НУЦ Минцифры. Используйте параметр ответственно, так как отключение проверки сертификатов снижает безопасность обмена данными |
scope | нет | GIGACHAT_API_PERS | Версия API, к которой будет выполнен запрос. По умолчанию запросы передаются в версию для физических лиц. Возможные значения:
|
model | нет | GigaChat | Позволяет явно задать модель GigaChat. Вы можете посмотреть список доступных моделей с помощью метода get_models(), который выполняет запрос GET /models.Стоимость запросов к разным моделям отличается. Подробную информацию о тарификации запросов к той или иной модели вы ищите в официальной документации |
base_url | нет | https://gigachat.devices.sberbank.ru/api/v1 |