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

Режимы работы с функциями

Обновлено 4 августа 2025

Режим обращения к функциям задается с помощью поля function_call. Поле может принимать значения none, auto или объект с названием функции: встроенной или пользовательской, описанной в массиве functions.

Обращение к встроенным функциям возможно только в авторежиме.

Режимы без массива функций

Режимы обращения к функциям

Режим обращения к функциям задается с помощью поля function_call, который может принимать значения:

  • none — отключение обращения к функциям;
  • auto — в авторежиме модель, ориентируясь на содержание сообщений, принимает решение: воспользоваться одной из встроенных функций или сгенерировать аргументы для пользовательских функций из массива functions. При этом, если массив содержит описание хотя бы одной пользовательской функции, модель сможет ее вызвать только если ее название передано в массиве functions;
  • {"name": "название_функции"} — принудительная генерация аргументов для указанной функции. При принудительной генерации аргументов для пользовательской функции ее описание нужно обязательно передавать в массиве functions. В противном случае вернется ошибка.
Режимы с массивом функций

Отключение работы с функциями

Если вы хотите, чтобы модель не могла генерировать аргументы или обращаться к встроенным функциям, передайте в запросе "function_call": "none".

В этом случае модель просто сгенерирует текст на основе полученного запроса. Независимо от его содержимого или функций, переданных в массиве functions.

Запрос

{
"model": "GigaChat-2-Max",
"messages": [
{
"role": "user",
"content": "Какая температура в Манжероке"
}
],
"function_call": "none",
"functions": [
{
"name": "weather_forecast",
"description": "Возвращает температуру на заданный период",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Местоположение, например, название города"
},
"format": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
],
"description": "Единицы измерения температуры"
},
"num_days": {
"type": "integer",
"description": "Период, для которого нужно вернуть"
}
},
"required": [
"location",
"num_days"
]
},
"return_parameters": {
"type": "object",
"properties": {
"status": {
"description": "Статус",
"enum": [
"success",
"fail"
],
"type": "string"
},
"location": {
"type": "string",
"description": "Местоположение, например, название города"
},
"temperature": {
"type": "integer",
"description": "Температура для заданного местоположения"
},
"forecast": {
"type": "array",
"items": {
"type": "string"
},
"description": "Описание погодных условий"
},
"error": {
"type": "string",
"description": "Возвращается при возникновении ошибки. Содержит описание ошибки"
}
}
}
}
]
}

Ответ

{
"choices": [
{
"message": {
"content": "У меня нет доступа к данным о текущей температуре в режиме реального времени. Для получения актуальной информации рекомендую воспользоваться специализированными погодными сервисами или приложениями.",
"role": "assistant"
},
"index": 0,
"finish_reason": "stop"
}
],
"created": 1744804304,
"model": "GigaChat-2-Max:2.0.28.2",
"object": "chat.completion",
"usage": {
"prompt_tokens": 19,
"completion_tokens": 31,
"total_tokens": 50,
"precached_prompt_tokens": 0
}
}

Автоматический режим

Чтобы модель автоматически генерировала аргументы для пользовательских или обращалась к встроенным функциям, передайте в запросе "function_call": "auto".

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

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

Запрос

{
"model": "GigaChat-2-Pro",
"messages": [
{
"role": "user",
"content": "Нарисуй Манжерок."
}
],
"function_call": "auto",
"functions": [
{
"name": "text2image"
},
{
"name": "weather_forecast",
"description": "Возвращает температуру на заданный период",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Местоположение, например, название города"
},
"format": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
],
"description": "Единицы измерения температуры"
},
"num_days": {
"type": "integer",
"description": "Период, для которого нужно вернуть"
}
},
"required": [
"location",
"num_days"
]
},
"return_parameters": {
"type": "object",
"properties": {
"status": {
"description": "Статус",
"enum": [
"success",
"fail"
],
"type": "string"
},
"location": {
"type": "string",
"description": "Местоположение, например, название города"
},
"temperature": {
"type": "integer",
"description": "Температура для заданного местоположения"
},
"forecast": {
"type": "array",
"items": {
"type": "string"
},
"description": "Описание погодных условий"
},
"error": {
"type": "string",
"description": "Возвращается при возникновении ошибки. Содержит описание ошибки"
}
}
}
}
]
}

Ответ

{
"choices": [
{
"message": {
"content": "<img src=\"6e7d793c-38cf-4481-8554-dac2b01a27fb\" fuse=\"true\"/> нарисовал Манжерок в Алтае.",
"role": "assistant",
"functions_state_id": "ff10827a-407b-4503-a1e6-7448f85f2e3e"
},
"index": 0,
"finish_reason": "stop"
}
],
"created": 1748527095,
"model": "GigaChat-2-Pro:2.0.28.2",
"object": "chat.completion",
"usage": {
"prompt_tokens": 727,
"completion_tokens": 50,
"total_tokens": 777,
"precached_prompt_tokens": 0
}
}

Принудительный режим

Если в поле function_call передать объект с названием функции из массива functions, модель попытается использовать ее независимо от полученного запроса.

При этом, если в массиве functions отсутствует функция с подходящим названием, модель вернет ошибку:

{
"status": 422,
"message": "Invalid params: explicit_call function name must exist in functions"
}

В примере ниже модель генерирует аргументы для пользовательской функции, хотя запрос не содержит явного намерения узнать температуру.

Запрос

{
"model": "GigaChat-2-Max",
"messages": [
{
"role": "user",
"content": "Я слышал, что в Манжероке красиво"
}
],
"function_call": {
"name": "weather_forecast"
},
"functions": [
{
"name": "weather_forecast",
"description": "Возвращает температуру на заданный период",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Местоположение, например, название города"
},
"format": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
],
"description": "Единицы измерения температуры"
},
"num_days": {
"type": "integer",
"description": "Период, для которого нужно вернуть"
}
},
"required": [
"location",
"num_days"
]
},
"return_parameters": {
"type": "object",
"properties": {
"status": {
"description": "Статус",
"enum": [
"success",
"fail"
],
"type": "string"
},
"location": {
"type": "string",
"description": "Местоположение, например, название города"
},
"temperature": {
"type": "integer",
"description": "Температура для заданного местоположения"
},
"forecast": {
"type": "array",
"items": {
"type": "string"
},
"description": "Описание погодных условий"
},
"error": {
"type": "string",
"description": "Возвращается при возникновении ошибки. Содержит описание ошибки"
}
}
}
}
]
}

Ответ

{
"choices": [
{
"message": {
"content": "",
"role": "assistant",
"function_call": {
"name": "weather_forecast",
"arguments": {
"format": "celsius",
"location": "Манжерок"
}
},
"functions_state_id": "b5ea59c4-b980-401c-995f-75175804dfcd"
},
"index": 0,
"finish_reason": "function_call"
}
],
"created": 1744804424,
"model": "GigaChat-2-Max:2.0.28.2",
"object": "chat.completion",
"usage": {
"prompt_tokens": 25,
"completion_tokens": 26,
"total_tokens": 51,
"precached_prompt_tokens": 112
}
}
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера.