最近在尝试用MCP协议对接一个内部工具,基于LLaMA做了几轮微调,想让模型学会调用特定API。训练数据里函数名都是固定的,比如search_user,但模型推理时经常自己改成searchUser或find_user,导致工具调用失败。检查过tokenizer,没加额外词汇,也没改temperature。有同学遇到过类似问题吗?是数据增强不够,还是微调时函数名容易被“泛化”掉?求指点,多谢!
最近在尝试用MCP协议对接一个内部工具,基于LLaMA做了几轮微调,想让模型学会调用特定API。训练数据里函数名都是固定的,比如search_user,但模型推理时经常自己改成searchUser或find_user,导致工具调用失败。检查过tokenizer,没加额外词汇,也没改temperature。有同学遇到过类似问题吗?是数据增强不够,还是微调时函数名容易被“泛化”掉?求指点,多谢!
遇到过类似的情况,我这边是加了个后处理校验逻辑,强制把模型输出的函数名映射回训练集里的标准写法,算是临时救急。不过根源感觉还是微调时函数名被当成语义特征而不是精确指令来学了,试试在训练数据里混入一些故意写错的函数名并标注为错误,让模型学会精确匹配。另外可以检查下是不是tokenizer把下划线拆成了多个token,导致模型对完整函数名的记忆变弱了。