对比

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 问题,拿回整个分布。