用AI大模型优化工作流一年后,分享14点体会。
2025年5月9日
过去一年,我一直在探索和优化大模型的工作流,虽然不是持续不断地进行,但积累了一些非常有价值的经验和结论。
通过不断调试,我发现了一些值得注意的有效方法、常见的误区,以及如何更高效地利用LLM。
今天,分享给大家,希望对大家在处理类似任务时有所启发。
1. 任务拆解与提示链式处理
将每个任务拆解成最小的步骤并进行提示链式处理,效果远优于仅使用单一的CoT提示。将CoT的每一步转化为独立的提示,并逐步检查和清理输出,可以减少错误。
使用XML标签来构建系统提示、提示等,效果最好(个人认为比JSON结构更好,但每个人的体验可能不同)。
2. LLM的正确使用方法
你必须提醒LLM,它的唯一任务是作为语义解析器,理解并转化输入数据,而不是将其自身“知识”引入到输出中。
NLTK、SpaCY、FlairNLP等工具是独立验证LLM输出的好方法(例如:检查LLM输出是否符合你要求的词性标注等)。这些库的优点是快速且可靠。
对于任务较小的场景,现代BERT分类器与LLM差不多。如果任务较为集中、明确,经过微调的BERT式分类器通常优于LLM。
32B模型足够可靠,适合大多数任务,前提是任务结构合理。
3. LLM的局限性与挑战
LLM作为判断者和LLM置信度评分极其不可靠,尤其是没有明确“基础”来说明评分如何得出时。基于模糊参数(如“有用性”)进行评分是无效的——例如,LLM常常将“有用性”与“专业语气”以及“回答长度”混淆。评分必须基于多个示例,或需要微调模型。
在Agentic循环中,最难的是设定退出条件——让LLM自己决定是否退出往往极为不可靠(原因与LLM作为判断者的问题相同)。
超过4k tokens(输入上下文窗口)时,性能通常会下降……这一点通常只有在经过数千次迭代后才会显现。如果你的错误容忍度较低,即使5%的失败率也不可接受。将所有提示控制在4k tokens以内,有助于减少该问题。
4. 微调与数据集构建
长期计划始终是微调一切。从一个大型API模型和少量示例开始,持续调整。
工作流一旦能够正常运作,考虑为一些任务创建微调数据集,这样你可以转向更小的本地LLM或BERT模型。创建平衡的数据集并不容易,但却至关重要。
在创建微调数据集时,应该通过建立分类系统/正交分类法来使数据集平衡,从而确保任务的全面覆盖。可以使用MECE框架。