Сравнение
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 и получите всё распределение.