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

Documentation Index

Fetch the complete documentation index at: https://speshu.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

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 для валидации. Обрабатывайте ошибки Если функция завершилась с ошибкой, верните понятное описание ошибки модели. Ограничивайте количество функций Большое количество функций усложняет выбор для модели. Группируйте связанные операции.