Один ключ для всех AI-моделейСоздать аккаунтОплата в рублях, без VPN

ДокументацияВызов инструментов

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

Tool calling позволяет модели вызывать ваши функции: модель возвращает не текст, а структурированный вызов tool_calls с именем функции и аргументами. Это основа coding-агентов и любых сценариев, где модель должна взаимодействовать с внешним миром.

Zenvy поддерживает OpenAI-compatible tool calling: tools, tool_choice, parallel_tool_calls. Поля прокидываются в upstream-провайдер без изменений.

Какие модели поддерживают tools

Смотрите features.tools в Модели и баланс или колонку возможностей на странице моделей.

Описание инструмента

Каждый инструмент описывается JSON-схемой:

~/zenvy · json
{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "Получить текущую погоду в городе",
    "parameters": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string",
          "description": "Название города, например: Москва"
        }
      },
      "required": ["city"]
    }
  }
}

Полный цикл

  1. Отправьте запрос со списком tools
  2. Модель вернёт tool_calls с именем функции и аргументами
  3. Выполните функцию на своей стороне
  4. Отправьте результат сообщением с role: "tool"
  5. Модель сформирует финальный ответ
~/zenvy · JavaScript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.ZENVY_API_KEY,
  baseURL: "https://api.zenvy.su/v1"
});

const tools = [
  {
    type: "function",
    function: {
      name: "get_weather",
      description: "Получить текущую погоду в городе",
      parameters: {
        type: "object",
        properties: {
          city: { type: "string", description: "Название города" }
        },
        required: ["city"]
      }
    }
  }
];

const first = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Какая погода в Москве?" }],
  tools
});

const toolCall = first.choices[0].message.tool_calls?.[0];
if (toolCall) {
  const args = JSON.parse(toolCall.function.arguments);
  const weather = `В городе ${args.city} +21°C, ясно`; // ваша функция

  const second = await client.chat.completions.create({
    model: "gpt-4o",
    messages: [
      { role: "user", content: "Какая погода в Москве?" },
      first.choices[0].message,
      { role: "tool", tool_call_id: toolCall.id, content: weather }
    ],
    tools
  });

  console.log(second.choices[0].message.content);
}

Параметры

ПараметрТипОписание
toolsarrayСписок доступных инструментов
tool_choicestring или objectauto (по умолчанию), none, required или конкретная функция
parallel_tool_callsbooleanРазрешить модели вызывать несколько инструментов за один ход

Ответ с tool_calls

~/zenvy · json
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_abc123",
            "type": "function",
            "function": {
              "name": "get_weather",
              "arguments": "{\"city\": \"Москва\"}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ]
}
Coding-агенты

Tool calling — это то, на чём работают Cursor, OpenCode и Codex CLI. Если агент «не видит файлы» или «не выполняет команды», первым делом проверьте, что выбранная модель поддерживает tools.

Подробнее о формате запросов: Генерация текста.