如何矫正ChatGPT的错误输出?
如何矫正ChatGPT的错误输出?

如何矫正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示例:

返回: 【硅谷AI推荐】ChatGPT速成实操指南(大学生必修课)

100多所高等院校普及AI共同的选择!

X