如何矫正ChatGPT的错误输出?
如果模型匆忙地得出了错误的结论,您应该尝试重新构思查询,请求模型在提供最终答案之前进行一系列相关的推理。
换句话说,如果您给模型一个在短时间或用少量文字无法完成的任务,它可能会猜测错误,这种情况对人来说也是一样的。
如果您让某人在没有时间计算出答案的情况下完成复杂的数学问题,他们也可能会犯错误。
因此,在这些情况下,您可以指示模型花更多时间思考问题,这意味着它在任务上花费了更多的计算资源。
指定完成任务所需的步骤
接下来我们将通过给定一个复杂任务,给出完成该任务的一系列步骤,来展示这一策略的效果。
指令模板:
Text:
{文本内容}
"""
prompt_1 = f"""
"""
response = get_completion(prompt_1)
print("prompt 1:")
print(response)
首先我们描述了杰克和吉尔的故事,并给出一个指令。该指令是执行以下操作。
第一,用一句话概括三个反引号限定的文本;
第二,将摘要翻译成法语;
第三,在法语摘要中列出每个名称;
第四,输出包含以下键的 JSON 对象:法语摘要和名称数。然后我们要用换行符分隔答案;
指令示例:
Text = f"""
在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。
他们一边唱着欢乐的歌,一边往上爬,
然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。
虽然略有些摔伤,但他们还是回到了温馨的家中。
尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。
"""
prompt_1 = f"""
执行以下操作:
1-用一句话概括下面用三个反引号括起来的文本。
2-将摘要翻译成法语。
3-在法语摘要中列出每个人名。
4-输出一个 JSON 对象,其中包含以下键:French_summary,num_names。
请用换行符分隔您的答案。
ChatGPT示例:
上述输出仍然存在一定问题,例如,键“姓名”会被替换为法语,因此,我们给出一个更好的 Prompt,该 Prompt 指定了输出的格式:
指令示例:
prompt_2 = f"""
1-用一句话概括下面用<>括起来的文本。
2-将摘要翻译成英语。
3-在英语摘要中列出每个名称。
4-输出一个 JSON 对象,其中包含以下键:English_summary,num_names。
Text: <{在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。
他们一边唱着欢乐的歌,一边往上爬,
然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。
虽然略有些摔伤,但他们还是回到了温馨的家中。
尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。}>
"""
请使用以下格式:
文本:<要总结的文本>
摘要:<摘要>
翻译:<摘要的翻译>
名称:<英语摘要中的名称列表>
输出 JSON:<带有 English_summary 和 num_names 的 JSON>
ChatGPT示例:
指导模型在下结论之前找出自己的解法
有时候,在明确指导模型在做决策之前要思考解决方案时,我们会得到更好的结果,接下来我们会给出一个问题和一个学生的解答,要求模型判断解答是否正确。
指令示例:
prompt = f"""
判断学生的解决方案是否正确。
问题:
我正在建造一个太阳能发电站,需要帮助计算财务。
土地费用为 100美元/平方英尺
我可以以 250美元/平方英尺的价格购买太阳能电池板
我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元
作为平方英尺数的函数,首年运营的总费用是多少。
学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:
土地费用:100x
太阳能电池板费用:250x
维护费用:100,000美元+100x
总费用:100x+250x+100,000美元+100x=450x+100,000美元
"""
response = get_completion(prompt)
print(response)
ChatGPT示例:
但是注意,学生的解决方案实际上是错误的,我们可以通过指导模型先自行找出一个解法来解决这个问题,在接下来这个 Prompt 中,我们要求模型先自行解决这个问题,再根据自己的解法与学生的解法进行对比,从而判断学生的解法是否正确,同时,我们给定了输出的格式要求,通过明确步骤,让模型有更多时间思考,有时可以获得更准确的结果。
在这个例子中,学生的答案是错误的,但如果我们没有先让模型自己计算,那么可能会被误导以为学生是正确的。
指令示例:
prompt = f"""
请判断学生的解决方案是否正确,请通过如下步骤解决这个问题:
步骤:
首先,自己解决问题。
然后将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在自己完成问题之前,请勿决定学生的解决方案是否正确。
使用以下格式:
问题:问题文本
学生的解决方案:学生的解决方案文本
实际解决方案和步骤:实际解决方案和步骤文本
学生的解决方案和实际解决方案是否相同:是或否
学生的成绩:正确或不正确
问题:
我正在建造一个太阳能发电站,需要帮助计算财务。
- 土地费用为每平方英尺100美元
- 我可以以每平方英尺250美元的价格购买太阳能电池板
- 我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元
作为平方英尺数的函数,首年运营的总费用是多少。
学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:
1. 土地费用:100x
2. 太阳能电池板费用:250x
3. 维护费用:100,000+100x
总费用:100x+250x+100,000+100x=450x+100,000
实际解决方案和步骤:
"""
response = get_completion(prompt)
print(response)
ChatGPT示例: