Работа с API в Python
Вы можете отправлять запросы к REST API GigaChat с помощью одноименной Python-библиотеки.
Перед началом работы убедитесь, что у вас установлены сертификаты НУЦ Минцифры.
Библиотека позволяет автоматически авторизовать запросы и предоставляет методы для работы с GigaChat API. С ее помощью вы можно:
получить список доступных моделей;
получить ответ модели на сообщение;
Для получения ответа в режиме потоковой генерации токенов используйте метод
stream()
.загрузить файл в хранилище;
скачать сгенерированное изображение;
создать эмбеддинг;
посчитать токены в сообщении.
Библиотека входит в состав пакета langchain_gigachat
, который позволяет использовать модели GigaChat с фреймворком LangChain.
Подробнее — в документации GigaChain.
Начало работы
Чтобы начать работу с API с помощью библиотеки gigachat:
Установите библиотеку с помощью менеджера пакетов:
pip install gigachat
Инициализируйте объект 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')]