Перейти к основному содержанию
Tool Calling позволяет AI моделям вызывать определённые вами функции для получения данных или выполнения действий.
Поддержка tool calling зависит от модели. Проверяйте возможности в каталоге моделей.

Что такое Tool Calling?

Tool Calling (вызов функций) — это механизм, позволяющий модели:
  1. Понять, когда нужно вызвать функцию
  2. Определить, какую функцию вызвать
  3. Извлечь параметры из запроса пользователя
  4. Вернуть структурированный ответ для вызова

Сценарии использования

  • Получение данных: Запрос актуальной информации из внешних источников
  • Выполнение действий: Отправка email, создание задач, бронирование
  • Интеграции: Подключение к CRM, ERP, базам данных
  • Вычисления: Сложные расчёты, которые модель не может выполнить

Как это работает

1

Определите функции

Опишите доступные функции с параметрами в формате JSON Schema
2

Отправьте запрос

Передайте описание функций вместе с сообщением пользователя
3

Получите вызов

Модель вернёт название функции и параметры для вызова
4

Выполните функцию

Вызовите функцию в своём коде и верните результат модели
5

Получите финальный ответ

Модель использует результат для формирования ответа пользователю

Пример использования

1. Определение функций

const tools = [
  {
    type: 'function',
    function: {
      name: 'get_weather',
      description: 'Получить текущую погоду в указанном городе',
      parameters: {
        type: 'object',
        properties: {
          city: {
            type: 'string',
            description: 'Название города, например "Москва"'
          },
          units: {
            type: 'string',
            enum: ['celsius', 'fahrenheit'],
            description: 'Единицы измерения температуры'
          }
        },
        required: ['city']
      }
    }
  }
];

2. Отправка запроса с функциями

import OpenAI from 'openai';

const openai = new OpenAI({
  baseURL: 'https://speshu.ai/api/v1',
  apiKey: '<SPESHU_AI_API_KEY>'
});

const completion = await openai.chat.completions.create({
  model: 'openai/gpt-5.5',
  messages: [
    { role: 'user', content: 'Какая погода в Москве?' }
  ],
  tools: tools,
  tool_choice: 'auto'
});

// Проверяем, запросила ли модель вызов функции
if (completion.choices[0].message.tool_calls) {
  const toolCall = completion.choices[0].message.tool_calls[0];
  console.log('Функция:', toolCall.function.name);
  console.log('Параметры:', toolCall.function.arguments);
}

3. Обработка вызова и отправка результата

// Получаем вызов функции от модели
const toolCall = completion.choices[0].message.tool_calls[0];
const args = JSON.parse(toolCall.function.arguments);

// Выполняем функцию (ваша реализация)
const weatherData = await getWeather(args.city, args.units);

// Отправляем результат обратно модели
const finalCompletion = await openai.chat.completions.create({
  model: 'openai/gpt-5.5',
  messages: [
    { role: 'user', content: 'Какая погода в Москве?' },
    completion.choices[0].message,
    {
      role: 'tool',
      tool_call_id: toolCall.id,
      content: JSON.stringify(weatherData)
    }
  ],
  tools: tools
});

Параметры tool_choice

ЗначениеОписание
autoМодель решает, вызывать ли функцию
requiredМодель обязательно вызовет одну из функций
noneМодель не будет вызывать функции
{"type": "function", "function": {"name": "..."}}Вызвать конкретную функцию

Параллельные вызовы

Модель может запросить несколько функций одновременно:
{
  "tool_calls": [
    {
      "id": "call_1",
      "function": { "name": "get_weather", "arguments": "{\"city\": \"Москва\"}" }
    },
    {
      "id": "call_2",
      "function": { "name": "get_weather", "arguments": "{\"city\": \"Санкт-Петербург\"}" }
    }
  ]
}

Советы и лучшие практики

Пишите понятные описания Чем точнее описание функции и параметров, тем лучше модель понимает, когда её использовать. Используйте enum для ограниченных значений Если параметр имеет фиксированный набор значений, используйте enum для валидации. Обрабатывайте ошибки Если функция завершилась с ошибкой, верните понятное описание ошибки модели. Ограничивайте количество функций Большое количество функций усложняет выбор для модели. Группируйте связанные операции.