Работа с историей чата
Передача истории чата позволяет GigaChat работать с результатами прошлых запросов пользователя. Когда вы переписываетесь с нейросетевой моделью в веб-интерфейсе, она автоматически учитывает историю чата.
Если для обмена сообщениями вы используете GigaChat API, историю чата нужно передавать явно в поле messages
запроса POST /chat/completions
.
Пример запроса с историей чата:
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.
Идентификатор передается в заголовке запроса и может содержать произвольную строку.
Если при получении запроса, модель находит в кэше данные о запросе с таким же идентификатором и частично совпадающим контекстом, то она не пересчитывает этот контекст.
Такой подход позволяет снизить время на генерацию ответа.
Кэширование позволяет снизить расходы на генерацию, благодаря тому, что модель тратит меньше токенов на обработку сообщений контекста с одинаковыми идентификаторами.
Кэширование изображений в настоящий момент не поддерживается.
Кэширование может быть полезно при:
- разработке разговорных агентов, которые должны учитывать большой контекст для ведения диалога.
- создании асситентов, которые помогают писать код. Например, вы можете закэшировать кодовую базу, которую модель должна будет учитывать при автодополнении.
- работе с большими документами.
- необходимости передать в модель большой набор инструкций. Например, вы можете сохранить в кэше множество различных примеров желаемого результата работы модели.
- многократном вызове функций, для сохранения результатов вызовов.
Пример запроса с заголовком X-Session-ID
, в котором передан идентификатор в формате uuid4:
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": "Запрос пользователя"
}
],
}'