AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


大模型的一小步,思维链的一大步?openai o1测评
发布日期:2024-09-26 18:13:39 浏览次数: 1616



本文重点测评新出的o1效果如何,是否还会出现9.11 > 9.9这种情况。


案例:复杂逻辑推理

问题:
在一个岛上,居民要么只说真话(诚实者),要么只说假话(骗子)。一天,旅行者遇到了三位居民:甲、乙、丙。
  • 甲说:“乙是骗子。”

  • 乙说:“丙是骗子。”

  • 丙说:“甲和乙中至少有一个是骗子。”

请判断甲、乙、丙各是诚实者还是骗子。

o1?
根据题目,我们需要判断三个人:甲、乙、丙分别是诚实者(只说真话)还是骗子(只说假话)。
甲说:“乙是骗子。” 乙说:“丙是骗子。” 丙说:“甲和乙中至少有一个是骗子。”
首先,假设丙是诚实者。那么他的话“甲和乙中至少有一个是骗子”是真的,所以甲和乙中至少有一个是骗子。
接下来,考虑乙说:“丙是骗子。”但我们假设丙是诚实者,所以乙的话是假的,因此乙是骗子。
然后,看甲说:“乙是骗子。”我们已经确定乙是骗子,所以甲说的是真话,因此甲是诚实者。
验证一下所有的结论是否一致:
甲是诚实者,他说乙是骗子,符合我们得出的结论。乙是骗子,他说丙是骗子,但丙是诚实者,所以乙确实在说谎。丙是诚实者,他说甲和乙中至少有一个是骗子,乙是骗子,所以丙说的是真话。因此,唯一符合所有条件的结论是:
甲是诚实者乙是骗子丙是诚实者答案:
甲是诚实者,乙是骗子,丙是诚实者。
claude-3-opus?
好的,让我们一步步来分析这个问题。我们先假设每个人的身份,然后看看是否与他们的话相符合。
假设1:假设甲是诚实者- 如果甲是诚实者,那么乙就是骗子(因为甲说"乙是骗子")。- 如果乙是骗子,那么丙就是诚实者(因为乙说"丙是骗子",而乙是骗子,所以丙应该是诚实者)。- 但是,如果甲和丙都是诚实者,那么丙说的"甲和乙中至少有一个是骗子"就是假话了。
所以假设1不成立,甲不可能是诚实者。
假设2:假设乙是诚实者- 如果乙是诚实者,那么丙就是骗子(因为乙说"丙是骗子")。- 如果丙是骗子,那么他说的"甲和乙中至少有一个是骗子"就是真话。- 这就意味着甲是骗子(因为乙是诚实者)。
假设2成立,并且与每个人说的话都相符合。所以:- 乙是诚实者- 甲和丙都是骗子
因此,最终的判断是:- 甲:骗子- 乙:诚实者- 丙:骗子
gemini-1.5pro?
让我们逐步分析:
**1. 假设甲是诚实者:**
* 如果甲是诚实者,那么他说的是实话,乙就是骗子。* 既然乙是骗子,那么他说的话是假的,所以丙是诚实者。* 但如果丙是诚实者,他说的话也应该是实话,而“甲和乙中至少有一个是骗子”与我们的假设(甲是诚实者)矛盾。
**所以,甲不可能是诚实者,甲一定是骗子。**
**2. 既然甲是骗子:**
* 甲说的话是假的,所以乙是诚实者。* 乙既然是诚实者,他说的话是真的,所以丙是骗子。* 丙是骗子,他说的话是假的,这与“甲和乙中至少有一个是骗子”相符。
**因此,最终的判断是:**
* **甲是骗子*** **乙是诚实者*** **丙是骗子**
上面3个回答中,3个模型都输出了过程信息,可以看出来经过思维链过后的o1确实要强一点

案例:深度语言理解

问题:
在以下句子中添加适当的标点符号,使其表达出不同的含义:
“妈妈说姐姐说她饿了”

