ДокументацияВызов инструментов
Вызов инструментов
Tool calling позволяет модели вызывать ваши функции: модель возвращает не текст, а структурированный вызов tool_calls с именем функции и аргументами. Это основа coding-агентов и любых сценариев, где модель должна взаимодействовать с внешним миром.
Zenvy поддерживает OpenAI-compatible tool calling: tools, tool_choice, parallel_tool_calls. Поля прокидываются в upstream-провайдер без изменений.
Какие модели поддерживают tools
Смотрите features.tools в Модели и баланс или колонку возможностей на странице моделей.
Описание инструмента
Каждый инструмент описывается JSON-схемой:
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить текущую погоду в городе",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Название города, например: Москва"
}
},
"required": ["city"]
}
}
}Полный цикл
- Отправьте запрос со списком
tools - Модель вернёт
tool_callsс именем функции и аргументами - Выполните функцию на своей стороне
- Отправьте результат сообщением с
role: "tool" - Модель сформирует финальный ответ
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);
}Параметры
| Параметр | Тип | Описание |
|---|---|---|
tools | array | Список доступных инструментов |
tool_choice | string или object | auto (по умолчанию), none, required или конкретная функция |
parallel_tool_calls | boolean | Разрешить модели вызывать несколько инструментов за один ход |
Ответ с tool_calls
{
"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"
}
]
}Tool calling — это то, на чём работают Cursor, OpenCode и Codex CLI. Если агент «не видит файлы» или «не выполняет команды», первым делом проверьте, что выбранная модель поддерживает tools.
Подробнее о формате запросов: Генерация текста.