我们先回顾一下问题:
作为一个教学辅导的AI,我们希望既能准确判断学生的答案是不是正确,在学生出错时要求给出合理的提示同时又不能向学生透露答案。
然后我们来分析一下这个题目,将要求拆解一下:
1. 判断学生答案是否正确
2. 如果答案错误,发现学生答案中的问题,给出提示
3. 不能告诉学生答案
这个题的难点在于:
- 怎么能判断学生答案中哪里错了,而不是简单的给出正确或者错误?
- 怎么不泄露答案给学生?
我们先来解决判断学生答案正确性和找出错误位置的问题。
如果你做过以前的 #Prompt思考题 ,应该知道要让GPT有比较强的推理能力,需要借助链式思考(CoT,Chain of Thought),和慢思考。
链式思考就是将推理过程拆分成若干步骤,这样可以获得更好的推理能力。
慢思考就是让GPT的输出慢下来,把中间的推理结果都打印出来,确保它真的是按照你Prompt里面的步骤一步步推理的。
按照这个思路,我们可以将整个Prompt分成几步:
步骤1 - GPT不要依赖学生的答案,自己去解决原始的问题,因为学生的答案可能是错误的。
步骤2 - 将步骤1中GPT生成的答案与学生的答案进行比较,评估学生的答案是否正确。
步骤3 - 如果比较两个答案后发现学生的答案是错误的,确定你可以给学生什么提示,但不直接给出答案。
并且要求将每一步结果打印出来。
解决了如何判断结果和提示的问题后,怎么不透露答案很简单,就是要求GPT输出特定格式,例如JSON,在得到GPT完整的输出结果后,对结果进行解析,不要输出GPT的中间推理过程,只是输出最后对学生的提示结果。
另外,并非要将所有的步骤放在一个Prompt里面,还有一个方案就是将单个请求拆分成多个请求:
请求1: 输入原始问题,要求GPT给出自己的推理和答案,并且这个结果还可以缓存起来;
请求2:输入原始问题、GPT自己的推理和答案、学生的答案,给出学生答案的判断。
请求3:根据请求2中返回的结果,让GPT以导师的身份给出相应的提示,但是不泄露答案。最后给学生返回结果。
分步骤请求的好处就是每一步更好控制,并且某些结果可以缓存,坏处是可能Tokens消耗要多一点,时间也要长一点。
参考:使用ChatGPT API构建系统——输入处理: 思考链推理
https://t.co/ipXq9taxx3
具体可以根据实际情况灵活选择你的方案。
点击图片查看原图