Главная / Документация / Использование инструментов и вызов функций

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

Дайте модели возможность вызывать ваши функции — цикл запросов, оба формата и ошибки, которые расходуют токены.

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

Цикл работы

  1. Вы отправляете messages и tools с описанием доступных возможностей.
  2. Модель отвечает stop_reason: tool_use и tool_use блоком с названием инструмента и его аргументами.
  3. Вы выполняете его — шлюз никогда не запускает ваш код.
  4. Вы отправляете обратно всю историю вместе с tool_result блоком.
  5. Модель формирует окончательный ответ или запрашивает другой инструмент.

Определение инструментов (формат Messages)

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "tools": [{
    "name": "get_weather",
    "description": "Current weather for a city. Use when the user asks about weather.",
    "input_schema": {
      "type": "object",
      "properties": {"city": {"type": "string", "description": "City name"}},
      "required": ["city"]
    }
  }],
  "messages": [{"role": "user", "content": "Weather in Paris?"}]
}

Возврат результата

{
  "role": "user",
  "content": [{
    "type": "tool_result",
    "tool_use_id": "toolu_01ABC...",
    "content": "18C, light rain"
  }]
}
tool_result помещается в сообщение с ролью userи tool_use_id должен в точности совпадать с идентификатором из запроса модели. Запросы с несовпадающими идентификаторами отклоняются как недопустимые.

Формат OpenAI

В /v1/chat/completions эндпоинт принимает формат OpenAI tools / tool_calls вместо этого, а результаты возвращаются в виде сообщений с ролью tool.

Стоимость использования инструментов

Схемы инструментов не меняются между шагами, что делает их хорошим кэширование промптов кандидатом наряду с системным промптом.