Function Call 的多轮对话要怎么处理?为什么它是最难的部分?

https://mp.weixin.qq.com/s/HJXyiX1Di8GHuubnP8Mp8w

在 Function Call 微调中,多轮对话是核心难点。我把业务拆成多个工作流,每个工作流根据变量来决定是否需要追问参数。

追问完成后,再进入工具链式调用,工具结果可能触发下一轮调用,最终在所有工具完成后统一生成结果。

为了让模型真正学会流程,使用沙盒方式构建数据

  1. 根据标签选择工作流
  2. 根据变量决定是否需要追问
  3. 自动构造反问句
  4. 用户回答由模板生成
  5. 工具链由代码模拟
  6. 工具返回由 mock 数据生成
  7. 最后用 base 模型重写自然语言

通过用户画像、query 模板、工具返回扰动、多轮追问模板等方式,为每个分支生成足够数量的数据,并保证所有分支场景都有覆盖。

最终模型可以:需要追问时追问,参数齐全时调用工具,工具链顺序正确,工具为空时 fallback,并且能保持多轮对话的一致性与连贯性。