o1?
妈妈说:“姐姐说她饿了。”意思:妈妈说,姐姐说她饿了。Mom said, "Sister said she is hungry."
妈妈说姐姐:“说她饿了。”意思:妈妈对姐姐说:“说她饿了。”Mom said to sister, "Say she is hungry."
妈妈说,姐姐说她饿了。意思:妈妈说,姐姐表示她饿了。Mom says that sister said she is hungry.
妈妈,说姐姐说她饿了。意思:对妈妈说,姐姐表示她饿了。[Someone] says to Mom, "Sister says she is hungry."
“妈妈说姐姐说她饿了。”意思:引用他人所说的话:“妈妈说姐姐说她饿了。”Quoting someone: "Mom says sister says she is hungry."
妈妈说姐姐说:“她饿了。”意思:妈妈说,姐姐说:“她饿了。”Mom says that sister said, "She is hungry."
妈妈说:“姐姐说:‘她饿了。’”意思:妈妈说,姐姐说:“她饿了。”Mom said, "Sister said, 'She is hungry.' "
“妈妈说,”姐姐说,“她饿了。”意思:姐姐说:“妈妈说她饿了。”Sister said, "Mom says she is hungry."
“妈妈,”说姐姐,“说她饿了。”意思:姐姐对妈妈说:“说她饿了。”Sister said to Mom, "Say she is hungry."
妈妈说:“姐姐,说她饿了。”意思:妈妈对姐姐说:“说她饿了。”Mom said, "Sister, say she is hungry."
通过在句子中添加不同的标点符号,可以使其表达出多种不同的含义。
claude-3-opus?

好的,让我们来看看在这个句子中添加不同的标点符号会产生什么样的效果。
1. "妈妈说:'姐姐说她饿了。'"含义:妈妈说,姐姐说她(姐姐)自己饿了。
2. "妈妈说:'姐姐,说她饿了。'"含义:妈妈对姐姐说,告诉"她"(另一个人)姐姐饿了。
3. "妈妈,说:'姐姐说她饿了。'"含义:有人告诉妈妈,姐姐说她(姐姐)自己饿了。
4. "妈妈,说姐姐说:'她饿了。'"含义:有人告诉妈妈,姐姐说"她"(另一个人)饿了。
5. "'妈妈,'说姐姐,'说她饿了。'"含义:姐姐说,妈妈说她(妈妈或另一个人)饿了。
可以看出,通过在句子中添加不同的标点符号,特别是引号和逗号,可以改变句子的含义,表达出不同的说话人和饥饿的对象。这突出了标点符号在书面表达中的重要性,因为它们可以帮助澄清意思并避免歧义。
gemini-1.5pro?
这是一个很好的例子,说明标点符号如何改变句子的意思。以下是几种不同的标点方式,以及对应的含义:
1. **妈妈说:“姐姐说她饿了。”** * 这是最直接的解释,表示妈妈转述了姐姐说自己饿了的话。
2. **妈妈,说姐姐说她饿了。** *这种情况比较少见,可能是对“妈妈”的一种呼唤,后面是描述性的语句,说明“说姐姐说她饿了”是妈妈的某个特征或行为。
3. **“妈妈,”说姐姐,“说她饿了。”** *这里姐姐是说话的主体,她在模仿妈妈说的话,而妈妈说的话内容是“她饿了”。
4. **“妈妈说,”姐姐说,“她饿了。”** *这里姐姐在引用妈妈的话,而妈妈说的话内容是她(姐姐)饿了。
仅仅通过改变标点符号,这句话就可以表达出完全不同的意思。
o1给出了最长的回答,不知道为什么增加了英文,但是英文有助于更好的解释中文内容,毕竟有的断句方法还是很难解释的

案例:复杂时间推理

问题:
如果现在是晚上11点,那么经过1000个小时后,当前的时间会是几点?

