在与语言模型(LLM)的交流中,明确指导(告诉它做什么)往往比单纯指出禁止行为(告诉它不做什么)更加有效。
这种方法的优点在于能够更直接、更精确地引导模型的回答方向,减少模型需要考虑的可能性范围,从而提高获取期望答案的几率。
OpenAI 的官方文档
https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api 对 prompt 的最佳实践的第七点就是这条:
Instead of just saying what not to do,
say what to do instead
与其说不该做什么,不如说该做什么
这篇最佳实践中给出对话示例:
Less effective 效果差 ❌:
The following is a conversation between an Agent and a Customer. DO NOT ASK USERNAME OR PASSWORD. DO NOT REPEAT.
Customer: I can’t log in to my account.
Agent:
以下是 Agent 与 Customer 之间的对话。
不要询问用户名或密码。 不要重复。
Customer:我无法登录我的帐户。
Agent:
Better 效果好 ✅:
The following is a conversation between an Agent and a Customer.
The agent will attempt to diagnose the problem and suggest a solution, whilst refraining from asking any questions related to PII.
Instead of asking for PII, such as username or password, refer the user to the help article www.samplewebsite.com/help/faqCustomer: I can’t log in to my account.
Agent:
以下是 Agent 与 Customer 之间的对话。
Agent 将尝试诊断问题并提出解决方案,同时避免询问任何与 PII 相关的问题。
不要询问 PII(例如用户名或密码),而是让用户参阅帮助文章 www.samplewebsite.com/help/faq
Customer:我无法登录我的帐户。
Agent:
如何理解
想象一下,你正在试图指导一个朋友做蛋糕,但你只告诉他们不要做的事情,比如“不要把它烤焦”或“不要忘记加糖”。这样的指导留下了许多可能性,你的朋友可能会因为不清楚应该做什么而感到困惑。相反,如果你提供明确的指示,比如“按照食谱把材料混合在一起,然后在180°C下烤25分钟”,你的朋友就有了明确的行动方向,更有可能成功做出蛋糕。
我们再看一个逻辑化的解释:
初始可能性集合:
假设一个语言模型在回答问题时面临上万种可能的回答。
排除指令的效果:
当用户指示模型“不要做XXX”,意味着从这一万种可能性中排除与“XXX”相关的10种可能性。
因此,剩余的可能性变为9990种,模型下一次的回答将从这些剩余的可能性中选择。
指定指令的效果:
当用户指示模型“要做YYY”,模型将专注于与“YYY”直接相关的10种可能性。
这意味着,模型下一次的回答将基于这10种精确匹配的可能性进行选择。
比较效果:
在排除指令的情况下,模型试图从9990种可能性中找到最合适的回答,这可能导致回答的方向不够集中,因为它仍然需要从一个广泛的选项池中选择。
在指定指令的情况下,模型的选择范围被明确限定在10种可能性内,这使得模型能够更加集中精力提供与用户需求直接相关的回答。
结论:
提供指定指令(即告诉模型“要做YYY”)比提供排除指令(即告诉模型“不要做XXX”)更有可能得到用户期望的回答,因为它让模型的回答范围更加集中和精确。
一些案例
不推荐的做法
用户:我正在学习Python,不要给我任何复杂的代码示例。
这种提示不清楚指出用户实际需要什么,留下了太多解释的可能性,如简单代码示例、理论解释,或者甚至是非编程的内容。
推荐的做法
用户:请给我一个简单的Python示例,演示如何打开文件。
这个提示非常明确,指导模型提供一个简单的Python代码示例,关于打开文件的操作。模型现在有一个清晰的方向,知道应该提供什么样的回答,减少了其他不相关回答的可能性。
通过提供具体而正面的指令,你有效地缩小了模型考虑的范围,从而使得回答更加符合你的期待。这种方法不仅提高了交流的效率,还有助于避免可能的误解或不相关的回答。
总结
通过明确指导语言模型做什么,而非限制它不做什么,我们能够大幅提升交流的效果,确保得到更准确和相关的回答。