[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-ai\u002Fchat\u002Ftools":3,"docs-tabs-ai\u002Fchat\u002Ftools":6},{"content":4,"lastmod":5},"\n## Вызов функций (tools)\n\nОпишите функции, которые модель может вызвать, и она сама решит, когда это нужно. Модель не выполняет функцию — она возвращает её имя и аргументы, а вызов делает ваш код. Результат вы отправляете обратно в диалог, и модель формулирует финальный ответ.\n\nКогда модель решает вызвать функцию, `finish_reason` равен `tool_calls`, а `content` — `null`. Аргументы приходят в `tool_calls[].function.arguments` строкой с JSON.\n\n## Описание функции\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"bitrix\u002Fbitrixgpt-5.5\",\n    \"messages\": [\n      {\"role\": \"user\", \"content\": \"Какая погода в Москве?\"}\n    ],\n    \"tools\": [\n      {\n        \"type\": \"function\",\n        \"function\": {\n          \"name\": \"get_weather\",\n          \"description\": \"Получить текущую погоду в указанном городе\",\n          \"parameters\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"city\": {\"type\": \"string\", \"description\": \"Название города\"}\n            },\n            \"required\": [\"city\"]\n          }\n        }\n      }\n    ],\n    \"tool_choice\": \"auto\"\n  }'\n```\n\n## Пример ответа\n\n```json\n{\n  \"id\": \"chatcmpl-9aaee7576d8057ab\",\n  \"object\": \"chat.completion\",\n  \"model\": \"bitrix\u002Fbitrixgpt-5.5\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"finish_reason\": \"tool_calls\",\n      \"message\": {\n        \"role\": \"assistant\",\n        \"content\": null,\n        \"tool_calls\": [\n          {\n            \"id\": \"chatcmpl-tool-a423212c4e614cab\",\n            \"type\": \"function\",\n            \"function\": {\n              \"name\": \"get_weather\",\n              \"arguments\": \"{\\\"city\\\": \\\"Москва\\\"}\"\n            }\n          }\n        ]\n      }\n    }\n  ],\n  \"usage\": {\"prompt_tokens\": 275, \"completion_tokens\": 26, \"total_tokens\": 301}\n}\n```\n\n## Возврат результата в диалог\n\nВыполните функцию у себя и добавьте в `messages` сообщение с ролью `tool` и тем же `tool_call_id`:\n\n```json\n{\n  \"messages\": [\n    {\"role\": \"user\", \"content\": \"Какая погода в Москве?\"},\n    {\"role\": \"assistant\", \"content\": null, \"tool_calls\": [{\"id\": \"chatcmpl-tool-a423212c4e614cab\", \"type\": \"function\", \"function\": {\"name\": \"get_weather\", \"arguments\": \"{\\\"city\\\": \\\"Москва\\\"}\"}}]},\n    {\"role\": \"tool\", \"tool_call_id\": \"chatcmpl-tool-a423212c4e614cab\", \"content\": \"+5°C, облачно\"}\n  ]\n}\n```\n\nСледующим ответом модель сформулирует человеческий текст на основе полученного результата.\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `unsupported_tool_type` | В массиве `tools` есть элемент с `type`, отличным от `function`. Для поиска в интернете используйте [`POST \u002Fv1\u002Fsearch`](\u002Fdocs\u002Fsearch\u002Frun) |\n| 400 | `tool_choice_without_tools` | Передан `tool_choice`, но массив `tools` отсутствует |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Поддерживается только `type: \"function\"`.** Встроенных инструментов вроде поиска в интернете у эндпоинта нет. Запрос с другим значением `type` отклоняется с `400`, а не выполняется молча без инструментов.\n\n**Имена в ответе сверяются с вашим списком.** Если модель придумала имя функции, которого нет в `tools`, такой вызов удаляется из ответа. Когда придуманными оказываются все вызовы, `finish_reason` меняется на `stop`, а в `content` приходит текстовое объяснение — диалог не зацикливается на несуществующей функции.\n\n**Аргументы приходят строкой.** Поле `arguments` — это JSON в виде строки, его нужно разобрать перед использованием. Модель может вернуть синтаксически корректный JSON, не соответствующий вашей схеме параметров, поэтому проверяйте значения перед вызовом.\n\n## Смотрите также\n\n- [Создать чат-комплишен](.\u002Fcompletions.md)\n- [Гарантированный JSON-ответ](.\u002Fjson.md)\n- [Веб-поиск](\u002Fdocs\u002Fsearch\u002Frun)\n- [Список моделей](\u002Fdocs\u002Fai\u002Fmodels\u002Flist)\n","2026-07-10",{}]