五厂面经真题集阿里巴巴面经高频阿里真题多轮对话工具调用速答 · 约 5 分钟更新 2026-09-29

多轮对话的训练数据怎么表示角色、状态、工具调用和最终答案?

一句话结论

把多轮对话整理成带角色的消息序列,把工具调用、工具返回和状态变化都插入上下文,只对 assistant 消息计算损失。

先这样答

多轮对话的训练数据要表示成带角色的消息序列,并把工具调用、工具返回和状态变化都放进序列。每条消息都标明角色。角色包括 system、user、assistant 和 tool。最终答案也作为 assistant 消息放在序列中。

工具调用和工具返回要拆成独立消息。模型先输出 assistant 的工具调用消息,再接入 tool 的返回消息。工具返回不参与损失计算,但要保留在上下文里。这样模型训练时能看到工具结果,并根据结果继续生成回答。

记忆更新和任务进度等状态变化也要进入消息序列。模型需要从前面的消息中跟踪状态,再处理后续问题。训练多轮数据时,只对 assistant 轮计算损失,system、user 和 tool 消息不计算损失。还要专门构造包含指代和省略的难例,检查模型能否结合前文理解当前表达。

面试官会怎么追问

  • 「为什么工具返回要放进上下文,却不参与损失计算?」 工具返回是模型后续回答需要参考的信息,所以必须放进上下文。训练目标只计算 assistant 轮,工具返回本身不作为模型要生成的内容。

  • 「工具调用在数据里应该怎么放?」 工具调用要作为独立消息插入消息序列,并标明对应角色。工具返回也要作为独立消息插入,之后模型再根据返回结果生成 assistant 消息。

  • 「多轮对话里的状态变化怎么训练?」 记忆更新和任务进度要写进消息序列。这样模型能看到状态如何变化,并学习跟踪状态。指代和省略还要专门构造难例。

回答的坑

  • 只保留用户问题和最终答案,会丢掉工具结果与状态变化,模型无法学习完整的多轮过程。

  • 把 tool 返回也算进损失,会把上下文信息和模型需要生成的 assistant 内容混在一起。

—— 本题完 ——