对比
OpenAI Decisions API vs Function Calling
Function calling 让模型决定调用某个工具并构造参数。OpenAI Decisions API 背后的决策模式——以及本站的 decisions-1 端点——只回答你的有限选项中哪一个适用,并给出每个选项的概率。如果模型的任务只是选一个分支,其中一种方式的管道工作要少得多。
更新于
实际差异
用 function calling 你要声明工具、发送对话、接收 tool_calls 载荷、校验参数、执行函数、再把结果喂回去。这是一个为“做事”设计的循环。
决策调用是一次往返:状态进、答案出。没有工具注册表、没有要校验的参数 schema、没有第二次调用才能拿到可用的标签。响应里已经包含胜出项和每个选项的概率。
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 层,而且模型的选择不附带概率。决策端点返回分布,这正是能做阈值判断的原因。
决策之后还能执行动作吗?
可以——在本地把胜出标签映射到你自己的函数。决策端点负责选,你的代码负责做。这样模型的接触面最小。
OpenAI 的 Decisions API 会取代 function calling 吗?
工作不同。Function calling 为你执行的工具产出参数;decisions API 在有限答案中选一个并给出概率。2026-09-29 的公告描述的是后者。
省掉工具管道
新访客一次免费试用决策——问一个 choice 问题,拿回整个分布。