Сравнение

OpenAI Decisions API vs Function Calling

Function calling позволяет модели решить вызвать инструмент и собрать его аргументы. Паттерн решений за OpenAI Decisions API — и эндпоинт decisions-1 этого сайта — просто отвечает, какой из конечных вариантов применим, с вероятностью для каждого. Если задача модели — выбрать ветку, один из вариантов требует куда меньше обвязки.

Обновлено

Реальная разница

С function calling вы объявляете инструменты, отправляете диалог, получаете payload tool_calls, валидируете аргументы, выполняете функцию и возвращаете результат. Это цикл, спроектированный для действий.

Вызов решения — один раундтрип: состояние внутрь, ответ наружу. Ни реестра инструментов, ни схемы аргументов для валидации, ни второго вызова ради пригодной метки. Ответ уже содержит победителя и вероятность для каждого варианта.

Путь function calling

Маршрутизация тикета через function calling — значит завернуть ответ в определение инструмента и парсить tool_calls. Работает — и это правильный инструмент, когда модель действительно должна производить аргументы для действия.

Function calling

// Function calling: the model decides to call a tool and
// builds its arguments. You parse tool_calls and execute it.
{
  "tools": [{
    "type": "function",
    "function": {
      "name": "route_ticket",
      "parameters": {
        "type": "object",
        "properties": {
          "team": { "enum": ["payments", "frontend", "account"] }
        }
      }
    }
  }]
}

Путь решения

Та же задача маршрутизации как вопрос choice: варианты названы в criteria, и ответ возвращается с победившей меткой, вероятностями по вариантам и значением уверенности — готов к порогам.

Запрос решения

// Decision endpoint: pick among finite answers and get a
// probability per option — no tool plumbing, no arg parsing.
{
  "model": "decisions-1",
  "state": "The page renders blank in Safari.",
  "questions": {
    "team": {
      "type": "choice",
      "instructions": "Which team should own this ticket?",
      "criteria": {
        "payments": "Checkout or billing.",
        "frontend": "Rendering or browser behavior.",
        "account": "Login or permissions."
      }
    }
  }
}

Когда что использовать

Используйте function calling, когда модель должна производить структурированные аргументы для действия — забронируй это, запроси то, заполни эти поля. Выход питает исполняемый код.

Используйте эндпоинт решений, когда выход — это вход действия: какая очередь, какая ветка, пропустить или задержать. Вы получаете распределение, а не только выбор, так что пограничные случаи можно отдать человеку, а не гадать.

Частые вопросы

Инструмент с enum-параметром — разве не то же самое?

Дух близок — но слой tool_calls всё равно нужно строить и парсить, а выбор модели не несёт вероятностей. Эндпоинт решений возвращает распределение — именно оно делает возможными пороги.

Можно ли выполнить действие после решения?

Да — мапьте победившую метку на свою функцию локально. Эндпоинт решений выбирает; ваш код исполняет. Поверхность модели остаётся минимальной.

Заменит ли Decisions API от OpenAI function calling?

Разные задачи. Function calling производит аргументы для инструментов, которые вы исполняете; decisions API выбирает из конечных ответов с вероятностями. Анонс 2026-09-29 описывает второе.

Без обвязки инструментов

Два бесплатных пробных решения для новых посетителей — задайте вопрос choice и получите всё распределение.