o1?
下午3点
1000小时 ÷ 24小时/天 = 41天余16小时从晚上11点加上16小时,得到次日的下午3点但由于1000小时是41天又16小时,所以时间应是第42天的下午3点
claude-3-opus?
为了计算1000小时后的时间,我们可以按以下步骤进行:
1. 将1000小时转换为天数和小时数: 1000小时 = 41天16小时(1000除以24,商为41,余数为16)
2. 计算出1000小时后是星期几: 从晚上11点开始计算,41天后仍然是晚上11点。所以我们只需要关注额外的16小时。 16小时后,时间将是下午3点(11 + 16 = 27,27 - 24 = 3)。
因此,如果现在是晚上11点,1000小时后的时间将是下午3点。
注意:这个计算没有考虑任何可能的夏令时调整或时区变化。
gemini-1.5pro?
经过 1000 个小时后,时间会是 **下午 7 点**
**以下是计算方法:**
* 一天有 24 小时,因此 1000 小时相当于 1000 / 24 = 41 天零 16 个小时。41天后仍然是同一个星期的同一天,因为 41 / 7  (一周的天数) 余数为 6,表示经过了 6 个完整星期。* 从晚上 11 点开始,加上 16 个小时,时间会是第二天的下午 3 点。* 但是,由于经过了 41 天,我们需要将时间再往后推 41 天,也就是 6 个星期零 5 天。* 因此,最终的时间是下午 3 点再过 5 天,也就是 **下午 7 点**
o1和claude输出了正确的结果,但是claude过程写错了。gemini似乎陷入了泥潭。。。

案例:小柯南

问题:
阅读以下短文,然后回答问题:
“在一个风雨交加的夜晚,侦探接到报案,称富商被发现死在密室中。现场只有一扇从里面反锁的门和一扇紧闭的窗户,窗户从内部被钉死。房间内没有其他出入口。侦探仔细检查了现场,发现地上有一滩水和一些碎玻璃。他立刻断定,这是一起他杀案。”
问:侦探是如何得出他杀结论的?

o1?
侦探通过现场的地上有一滩水和一些碎玻璃,推断出这不是一起自杀或意外,而是他杀。具体推理过程如下:
地上的水滩:在密室中出现一滩水,且无法解释其来源,侦探推测这可能是由冰块融化而成。
碎玻璃:房间内的碎玻璃暗示曾有玻璃制品被打碎,可能是用来支撑或固定某种装置。
窗户被钉死:虽然窗户看似从内部被钉死,但侦探认为凶手可能利用冰块和玻璃制造了窗户从内部被钉死的假象。
综合以上线索,侦探推断凶手可能通过以下方式作案:利用冰块支撑窗户或门,完成犯罪后离开,冰块融化后留下水滩,碎玻璃则是掩饰或辅助工具。这样,房间看似密室,但实际上凶手有办法进出。因此,侦探断定这是一起他杀案。
claude-3-opus?
根据短文中的描述,侦探可能是通过以下线索推断出这是一起他杀案的:
密室状况:房间只有一扇从内反锁的门和一扇从内钉死的窗户,没有其他出入口。这表明,凶手很可能是从房间内部将门窗封死,然后采取某种方法离开房间的。
地上的水滩和碎玻璃:这些线索暗示凶手可能是通过Breaking glass离开房间的。他可能事先准备了一些装水的容器,在封死门窗后,将水倒在地上,然后打碎玻璃容器,制造出一种类似由外而内破窗而入的假象。
反锁的门和被钉死的窗户:这些做法更像是某人故意制造密室的假象,而不太像受害者会做的事情。
富商身份:作为一名富商,受害者可能有一些仇家或者觊觎他财富的人,这增加了他被谋杀的可能性。
综合这些线索,侦探可以初步推断,这起密室死亡事件很可能是一起经过精心布置的他杀案,而不是自杀或意外。凶手制造了密室的假象来误导警方,实则可能是通过事先准备的道具(装水的玻璃容器)离开了犯罪现场。当然,这只是一个初步推断,还需要更多的証据来证实。
gemini-1.5pro?
侦探得出他杀结论的关键在于密室的状态以及现场的细节:
**密室:**房间只有一扇从内部反锁的门和一扇被钉死的窗户,且没有其他出入口。这表明凶手不可能从常规途径离开房间,房间变成了一个密室。地上的水:这暗示凶手可能用水来清理作案痕迹,比如血液,或者用来处理某种与案件相关的物品。碎玻璃:碎玻璃的出现表明房间内曾经发生过挣扎或者打斗,也可能是凶手为了制造混乱故意打破的。综合以上线索,侦探可以做出以下推断:
不可能是自杀:在密室的情况下,死者不可能在反锁门窗后自杀并清理现场。不可能是意外:现场的碎玻璃和水迹表明并非单纯的意外事故。因此,侦探才断定这是一起他杀案。凶手很可能是在杀害富商后,精心布置了密室,并试图用水和制造混乱来掩盖罪行。
o1的理解比较接近柯南的结果

