Function撰写最佳实践
本文将说明如何撰写号Function Call来提升Function Call命中和参数提取的准确率
一、Function Call的作用
Function Call,就是让 AI「学会调用外部工具」。大模型不直接干活,只输出一段固定格式的 JSON 消息,告诉业务要干什么。
例:
用户:帮我烤30分钟鸡翅
模型:[F]:{"session_id":"1778240977638","content":"{"function_name":"control_device","parameter_list":[{"type":"鸡翅"},{"time":30}]}","query":"帮我烤30分钟鸡翅"}
二、撰写指南
Function Call 有以下填写/选择项目
- Function名称
- Function描述
- Function例句
- 请求地址
- 执行前确认
- 函数参数
通用规则
- Function名称、描述非简单记录管理Function,正确规范的名称和Function描述可提升Function准确率
- 句式通顺
- 语言简洁凝练,清晰易懂
- Function数量建议不超过20个,若Function较多,需适当合并;Function数量较小的情况下,可把每一类意图单独写为一个function,提升准确率
1、Function名称
注意事项:需使用动宾结构
例:control_device、adjust_volume
2、Function描述
注意事项:需清晰概括Function作用
例:Function用作控制空气炸锅,其中设置了温度、时间、菜谱、预约时间4个参数,描述为
控制空气炸锅,包括设置温度、时间、菜谱和预约时间
3、Function例句
注意事项:
- 做高度泛化、句式不重复
- 若实际测试中发现意图识别不到,则适当添加例句,提高泛化程度,例句数量控制在10句以内
例句不冗杂重复:例:把音量调大、把音量调大一点、请把音量调大、把音量调高---->归纳为:音量调大
例句泛化:音量调大、声音开大些、帮我把声音调、大点声
*实际应用场景中,建议输入query为意图清晰完整的句子。使用简短词汇,易出现短语音ASR识别偏差,意图不清晰的问题,导致调用Function出错
❌:”咖啡“,”切换成儿童”
✅:”煮咖啡“,“切换成儿童模式”
4、Function参数
注意事项:function参数为非必填项,参数按需配置。一些function无需配置参数,仅配例句就可以,如取消预约,关机。
- 参数名
- 参数类型:按需选择
- 是否必填:建议设置为「非必填」。如为必填参数,未补齐时会持续提醒补齐
- 参数描述:简洁凝练,清晰表达
String枚举值例子:
例1:菜谱类型,取值为[红薯、蛋糕、鸡翅]的一种
例2:设备控制类型,取值为[打开、关闭、向上开、向下开、向左开、向右开]的一种
5、其他辅助配置项
- 执行前确认:开启执行确认后,命中 Function 时,会向用户确认命中的函数及参数提取结果是否正确

开启后的例子:
用户:“给我订一张明天下午六点半上海去北京的机票”
模型:“为您订一下2026年5月9日16:00,出发地为上海,目的地为北京的机票“
用户:”确认“
模型:[F]:{"session_id":"1778240977638","content":"{"function_name":"book_flight","parameter_list":[{"date":"2026-05-09"},{"time":"16:00"},{"departure":"上海"},{"destination":"北京"}]}","query":"给我订一张明天下午六点半上海去北京的机票"}
6、更多例子,可参考
控制台-意图设置-Function配置-推荐Function中的模版

评价此篇文章
