Перейти к основному содержимому

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

Модель не выполняет функции сама — она сообщает, какую функцию и с какими аргументами вызвать. Выполняете вы, результат отдаёте обратно. На этом построены все агенты.

Формат OpenAI​

curl https://aipomogator.ru/go/v1/chat/completions \
-H "Authorization: Bearer $AIPOMOGATOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "openrouter/anthropic/claude-opus-5",
"messages": [{"role": "user", "content": "Какая погода в Москве?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Возвращает погоду в городе",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}]
}'

В ответе — tool_calls с именем функции и аргументами:

{
"choices": [{
"message": {
"role": "assistant",
"tool_calls": [{
"id": "call_abc123",
"type": "function",
"function": {"name": "get_weather", "arguments": "{\"city\":\"Москва\"}"}
}]
},
"finish_reason": "tool_calls"
}]
}

Дальше выполняете функцию и возвращаете результат сообщением с ролью tool и тем же tool_call_id.

Формат Anthropic​

Тот же сценарий через /v1/messages:

curl https://aipomogator.ru/go/v1/messages \
-H "Authorization: Bearer $AIPOMOGATOR_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "openrouter/anthropic/claude-opus-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Какая погода в Москве?"}],
"tools": [{
"name": "get_weather",
"description": "Возвращает погоду в городе",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}]
}'

Ответ содержит блок tool_use и stop_reason: "tool_use":

{
"content": [{"type": "tool_use", "id": "toolu_01", "name": "get_weather", "input": {"city": "Moscow"}}],
"stop_reason": "tool_use"
}

Оба формата работают через один и тот же ключ. Потоковая отдача поддерживается в обоих.

Управление выбором​

  • tool_choice: "auto" — модель решает сама (по умолчанию).
  • tool_choice: "none" — запретить вызовы, отвечать текстом.
  • tool_choice: {"type": "function", "function": {"name": "get_weather"}} — заставить вызвать конкретную функцию.
  • parallel_tool_calls: false — запретить несколько вызовов за один ход.

Какие модели умеют​

В каталоге у модели стоит метка «Инструменты»; на странице Тарифы по ней работает фильтр. Через API:

curl -s https://aipomogator.ru/api/pricing \
| jq '[.data[] | select(.tags | test("tools")) | .model_name] | length'

На 26 июля 2026 года вызов инструментов поддерживают 242 модели каталога.

Если передать tools модели без поддержки, запрос не упадёт — модель просто ответит текстом. Как получить явную ошибку вместо этого, описано в разделе Выбор провайдера.

Что дальше​