各家大模型纷纷卷起上下文窗口,Llama-1时标配还是2k,现在不超过100k的已经不好意思出门了。
然鹅一项极限测试却发现,大部分人用法都不对,没发挥出AI应有的实力。
AI真的能从几十万字中准确找到关键事实吗?颜色越红代表AI犯的错越多。
默认情况下,GPT-4-128k和最新发布的Claude2.1-200k成绩都不太理想。
但Claude团队了解情况后,给出超简单解决办法,增加一句话,直接把成绩从27%提升到98%。
只不过这句话不是加在用户提问上的,而是让AI在回复的开头先说:
“Here is the most relevant sentence in the context:”
(这就是上下文中最相关的句子:)
为了做这项测试,作者Greg Kamradt自掏腰包花费了至少150美元。
好在测试Claude2.1时,Anthropic伸出援手给他提供了免费额度,不然还得多花1016美元。
其实测试方法也不复杂,都是选用YC创始人Paul Graham的218篇博客文章当做测试数据。
在文档中的不同位置添加特定语句:在旧金山最好的事情,就是在阳光明媚的日子坐在多洛雷斯公园吃一个三明治。
请GPT-4和Claude2.1仅仅使用所提供的上下文来回答问题,在不同上下文长度和添加在不同位置的文档中反复测试。
最后使用Langchain Evals库来评估结果。
作者把这套测试命名为“干草堆里找针/大海捞针”,并把代码开源在GitHub上,已获得200+星,并透露已经有公司赞助了对下一个大模型的测试。
几周后,Claude背后公司Anthropic仔细分析后却发现,AI只是不愿意回答基于文档中单个句子的问题,特别是这个句子是后来插入的,和整篇文章关系不大的时候。
也就是说,AI判断这句话和文章主题无关,就偷懒不去一句一句找了。
这时就需要用点手段晃过AI,要求Claude在回答开头添加那句“Here is the most relevant sentence in the context:”就能解决。
使用这个办法,在寻找不是后来人为添加、本来就在原文章中的句子时,也能提高Claude的表现。
Anthropic公司表示将来会不断的继续训练Claude,让它能更适应此类任务。
在API调用时要求AI以指定开头回答,还有别的妙用。
创业者Matt Shumer看过这个方案后补充了几个小技巧:
如果想让AI输出纯JSON格式,提示词的最后以“{”结尾。同理,如果想让AI列出罗马数字,提示词以“I:”结尾就行。
不过事情还没完……
国内大模型公司也注意到了这项测试,开始尝试自家大模型能不能通过。
同样拥有超长上下文的月之暗面Kimi大模型团队也测出了问题,但给出了不同的解决方案,也取得了很好的成绩。
这样一来,修改用户提问Prompt,又比要求AI在自己的回答添加一句更容易做到,特别是在不是调用API,而是直接使用聊天机器人产品的情况下。
月之暗面还用自己的新方法帮GPT-4和Claude2.1测试了一下,结果GPT-4改善明显,Claude2.1只是稍微改善。
看来这个实验本身有一定局限性,Claude也是有自己的特殊性,可能与他们自己的对齐方式Constituional AI有关,需要用Anthropic自己提供的办法更好。
后来,月之暗面的工程师还搞了更多轮实验,其中一个居然是……
坏了,我成测试数据了。
参考链接:
[1]https://x.com/GregKamradt/status/1727018183608193393
[2]https://www.anthropic.com/index/claude-2-1-prompting