GETAPI
СвязатьсяВойти
GETAPI/Документация/Вызов инструментов

Вызов инструментов

Описание функций, выполнение вызовов и возврат результата

Модель возвращает имя функции и аргументы Ваше приложение проверяет аргументы, выполняет разрешённое действие и передаёт результат модели API не выполняет пользовательскую функцию самостоятельно

1. Опишите функцию

bash
curl https://api.getapi.ru/v1/chat/completions \
  -H "Authorization: Bearer $GETAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4.1-mini",
    "messages": [{"role": "user", "content": "Какая погода в Москве?"}],
    "max_tokens": 256,
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Получить текущую погоду в городе",
        "parameters": {
          "type": "object",
          "properties": {"city": {"type": "string"}},
          "required": ["city"],
          "additionalProperties": false
        }
      }
    }],
    "tool_choice": "auto"
  }'

2. Обработайте вызов

Фрагмент ответа

json
{
  "role": "assistant",
  "content": null,
  "tool_calls": [{
    "id": "call_example",
    "type": "function",
    "function": {"name": "get_weather", "arguments": "{\"city\":\"Москва\"}"}
  }]
}

function.arguments является строкой JSON, сначала разберите её и проверьте по схеме Используйте разрешённый список функций Не исполняйте аргументы как код или команду оболочки Действия с побочными эффектами должны проходить проверки доступа вашего приложения

3. Передайте результат

Сохраните сообщение assistant целиком и добавьте сообщение tool для каждого вызова Значение tool_call_id берётся из tool_calls[].id

json
{
  "model": "gpt-4.1-mini",
  "messages": [
    {"role": "user", "content": "Какая погода в Москве?"},
    {
      "role": "assistant",
      "content": null,
      "tool_calls": [{
        "id": "call_example",
        "type": "function",
        "function": {"name": "get_weather", "arguments": "{\"city\":\"Москва\"}"}
      }]
    },
    {
      "role": "tool",
      "tool_call_id": "call_example",
      "content": "{\"city\":\"Москва\",\"temperature_c\":18}"
    }
  ],
  "max_tokens": 256
}

Модель использует результат для следующего ответа Для многошагового сценария продолжайте передавать описание доступных функций и ограничьте число итераций в приложении

tool_choice

ЗначениеНазначение
autoМодель выбирает текст или функцию
noneЗапрет вызова
requiredТребуется вызов инструмента, если модель поддерживает режим
{"type":"function","function":{"name":"get_weather"}}Выбор конкретной функции

Поддержка режимов зависит от модели Наличие вызова определяйте по tool_calls, значение finish_reason не является единственным признаком

Несколько вызовов

Один ответ может содержать несколько элементов tool_calls Верните результат для каждого идентификатора Не считайте вызовы независимыми только потому, что они находятся в одном ответе Порядок выполнения и разрешённую параллельность определяет приложение

Поток

В SSE аргументы приходят частями в delta.tool_calls Собирайте каждый вызов по index, сохраняйте id, имя и фрагменты arguments JSON разбирайте после завершения сборки, не на каждом фрагменте

Формат Messages

Вместо function.parameters используется input_schema Модель возвращает блок tool_use с объектом input Результат передаётся блоком tool_result в сообщении user Подробности и пример содержатся в Messages

Стоимость и надёжность

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

Ошибки, потоковые ответы

Назад
← Потоковые ответы
Далее
Структурированный вывод →