毕业生职位分类案例研究
Clavié 等人 (2023) (在新标签页中打开)提供了一个关于 Prompt 工程应用于生产系统中中等规模文本分类用例的案例研究。他们以判断一个职位是否是适合应届毕业生的真正“入门级职位”为任务,评估了一系列 Prompt 工程技术,并报告了使用 GPT-3.5 (gpt-3.5-turbo
) 的结果。
该研究表明,LLMs 的表现优于所有其他测试的模型,包括 DeBERTa-V3 这一非常强大的基线模型。gpt-3.5-turbo
在所有关键指标上也明显优于旧的 GPT-3 变体,但它需要额外的输出解析,因为它遵循模板的能力似乎不如其他变体。
他们的 Prompt 工程方法的关键发现是
- 对于这类不需要专业知识的任务,Few-shot CoT prompting 在所有实验中的表现都逊于 Zero-shot prompting。
- Prompt 对引发正确推理的影响巨大。简单地要求模型对给定职位进行分类,其 F1 得分为 65.6,而经过 Prompt 工程优化的模型则达到了 91.7 的 F1 得分。
- 试图强制模型遵循特定模板会降低所有情况下的性能(在 GPT-4 的早期测试中这种行为消失了,这些测试晚于该论文)。
- 许多微小的修改对性能产生显著影响。
- 下表显示了所有测试的修改。
- 正确给出指令并重复关键点似乎是最大的性能驱动因素。
- 像给模型一个(人类)名字并在对话中以此称呼它这样简单的事情,就能将 F1 得分提高 0.6 分。
测试的 Prompt 修改
缩写名称 | 描述 |
---|---|
基线 | 提供职位招聘信息,询问是否适合应届毕业生。 |
CoT | 在查询前给出一些准确分类的示例。 |
Zero-CoT | 要求模型在给出答案前进行逐步推理。 |
rawinst | 通过添加到用户消息中,给出关于其角色和任务的指令。 |
sysinst | 作为系统消息,给出关于其角色和任务的指令。 |
bothinst | 将指令拆分,角色作为系统消息,任务作为用户消息。 |
mock | 通过模拟一段模型确认接收指令的对话,给出任务指令。 |
reit | 通过重复加强指令中的关键要素。 |
strict | 要求模型严格遵循给定模板回答。 |
loose | 要求仅按照给定模板给出最终答案。 |
right | 要求模型得出正确结论。 |
info | 提供额外信息以解决常见的推理失败。 |
name | 给模型起一个名字,以便在对话中称呼它。 |
pos | 在查询模型前向其提供积极反馈。 |
所有 Prompt 修改的性能影响
精确率 | 召回率 | F1 | 模板遵循度 | |
---|---|---|---|---|
基线 | 61.2 | 70.6 | 65.6 | 79% |
CoT | 72.6 | 85.1 | 78.4 | 87% |
Zero-CoT | 75.5 | 88.3 | 81.4 | 65% |
+rawinst | 80 | 92.4 | 85.8 | 68% |
+sysinst | 77.7 | 90.9 | 83.8 | 69% |
+bothinst | 81.9 | 93.9 | 87.5 | 71% |
+bothinst+mock | 83.3 | 95.1 | 88.8 | 74% |
+bothinst+mock+reit | 83.8 | 95.5 | 89.3 | 75% |
+bothinst+mock+reit+strict | 79.9 | 93.7 | 86.3 | 98% |
+bothinst+mock+reit+loose | 80.5 | 94.8 | 87.1 | 95% |
+bothinst+mock+reit+right | 84 | 95.9 | 89.6 | 77% |
+bothinst+mock+reit+right+info | 84.9 | 96.5 | 90.3 | 77% |
+bothinst+mock+reit+right+info+name | 85.7 | 96.8 | 90.9 | 79% |
+bothinst+mock+reit+right+info+name+pos | 86.9 | 97 | 91.7 | 81% |
模板遵循度指的是模型按照期望格式回答的频率。