Перейти к содержанию
Справочник APIClient tools (функции)

Client tools (функции)

Claude выбирает функцию, ваш код выполняет её.

Протокол модели

Клиентские функции Claude используют цикл tool_usetool_result с серверным промптом и без него. Функцию выполняет ваш клиент. Форматы и ограничения зависят от выбранного API.

json
{
  "model": "claude-opus-5",
  "max_tokens": 1024,
  "tools": [{
    "name": "get_weather",
    "description": "Погода по городу",
    "input_schema": {
      "type": "object",
      "properties": {"city": {"type": "string"}},
      "required": ["city"]
    }
  }],
  "messages": [{"role": "user", "content": "Какая погода в Москве?"}]
}

В ответе придёт блок tool_use с именем инструмента и аргументами — выполните его у себя и верните результат блоком tool_result.

json
{
  "role": "user",
  "content": [{
    "type": "tool_result",
    "tool_use_id": "toolu_…",
    "content": "Москва: +18 °C, ясно"
  }]
}

Kimi, Composer и Grok

СемействоКлиентские функции
KimiРаботают на Messages, Chat Completions и Responses; формат tools и выбора инструмента зависит от API
ComposerРаботают на всех трёх поверхностях; инструмент исполняет клиент. tool_choice — только автоматический
GrokРаботают на всех трёх поверхностях; инструмент исполняет клиент. tool_choice — только автоматический

Kimi: что проверяется локально

  • tools должен быть массивом объектов, у функции обязательно есть имя, имена не повторяются.
  • Схема аргументов проверяется на глубину до 32 уровней, до 4096 узлов и до 256 КиБ в каноническом виде. Превышение даёт локальный 400 до списания.
  • У моделей kimi-for-coding и kimi-for-coding-highspeed значение tool_choice: "required" не поддерживается и отклоняется локально. У k3 и k3-256k оно проходит.

Composer и Grok: как выглядит вызов

Цикл работает на всех трёх поверхностях в их собственном формате. Модель возвращает вызов; клиент исполняет инструмент и возвращает результат в тот же диалог. До результата запрос остаётся незавершённым.

ПоверхностьЧто приходит вместо ответаЧем отвечать
/v1/messagesблоки tool_use в content и stop_reason: "tool_use"блок tool_result с тем же tool_use_id
/v1/chat/completionschoices[0].message.tool_calls и finish_reason: "tool_calls"сообщение с ролью tool и полем tool_call_id
/v1/responsesэлемент type: "function_call" в output с call_idэлемент function_call_output с тем же call_id

Наши собственные потолки

Незавершённый цикл инструментов ограничен временем ожидания результата и общей длительностью. Завершайте вызовы в том же диалоге и учитывайте ограничения ниже.

ПределЗначениеЧто происходит при выходе за него
Ответ на вызов инструмента120 секунд с момента, когда вы получили ход с вызовомпрогон закрывается, и уже потраченная его часть списывается. Вернувшись позже, вы начнёте разговор заново и заплатите за вход второй раз
Длительность одного прогона600 секунд504 cursor_run_timeout, а в потоке — событие error с тем же кодом. Прогон оплачен
Незаконченные разговоры на один ключЧисло одновременно ожидающих результата циклов ограничено для каждого ключа429 cursor_key_pause_limit до резервирования денег: отказ бесплатный. Закончите или бросьте один разговор, чтобы начать следующий

Разделы документации

На этой странице