Function Call 的多轮对话要怎么处理?为什么它是最难的部分?
Function Call 的多轮对话要怎么处理?为什么它是最难的部分?
https://mp.weixin.qq.com/s/HJXyiX1Di8GHuubnP8Mp8w
在 Function Call 微调中,多轮对话是核心难点。我把业务拆成多个工作流,每个工作流根据变量来决定是否需要追问参数。
追问完成后,再进入工具链式调用,工具结果可能触发下一轮调用,最终在所有工具完成后统一生成结果。
为了让模型真正学会流程,使用沙盒方式构建数据:
- 根据标签选择工作流
- 根据变量决定是否需要追问
- 自动构造反问句
- 用户回答由模板生成
- 工具链由代码模拟
- 工具返回由 mock 数据生成
- 最后用 base 模型重写自然语言
通过用户画像、query 模板、工具返回扰动、多轮追问模板等方式,为每个分支生成足够数量的数据,并保证所有分支场景都有覆盖。
最终模型可以:需要追问时追问,参数齐全时调用工具,工具链顺序正确,工具为空时 fallback,并且能保持多轮对话的一致性与连贯性。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Roger-Lv's space!
评论




