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

Работа с историей чата

Обновлено 5 марта 2025

Передача истории чата позволяет GigaChat работать с результатами прошлых запросов пользователя. Когда вы переписываетесь с нейросетевой моделью в веб-интерфейсе, она автоматически учитывает историю чата.

Если для обмена сообщениями вы используете GigaChat API, историю чата нужно передавать явно в поле messages запроса POST /chat/completions.

Передвайте текст сообщений (поле content) в кодировке UTF8. Это позволит снизить расход токенов при обработке сообщения.

Пример запроса с историей чата:

curl https://gigachat.devices.sberbank.ru/api/v1/chat/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access_token' \
-d '{
"model": "GigaChat",
"messages": [
{
"role": "user",
"content": "Когда уже ИИ захватит этот мир?"
},
{
"role": "assistant",
"content": "Пока что это не является неизбежным событием. Несмотря на то, что искусственный интеллект (ИИ) развивается быстрыми темпами и может выполнять сложные задачи все более эффективно, он по-прежнему ограничен в своих возможностях и не может заменить полностью человека во многих областях. Кроме того, существуют этические и правовые вопросы, связанные с использованием ИИ, которые необходимо учитывать при его разработке и внедрении."
},
{
"role": "user",
"content": "Думаешь, у нас еще есть шанс?"
}
],
}'

Кэширование запросов

Вы можете использовать необязательный идентификатор сессии X-Session-ID для кэширования контекста разговора с GigaChat. Идентификатор передается в заголовке запроса и может содержать произвольную строку. Если при получении запроса, модель находит в кэше данные о запросе с таким же идентификатором и частично совпадающим контекстом, то она не пересчитывает этот контекст. Количество кэшированных токенов, которые не учитываются в расчете стоимости, содержится в поле precached_prompt_tokens, в ответе на запрос POST /chat/completions.

Кэширование позволяет повысить скорость ответа и снизить расходы на генерацию, благодаря тому, что модель тратит меньше токенов на обработку сообщений контекста с одинаковыми идентификаторами.

Подробнее о расчете стоимости — в разделе Подсчет токенов.

Кэширование может быть полезно для:

  • разработки разговорных агентов, которые должны учитывать большой контекст для ведения диалога.
  • создания ассистентов, которые помогают писать код. Например, вы можете закэшировать кодовую базу, которую модель должна будет учитывать при автодополнении.
  • работы с большими документами.
  • передачи в модель большого набора инструкций. Например, вы можете сохранить в кэше множество различных примеров желаемого результата работы модели.
  • сохранения результатов вызовов функций, при многократном обращении к ним.

Примеры запросов с заголовком X-Session-ID, в котором передан идентификатор в формате uuid4.

Добавление необязательных заголовков поддерживается только в Python-библиотеках GigaChat.

Пример запроса с историей чата:

curl https://gigachat.devices.sberbank.ru/api/v1/chat/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access_token' \
-H 'X-Session-ID: dfa87a40-99a9-42c4-b810-6c7caa1e1e8b' \
-d '{
"model": "GigaChat",
"messages": [
{
"role": "user",
"content": "Запрос пользователя"
},
{
"role": "assistant",
"content": "Ответ модели"
},
{
"role": "user",
"content": "Запрос пользователя"
}
],
}'
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера.