#ChatGPT/坑 当 ChatGPT没有按照要求的格式输出
省时间,直接上结论
切换模型也不太好使,捕获异常回调重试发送提示词也不太好使。
原因是相同的提示词会触发类似 “缓存” 的东西持续输出错误的结果,至上与上次输出的 70% 都是相同的,大概率也是错误的结果。
所以在发送请求前,先在提示词的前面加上 uuid 就可以保证每次输出不走缓存 gpt 重新计算输出了,大概率是会成功的。
我最终的方案就是通过:捕获异常回调重试,在提示词前面加上 uuid 发送给大模型解决这个问题的。
闲着没事就接着往下看
接下来将下面这段英语单词数组翻译中文
{单词数组}
你需要将下面英语单词按顺序意译翻译成中文,必须严格按照以下对象数组json格式,不容出错:
``
[{ "e": "英语单词","c": "翻译中文"}]
``
上面这段是我的 prompt,但是在我使用 gpt3.5 16k 的时候有时候发癫并没有按照要求格式输出,输出内容变成这样:
[{"e":"chatter?","c":"闲聊?"},{"e":"colors.","c":"颜色。"},{"e":"concept","c":"概念"},{"e":"constantly","c":"不断地"},{"e":"crazy","crazy"},{"e":"crowd","人群"},.....手动忽略后面错误json]
前面是对的格式,后面就错了。
解决办法是切换成了 gpt3.5,然后就可以了,原因嘛,不知道,解决以上的问题步骤:
1、检查你的提示词(prompt)
2、提示词没问题,那么就是模型的问题了,切换模型
1、意外来了,切换了模型还是出了问题
经过思考我尝试用出现异常就线程等待一段时间后,然后重新发出请求试试。
2、这次舒服了,过一会我一看,怎么还是输出格式错误!!!
好吧,gpt 本身可能自带一些类似缓存的机制,如果每次提示词都一样,那么他大概率就会输出和上次相似度高达 80% 的内容。
所以最好的办法就是当出现异常后,回调重新发送 gpt 提示词都有所不同。
我的方法是在提示词前面加一串随机数字即可,在 299~999999 随机选出一个,这次就正常运行了,万岁。
原提示词:接下来将下面这段英语单词数组翻译中文
修改后:{随机数占位符}:接下来将下面这段英语单词数组翻译中文
使用随机占位符之后,成功运行了一段时间~
又出错了
这是怎么回事呢?经过一番实践思考和尝试,哦哦哦哦哦哦,我懂了,因为随机数虽然让提示词有了一点变化,但还是变化太小了,gpt 会识别这个提示词和原先区别不大,直接走这个 “缓存” 导致输出原先的错误结果,那么如何解决呢?
随机数改成 uuid,这个变化就稍微大了一点,大概运行了 1 小时都没有什么问题,好了,就这样
版权归原作者 梦染(°ー°〃)星尘 所有, 如有侵权,请联系我们删除。