ChatGPT等AI大模型输出格式错误优化分享

发布于:2024-05-07 ⋅ 阅读:(33) ⋅ 点赞:(0)

#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 小时都没有什么问题,好了,就这样