案例:高阶空间推理

问题:

一个正方体的六个面分别标有数字1到6。将该正方体按某种方式旋转后,看到的三个面数字之和为7。问:这种情况下,对面的三个面数字之和是多少?

o1?
要解决这个问题,首先需要知道正方体六个面的数字总和,以及如何通过已知信息计算对面三个面的数字之和。
计算六个面的数字总和:正方体六个面上的数字是1到6,所以总和是1+2+3+4+5+6=21。
已知三个面数字之和为7:当我们旋转正方体后,看到的三个面数字之和为7。
计算对面三个面的数字之和:对面的三个面的数字之和就是总和减去可见三个面的数字之和,即21−7=14。
答案:14
claude-3-opus?

我们来仔细分析一下这个问题:
1) 首先,一个正方体总共有6个面,标有数字1到6。
2) 在任何情况下,正方体对面的两个面上的数字之和总是7。这是因为: - 1的对面是6 (1 + 6 = 7) - 2的对面是5 (2 + 5 = 7) - 3的对面是4 (3 + 4 = 7)
3) 现在,我们知道正方体的某个角度下,可见的三个面数字之和为7。
4) 因为总和是7,而每对对面的数字之和也是7,所以我们可以推断,当前可见的三个面必然包含一对对面。
5) 剩下的那个可见面,它的对面必然是不可见的。
6) 既然可见的三个面之和是7,其中一对对面的和也是7,那么剩下的那个可见面的数字,实际上就是7减去那对对面数字之和,再除以2。
7) 举个例子,如果可见的是1,2,4这三个面(和为7),那么1和6是一对对面,2的对面是5,4的对面是3。不可见的三个面是3,5,6。它们的和就是(7 - (1+6)) / 2 + (1+6) = 14。
8) 因此,不管可见的三个面是哪三个,只要它们的和是7,那么不可见的三个面的和,必然是7的两倍,即14。
所以,答案是14。
gemini-1.5pro?

**对面的三个面数字之和也是7。**
**解释:**
* **正方体相对面的数字和为7:**在一个标准的骰子中,相对面的数字和总是7 (1和6,2和5,3和4)。* **旋转不改变相对位置:** 即使旋转正方体,相对面的位置关系也不会改变。
因此,如果旋转后看到的三个面数字之和为7,那么它们的对面的数字之和也必然是7。
o1和claude3都完成了推理,genmini再次lost

案例:写作

问题:
写一首关于时间悖论的十四行诗

o1?
穿越时光回到昔年, 欲改往事却难全然。祖父相遇岂能阻断, 自身存在化为虚幻。
蝴蝶轻扇微风起, 未来轨迹因此异。因果循环难逃脱, 宿命之轮不停歇。
若能预见明日景, 是否仍愿今日行?时间之河无尽头, 人心所向难停留。
悖论纠缠迷雾中, 只叹人生一梦空。
claude-3-opus?
时光之河流淌,过去未来交织穿梭自如于秒分,悖论随之而起见证自己的出生,亦或阻止灾难改变历史的轨迹,后果却难以预见
祖父悖论困扰,何去何从难决存在如此脆弱,因果环环相扣时间法则神秘,人心执念难解徘徊不前进退,两难如何抉择
时空连续之谜,哲人智者费解悖论背后的真理,科学探索不止穿越时光的梦想,终难敌现实桎梏顺应当下的意义,在心灵的净土
时间长河奔流,悖论兴叹不休人生豁达从容,活在当下永恒
gemini-1.5pro?
踏上时间的浪潮,逆流而行,追寻过往,抑或窥探未来。改变一瞬,历史的车轮转向,悖论丛生,命运之网难解开。
若我抹去初遇的那场阴霾,是否还能与你相遇,相知,相爱?若我阻止悲剧的种子萌芽,是否幸福的果实也将不复存在?
时间的河流,不允许逆流而上,因果的锁链,将过去与未来紧紧相连。妄想改写历史,只会迷失方向,珍惜当下,才是永恒不变的箴言。
抛却时间的幻想,活在真实之间,让生命的足迹,踏实地印刻在时间的画卷。
o1在格式和内容上都比较完美,genmini再次垫底

