2026年 openlux function calling 怎么用:从工具定义到调用返回的实操步骤
2026年 openlux function calling 怎么用:从工具定义到调用返回的实操步骤
第一次接 openlux function calling,很多人卡在同一个地方:请求发出去了,模型也返回了,但接下来不知道该拿这串返回内容做什么。其实整条链路只有五个环节,理清顺序就不会乱。
本文按真实调用顺序走一遍:先定义工具,再发起请求,然后读取返回、本地执行、回传结果,最后让模型给出自然语言答复。中间会说明每一步容易出错的配置项,以及怎么确认自己接的是对的。
function calling 到底解决了什么问题
普通对话调用只能返回文本。如果你的应用需要查天气、查订单、写数据库、调内部接口,就只能让模型「告诉用户自己去查」,体验很差。
function calling 的思路是:模型不直接执行任何操作,它只负责判断「现在该调用哪个工具、参数填什么」,把结果以结构化数据返回给你的程序;真正的执行由你的后端完成,执行完再把结果交回模型,由模型组织成一句人话。这样做的好处是权限始终留在你自己的服务里,模型只做决策不做动作。
第一步:把工具定义写清楚
工具定义本质上是一份给模型看的接口说明,通常包含名称、用途描述和参数结构。名称用英文动词短语,描述写清楚「什么时候用」和「什么时候不要用」,比写一堆技术细节更有帮助。
tools = [
{
'name': 'get_order_status',
'description': '查询订单当前状态,需要用户提供订单号时使用',
'parameters': {
'type': 'object',
'properties': {
'order_id': {'type': 'string', 'description': '订单编号'}
},
'required': ['order_id']
}
}
]
参数描述越具体,模型填错的情况越少。必填项一定要在 required 里列出来,否则模型可能只填一半就返回。
第二步:发起请求并附带工具定义
在你的对话请求里加上 tools 字段,正常发送用户消息即可。此时模型有两条出路:直接回答,或者返回一个或多个待执行的工具调用。
需要注意的是,部分模型支持一次返回多个工具调用(并行调用),你的处理逻辑要能接住数组而不是只取第一个元素,否则并行调用会被静默丢掉。
第三步:读懂返回结构
当模型决定调用工具时,返回的助手消息里会带一个工具调用列表,通常包含一个调用 ID、工具名称和参数字符串。这个参数字符串需要你自己解析成对象,不要直接当字符串拼接进 SQL 或命令行。
如果返回里没有工具调用,只是普通文本,说明模型认为不需要工具,这时直接把它输出给用户即可。
第四步:在本地执行真正的函数
这一步与模型无关,完全在你的服务里完成。建议做三件事:
- 参数校验。检查必填字段是否存在、类型是否正确、数值是否在合理范围,校验失败就返回明确的错误信息给模型。
- 权限与幂等。涉及写操作的接口要做鉴权,并设计幂等键,避免模型重复调用造成重复下单或重复扣费。
- 超时与降级。给工具执行设置超时时间,超时后返回「暂时不可用」,让模型据此调整回答,而不是让整个请求挂住。
第五步:把结果回传,让模型收口
执行完成后,把结果以工具角色消息追加到对话历史里,并带上对应的调用 ID,然后再发一次请求。模型会结合工具返回内容,生成最终的自然语言回复。
如果模型在收到结果后又发起新的工具调用,说明它还需要更多信息,这时重复第三步到第五步即可,但要设置最大循环次数,避免无限往返。
配置检查表
接入 openlux function calling 时,下面四项是最容易出问题的地方,建议按顺序逐条确认。
| 配置项 | 作用 | 检查方法 |
|---|---|---|
| Base URL | 决定请求发往哪个接口地址 | 与控制台文档中给出的地址逐字比对,注意结尾是否带路径 |
| 模型名称 | 决定是否支持工具调用能力 | 以控制台模型列表中显示的可用名称为准,不要沿用旧文档名称 |
| tools 字段结构 | 告诉模型有哪些工具可用 | 先用一个无副作用的查询类工具跑通,确认能收到调用返回 |
| 回传消息格式 | 让模型知道工具执行结果 | 确认角色、调用 ID 与结果字段一一对应,缺少 ID 会导致模型无法关联 |
四类常见错误与排查方向
模型从不调用工具
通常是工具描述太笼统,或者用户问题本身不需要工具。改进方式是让描述里出现明确的触发场景词,并在系统提示中说明「涉及实时数据时必须调用工具」。
参数解析失败
参数以字符串形式返回时,直接解析可能报错。建议先做容错解析,解析失败就把错误信息回传给模型,让它重新组织参数,通常一次就能修好。
重复调用同一个工具
往往是上一次的回传结果为空或格式不对,模型误以为没执行成功。检查回传消息是否被正确追加到对话历史中。
循环停不下来
给工具调用链设置最大轮次,并在达到上限时返回一个兜底回复,不要让请求一直转下去。
接入环境怎么选
如果你只在单一模型上调试 function calling,直接对接官方接口就够用。但如果你的业务需要按任务切换不同模型、或者想让团队共用一套 Key 和用量视图,那么用 千聚AI中转站 这类聚合平台会更省事:一个 Base URL 接入多种兼容协议,Key、余额和模型选择在控制台统一管理,切换到另一个模型时只需改模型名称,业务代码结构基本不用动。
需要提醒的是,不同模型对工具定义格式、并行调用支持和参数解析宽严程度的处理并不完全一致。迁移或切换时,建议先用一个只读的查询类工具做回归测试,确认返回结构符合预期后再放开写操作。具体可用的模型名称与计费方式,以 千聚官网 控制台和文档页面显示的信息为准。
把 function calling 理解成一份「决策与执行分离」的协议:模型只负责选工具和填参数,真正的动作永远在你自己的服务里完成。守住这条边界,权限、日志和回滚都好办。
跑通之后可以做什么
最小闭环验证成功后,可以逐步扩展到多工具组合、带上下文的连续调用,以及把工具执行结果写入日志便于回溯。第一步永远是最简单的那个:一个只读查询工具,一次成功的调用返回,一条模型基于真实数据给出的回答。
如果你准备把工具调用接进正式项目,可以先在千聚注册账号,查看当前可用的模型与接入文档,获取 API Key 后用一个只读工具完成首次联调,再逐步放开写操作。