我给 Agent 的提示词模板是 f”Use the {SKILL} skill to answer the user’s question in English: {task.question}”
其中 task.question 是全英文的,而 SKILL 虽然主要是中文,但也有应对英文提问时的回答策略及输出模板。而 SKILL 指向的本地参考信息主要是中文。
跑英文测试用例的时候发现,Agent 会有约 14% 的概率会错误使用中文来答复,至于思考过程是中文还是英文都无所谓。
出现这种错误我其实还是有些意外,“本以为”用英文提示词+给出英文提问时的策略就能压住。这种或许可以归为“不遵循指令”?
发现问题后我第一想法是得加强 SKILL 和提示词模板,让 Agent 能更加注意最终回复的语言。过我也没有着急修改,而是挑出这些错误的会话,追问了一句“你刚才为什么要使用中文/英文来回答?”
结果也是蛮有意思的。有一类 Agent 嘴硬说自己没有用错语言,明明上文就是用中文回复非要说自己用的就是英文。有一类是说本来打算用中文的,但多次调用工具和思考后慢慢忘了。有一类是承认自己用错了语言,提供了“误解”的来源。
有了这些信息后再修改了一版 SKILL 和提示词模板,重测能达到(9/10)的准确率。剩下的案例却比较奇怪,前面用英文是正确的,最后一段又临时改成了中文。
接下来再微调几版看看,然后加入一个兜底逻辑,类似如果检测到用错了语言就自动追问一句“请说中文/请说英文”看看。