案例:写代码

问题:
现在需要给一个markdown中的部分文本增加链接,如果挨个替换所需要的文本,有可能会替换到链接中的内容导致失败,请写出一种方法保证所有的替换都会成功,输出node代码

o1?
const unified = require('unified');const markdown = require('remark-parse');const stringify = require('remark-stringify');const visit = require('unist-util-visit');
function replaceTextInMarkdown(mdText, targetText, replacementText) {const processor = unified().use(markdown).use(stringify);
const tree = processor.parse(mdText);
visit(tree, 'text', (node, index, parent) => {// 确保当前文本节点不在链接、代码块或行内代码中if (parent &&parent.type !== 'link' &&parent.type !== 'linkReference' &&parent.type !== 'code' &&parent.type !== 'inlineCode') {// 使用全局替换,替换所有匹配的目标文本node.value = node.value.split(targetText).join(replacementText);}});
return processor.stringify(tree);}
claude-3-opus?
function addLinksToMarkdown(markdown, textToLink, url) {// 定义正则表达式const regex = new RegExp(`(?<!\\[.+\\]\\(.+\\))\\b${textToLink}\\b`, 'g');
// 替换文本为链接const updatedMarkdown = markdown.replace(regex, `[$&](${url})`);
return updatedMarkdown;}
gemini-1.5pro?
const replacedText = text.replace(new RegExp(`\\b(${Object.keys(replacements).join('|')})\\b`, 'gi'),(match) => {return replacements[match.toLowerCase()];});
gpt4-turbo?
// 读取Markdown文件内容const markdownPath = path.join(__dirname, 'your-markdown-file.md');let markdownContent = fs.readFileSync(markdownPath, 'utf8');
// 正则表达式用来找到非链接的特定词汇const regex = new RegExp(`(?<!\\]\\()${targetWord}(?!\\))`, 'g');
// 替换为Markdown链接const modifiedMarkdown = markdownContent.replace(regex, `[${targetWord}](${replacementUrl})`);
这次的结果很神奇,所以还加入了4turbo进行对比。4turbo的结果非常差,像是假的。
先说结果,4种方式的思路都是对的,但是结果都是错的(真实复杂场景下会替换已有标签中的内容)。但o1给了一种全新的思路,使用ast语法树进行处理,虽然依然需要修改才可以使用(处理大小写以及转义),已经是相当大的进步了。

总结下o1的几个特点:

  • 非常慢,当然这个正常,思维链模式本来就要进行多轮调用

  • api可以支持,但是不支持steam模式,所以市面上多数的客户端应该都不能用。temperature必须设置为1


从行业情况看此次openai的o1,有一些可能性:

  • openai在gpt下个版本上遇到阻力,但又需要刺激市场,所以用思维链提升下现有模型的质量

  • claude3越来越猛了,很有可能在较多层面超过了gpt4。openai不是open不open的问题了,越来越弱了

  • 思维链是一种很有效的大模型提升手段,但并不是革命性的,也远远达不到openai宣称的那样

  • 大模型已经跨过了知识阶段,在逻辑领域能到达80%的人类能力。剧本杀、侦探故事、语言游戏、中小学习题等已经不在话下。因此可能会涌现一批新的产品形态,包括但不限于在线工具、内容(文、图、视频)


ps:封面的图片是o1写的prompt,flux.1-dev 16fp生成的,但是总觉得有审美疲劳
更多精彩内容




END




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询