Режимы работы с функциями
Режим обращения к функциям задается с помощью поля 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
}
}