这是 GPT 最佳实践的第四部分,给GPT时间思考,第三部分(任务拆分)在这里,更多部分在这里。
第四部分:给GPTs时间去“思考”
如果被问到17乘以28,你可能不会立刻知道答案,但是给予时间你仍然可以算出来。同样地,GPTs在试图立即回答问题时会犯更多的推理错误,而不是花时间去计算答案。在答案之前要求一系列的推理过程可以帮助GPTs更可靠地推理出正确的答案。
策略:
- 指导模型在急于得出结论之前先自己找出解决方案
- 使用内心独白或一系列查询来隐藏模型的推理过程
- 询问模型在之前的过程中是否遗漏了任何东西
策略:在急于得出结论之前,指导模型自行解决问题
有时,当我们明确指导模型在得出结论之前首先从基本原理推理时,我们会得到更好的结果。例如,假设我们想让一个模型评估一个学生解决数学问题的答案。最明显的方法是简单地询问模型学生的解决方案是否正确。
角色 (Role) | 对话 (Dialogue) |
---|---|
SYSTEM | Determine if the student’s solution is correct or not. 确定学生的解决方案是否正确。 |
USER | Problem Statement: I’m building a solar power installation and I need help working out the financials. – Land costs $100 / square foot – I can buy solar panels for $250 / square foot – I negotiated a contract for maintenance that will cost me a flat $100k per year, and an additional $10 / square foot What is the total cost for the first year of operations as a function of the number of square feet. 问题陈述:我正在建设一个太阳能设备,我需要帮助解决财务问题。 – 土地每平方英尺需要 $100 – 我可以购买每平方英尺 $250 的太阳能电池板 – 我谈判了一份合同,维护将每年花费我 $100k,以及每平方英尺的额外 $10 第一年的运营总成本作为平方英尺数的函数是多少。 Student’s Solution: Let x be the size of the installation in square feet. 1. Land cost: 100x 2. Solar panel cost: 250x 3. Maintenance cost: 100,000 + 100x Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000 学生的解决方案:让x表示装置的规模(平方英尺)。 1. 土地成本:100x 2. 太阳能电池板成本:250x 3. 维护成本:100,000 + 10x 总成本:100x + 250x + 100,000 + 100x = 450x + 100,000 |
ASSISTANT | The student’s solution is correct. 学生的解决方案是正确的。 |
但实际上,学生的解答是错误的!我们可以通过提示模型首先生成自己的解答,让模型成功地注意到这一点。
角色 (Role) | 对话 (Dialogue) |
---|---|
SYSTEM | First work out your own solution to the problem. Then compare your solution to the student’s solution and evaluate if the student’s solution is correct or not. Don’t decide if the student’s solution is correct until you have done the problem yourself. 首先,自己解决问题。然后,将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在你自己完成问题之前,不要判断学生的解决方案是否正确。 |
USER | Problem Statement: I’m building a solar power installation and I need help working out the financials. – Land costs $100 / square foot – I can buy solar panels for $250 / square foot – I negotiated a contract for maintenance that will cost me a flat $100k per year, and an additional $10 / square foot What is the total cost for the first year of operations as a function of the number of square feet. Student’s Solution: Let x be the size of the installation in square feet. 1. Land cost: 100x 2. Solar panel cost: 250x 3. Maintenance cost: 100,000 + 100x Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000 问题陈述:我正在建设一个太阳能设备,我需要帮助解决财务问题。 – 土地每平方英尺需要 $100 – 我可以购买每平方英尺 $250 的太阳能电池板 – 我谈判了一份合同,维护将每年花费我 $100k,以及每平方英尺的额外 $10 第一年的运营总成本作为平方英尺数的函数是多少。 学生的解决方案:让x表示装置的规模(平方英尺)。 1. 土地成本:100x 2. 太阳能电池板成本:250x 3. 维护成本:100,000 + 100x 总成本:100x + 250x + 100,000 + 100x = 450x + 100,000 |
ASSISTANT | Let x be the size of the installation in square feet. 1. Land cost: 100x 2. Solar panel cost: 250x 3. Maintenance cost: 100,000 + 10x Total cost: 100x + 250x + 100,000 + 10x = 360x + 100,000 The student’s solution is incorrect. They made an error in the maintenance cost calculation, using 100x instead of 10x. The correct total cost for the first year of operations is 360x + 100,000. 让x表示装置的规模(平方英尺)。 1. 土地成本:100x 2. 太阳能电池板成本:250x 3. 维护成本:100,000 + 10x 总成本:100x + 250x + 100,000 + 10x = 360x + 100,000 学生的解决方案是错误的。他们在维护成本计算中犯了错误,使用的是100x而不是10x。第一年运营的正确总成本是360x + 100,000。 |
策略:使用内心独白或一系列查询来隐藏模型的推理过程
前面的策略表明,模型在回答具体问题之前,有时候详细推理问题是很重要的。对于某些应用,模型用来得出最终答案的推理过程可能不适合与用户共享。例如,在辅导应用中,我们可能希望鼓励学生自己解决问题,但是模型关于学生解决方案的推理过程可能会揭示出答案。
内心独白是一种可以用来减轻这个问题的策略。内心独白的想法是指导模型将输出的一部分(这部分输出是打算对用户隐藏的)放入一个结构化的格式,使得解析它们变得容易。然后在向用户展示输出之前,解析输出,并且只有部分输出被显示出来。
角色 (Role) | 对话 |
---|---|
System | Follow these steps to answer the user queries. Step 1 – First work out your own solution to the problem. Don’t rely on the student’s solution since it may be incorrect. Enclose all your work for this step within triple quotes (“””). Step 2 – Compare your solution to the student’s solution and evaluate if the student’s solution is correct or not. Enclose all your work for this step within triple quotes (“””). Step 3 – If the student made a mistake, determine what hint you could give the student without giving away the answer. Enclose all your work for this step within triple quotes (“””). Step 4 – If the student made a mistake, provide the hint from the previous step to the student (outside of triple quotes). Instead of writing “Step 4 – …” write “Hint:”. 跟随以下步骤回答用户的问题。 Step 1 – 首先独立解决问题,不要依赖学生的解决方案,因为它可能是错误的。将此步骤中的所有工作都放在三重引号(”””)中。 Step 2 – 将您的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。将此步骤中的所有工作都放在三重引号(”””)中。 Step 3 – 如果学生犯了错误,确定可以给予学生何种提示而不泄露答案。将此步骤中的所有工作都放在三重引号(”””)中。 Step 4 – 如果学生犯了错误,将前一步的提示提供给学生(不要放在三重引号中)。不要写 “Step 4 – …”,而是写 “Hint:”。 |
User | Problem Statement: \ 问题陈述:<插入问题陈述> Student Solution: \ 学生解决方案:<插入学生解决方案> |
另外,这可以通过一系列查询来实现,其中除了最后一个查询外,所有其他查询的输出对最终用户是隐藏的。
首先,我们可以让模型自己解决问题。因为这个初始查询不需要学生的解答,所以可以省略。这还有额外的优点,那就是模型的解答不会受到学生尝试的解答的偏见影响。
角色 (Role) | 对话 (Dialogue) |
---|---|
USER | \<INSERT QUESTION> 插入问题 |
接下来,我们可以让模型使用所有可用的信息来评估学生的解答是否正确。
角色 (Role) | 对话 (Dialogue) |
---|---|
SYSTEM | Compare your solution to the student’s solution and evaluate if the student’s solution is correct or not. |
USER | Problem statement: “””\””” Your solution: “””\””” Student’s solution: “””””” |
最后,我们可以让模型使用它自己的分析,以一种有帮助的导师的角色构建回复。
角色 | 对话 (Dialogue) |
---|---|
SYSTEM | You are a math tutor. If the student made an error, offer a hint to the student in a way that does not reveal the answer. If the student did not make an error, simply offer them an encouraging comment. |
USER | Problem statement: “””\””” Your solution: “””\””” Student’s solution: “””\””” Analysis: “””\””” |
策略:询问模型在前几轮中是否遗漏了什么
假设我们正在使用一个模型来列出某个特定问题相关的来自源文件的摘录。在列出每一段摘录后,模型需要确定它应该开始写下一段,还是应该停止。如果源文档很大,模型常常会过早地停止,而未能列出所有相关的摘录。在这种情况下,通过用后续查询提示模型找出在前几轮中遗漏的摘录,通常可以获得更好的性能。
角色 | 对话 (Dialogue) |
---|---|
SYSTEM | You will be provided with a document delimited by triple quotes. Your task is to select excerpts which pertain to the following question: “What significant paradigm shifts have occurred in the history of artificial intelligence.” Ensure that excerpts contain all relevant context needed to interpret them – in other words don’t extract small snippets that are missing important context. Provide output in JSON format as follows: [{“excerpt”: “…”},…{“excerpt”: “…”}] 你将会被提供一个由三个引号界定的文档。你的任务是选择与以下问题相关的摘录:”人工智能历史上发生了哪些重大的范式转变。”确保摘录包含了解释它们所需的所有相关上下文 – 换句话说,不要提取缺少重要上下文的小片段。以以下的JSON格式提供输出:[{“摘录”: “…”},…{“摘录”: “…”}] |
USER | “””\””” “””<在此处插入文档>””” |
ASSISTANT | [{“excerpt”: “the model writes an excerpt here”},…{“excerpt”: “the model writes another excerpt here”}] [{“摘录”: “模型在此处写下一段摘录”},…{“摘录”: “模型在此处写下另一段摘录”}] |
USER | Are there more relevant excerpts? Take care not to repeat excerpts. Also ensure that excerpts contain all relevant context needed to interpret them – in other words don’t extract small snippets that are missing important context. 还有更多相关的摘录吗?注意不要重复摘录。还要确保摘录包含了解释它们所需的所有相关上下文 – 换句话说,不要提取缺少重要上下文的小片段。 |
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。