ym88659208ym87991671
Работа с API в Python | Документация для разработчиков

Работа с API в Python

Обновлено 3 декабря 2024

Вы можете отправлять запросы к REST API GigaChat с помощью одноименной Python-библиотеки.

Перед началом работы убедитесь, что у вас установлены сертификаты НУЦ Минцифры.

Библиотека позволяет автоматически авторизовать запросы и предоставляет методы для работы с GigaChat API. С ее помощью вы можно:

  • получить список доступных моделей;

  • получить ответ модели на сообщение;

    Для получения ответа в режиме потоковой генерации токенов используйте метод stream().

  • загрузить файл в хранилище;

  • скачать сгенерированное изображение;

  • создать эмбеддинг;

  • посчитать токены в сообщении.

Библиотека входит в состав пакета langchain_gigachat, который позволяет использовать модели GigaChat с фреймворком LangChain.

Подробнее — в документации GigaChain.

Начало работы

Чтобы начать работу с API с помощью библиотеки gigachat:

  1. Установите библиотеку с помощью менеджера пакетов:

    pip install gigachat
  2. Инициализируйте объект GigaChat:

    from gigachat import GigaChat

    model = GigaChat(
    credentials="ключ_авторизации",
    scope="GIGACHAT_API_PERS",
    model="GigaChat",
    )

Объект GigaChat принимает параметры:

  • credentials — ключ авторизации для обмена сообщениями с GigaChat API. О том как получить ключ авторизации — в разделе Быстрый старт.

  • scope — версия API, к которой будет выполнен запрос. Необязательный параметр. Возможные значения:

    • GIGACHAT_API_PERS — версия API для физических лиц;
    • GIGACHAT_API_B2B — версия API для ИП и юрлиц при работе по предоплате.
    • GIGACHAT_API_CORP — версия API для ИП и юрлиц при работе по постоплате.

    По умолчанию запросы передаются в версию для физических лиц.

  • model — необязательный параметр, в котором можно явно задать модель GigaChat.

Примеры обращения к API с помощью библиотеки

Получить токен доступа

По умолчанию библиотека автоматически получает токен доступа при отправке первого запроса.

Вы можете получить токен принудительно для предварительной авторизации до отправки запросов с помощью метода get_token().

model.get_token()

Метод выполнит запрос POST /api/v2/oauth и вернет токен доступа, который вы сможете использовать для авторизации в сервисе. Токен доступа действует 30 минут.

Получить список моделей

Метод выполняет запрос GET /models и возвращает массив объектов с данными доступных моделей.

response = model.get_models()

print(response)
    data=[Model(id_='GigaChat', object_='model', owned_by='salutedevices'), Model(id_='GigaChat-Max', object_='model', owned_by='salutedevices'), Model(id_='GigaChat-Plus', object_='model', owned_by='salutedevices'), Model(id_='GigaChat-Pro', object_='model', owned_by='salutedevices')] object_='list'

Получить ответ на сообщение

Метод выполняет запрос POST /chat/completions и возвращает ответ модели, сгенерированный на основе переданных сообщений.

В одном фрагменте:

from gigachat import GigaChat

model = GigaChat(
credentials="ключ_авторизации",
model="GigaChat-Pro",
)

response = model.chat("Расскажи о себе в двух словах?")

print(response.choices[0].message.content)
    Я нейросетевая модель, созданная компанией Сбер в 2023 году. Могу помогать с ответами на вопросы, решать задачи и поддерживать беседу.

В режиме потоковой генерации токенов:

for chunk in model.stream("Расскажи о себе подробно"):
print(chunk.choices[0].delta.content, end="", flush=True)
    Я — нейросетевая модель, созданная компанией Сбер для помощи пользователям в решении различных задач и вопросов. Могу генерировать тексты, отвечать на вопросы, решать математические задачи, писать код, переводить тексты и многое другое. У меня есть несколько режимов работы, включая генеративный режим, режим математики, программирования, перевода и другие.

Мои возможности включают:
- Генерация текста: могу написать эссе, статью, рассказ или другой текст по вашему запросу.
- Решение математических задач: могу решить уравнения, системы уравнений, неравенства и т.д.
- Программирование: могу писать код на Python, JavaScript, SQL и других языках программирования.
- Перевод: могу перевести текст с русского на английский и обратно.
- Аналитика: могу анализировать данные и делать выводы на основе статистических данных.

Я обучался на огромном количестве данных, что позволяет мне предоставлять точные и полезные ответы. Если у вас есть конкретный запрос или вопрос, я готов помочь!

Загрузить файл в хранилище

Метод выполняет запрос POST /files и возвращает объект с данными загруженного файла. Загруженные файлы доступны только вам.

Подробнее о работе с файлами с помощью API — в разделе Обработка файлов.

from IPython.display import Image

Image(filename='cat.jpg')

file = model.upload_file(open("cat.jpg", "rb"))
result = model.chat(
{
"messages": [
{
"role": "user",
"content": "Какой окрас у кота на фото?",
"attachments": [file.id_],
}
],
"temperature": 0.1
}
)

Скачать сгенерированное изображение

Метод выполняет запрос GET /files/{file_id}/content и возвращает файл изображения в бинарном представлении в формате JPG.

Подробнее о работе с файлами с помощью API — в разделе Обработка файлов.

response: Image = model.get_image(file_id=...)

Создать эмбеддинг

Выполняет запрос POST /embeddings и возвращает векторное представление запроса.

Подробнее об использовании эмбеддингов — в разделе Векторное представление текста.

response = model.embeddings(["Hello world!"])
print(response)

Подсчитать количество токенов в запросе

Выполняет запрос POST /tokens/count и возвращает объект с информацией о количестве токенов, подсчитанных заданной моделью в строках.

result = model.tokens_count(input_=["12345"], model="GigaChat-Pro")
print(result)
    [TokensCount(tokens=6, characters=5, object_='tokens')]

Смотрите также

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.