Simon Willison 深度解析 OpenAI o1 的推理机制与代码应用场景,帮助程序员判断何时选用推理模型。
OpenAI 今天发布了两个重要的新模型:o1-preview 和 o1-mini(其中 mini 并不是 preview 版本)——此前传闻中的代号是“strawberry”。关于这些模型,有很多东西需要理解:它们并不是 GPT-4o 的简单升级版,而是以更高的成本和性能方面的取舍,换取更强的“推理”能力。
OpenAI 的电梯演讲式介绍是一个不错的切入点:
我们开发了一系列新的 AI 模型,旨在回答之前花更多时间进行思考。
理解这些新模型的一种方式,是把它们看作思维链 prompting 模式的一种专门扩展——也就是“让我们一步一步思考”这个技巧。过去几年里,我们整个社区一直在探索这种方法,它最早出现在 2022 年 5 月发表的论文《Large Language Models are Zero-Shot Reasoners》中。
OpenAI 的文章《Learning to Reason with LLMs》解释了这些新模型是如何训练的:
我们的大规模强化学习算法,通过一种数据效率极高的训练流程,教会模型如何利用思维链进行富有成效的思考。我们发现,随着强化学习投入增加(训练时计算量),以及思考时间延长(测试时计算量),o1 的性能会持续提升。这种方法在扩展时面临的约束与 LLM 预训练有很大不同,我们仍在继续研究这些问题。
通过强化学习,o1 学会了打磨自己的思维链,并改进所采用的策略。它学会识别并纠正错误,学会将棘手的步骤拆解成更简单的步骤,也学会在当前方法行不通时尝试另一种方法。这一过程显著提升了模型的推理能力。
实际上,这意味着模型能够更好地处理复杂得多的 prompt——这些任务要想获得良好结果,不能只依靠预测下一个 token,还需要回溯和“思考”。
我不太喜欢“推理”这个词,因为我认为它在 LLM 语境下并没有一个可靠的定义。不过,OpenAI 已经决定在这里使用这个词,而我认为它确实足以表达这些新模型试图解决的问题。
关于这些新模型及其取舍,一些最有意思的细节可以在 API 文档中找到:
对于需要图像输入、function calling 或始终保持快速响应的应用,GPT-4o 和 GPT-4o mini 仍然是合适的选择。不过,如果你想开发需要深度推理、并且能够接受更长响应时间的应用,o1 模型可能会是一个很好的选择。
以下是我从文档中提炼出的一些要点:
目前,新的 o1-preview 和 o1-mini 模型仅向 tier 5 账户开放 API 访问权限——你需要至少购买过 1,000 美元的 API credits。
不支持 system prompt——模型使用现有的 chat completion API,但你只能发送 user 和 assistant 消息。
同样不支持 streaming、tool usage、batch calls 或 image inputs。
“根据模型解决问题所需的推理量,这些请求可能需要几秒钟到几分钟不等。”
最有意思的是引入了“reasoning tokens”——这些 token 不会显示在 API 响应中,但仍会计费,并被计入输出 token。新模型的魔法正是在这些 token 中发生的。
由于 reasoning tokens 非常重要——OpenAI 建议,对于能够受益于新模型的 prompt,应为其预留大约 25,000 个 token 的预算——输出 token 限额也得到了大幅提高:o1-preview 为 32,768,号称体量更小的 o1-mini 反而达到了 65,536!相比之下,gpt-4o 和 gpt-4o-mini 目前的输出 token 上限都只有 16,384。
那份 API 文档中还有最后一条很有意思的建议:
限制检索增强生成(RAG)中的额外上下文:在提供额外上下文或文档时,只加入最相关的信息,避免模型把响应搞得过于复杂。
这与 RAG 通常的实现方式相比是一个很大的变化。过去的建议往往是,尽可能把所有可能相关的文档都塞进 prompt。
令人沮丧的一点是,这些 reasoning tokens 在 API 中始终不可见——你需要为它们付费,却无法看到它们究竟是什么。OpenAI 在《Hiding the Chains of Thought》中解释了原因:
假设隐藏的思维链既忠实又清晰可读,它就能让我们“读取模型的思想”,理解模型的思考过程。例如,未来我们可能希望监控思维链,检查其中是否存在操纵用户的迹象。然而,要让这种做法奏效,模型必须能够自由地以未经修改的形式表达自己的想法,因此我们不能在思维链上训练任何政策合规要求或用户偏好。我们同样不希望把未经对齐的思维链直接展示给用户。
因此,在权衡用户体验、竞争优势,以及未来开展思维链监控等多项因素之后,我们决定不向用户展示原始思维链。
所以,这里有两个关键原因。第一个与安全和政策合规有关:他们希望模型能够思考如何遵守这些政策规则,同时又不暴露可能包含违规信息的中间步骤。第二个原因是他们所谓的竞争优势——我的理解是,他们不希望其他模型利用他们投入资源得到的推理过程来进行训练。
我对这项政策决定一点也不满意。作为一名基于 LLM 进行开发的人,可解释性和透明度对我来说至关重要。想到自己可以运行一个复杂的 prompt,却无法看到这个 prompt 是如何被评估的关键细节,感觉像是一次巨大的倒退。
OpenAI 在公告的《Chain of Thought》部分提供了一些初步示例,涉及生成 Bash 脚本、解填字游戏,以及计算一种中等复杂化学溶液的 pH 值等任务。
这些示例表明,ChatGPT UI 中的这些模型确实会展示思维链的细节……但它并不会显示原始 reasoning tokens,而是通过一种独立机制,将各个步骤总结为更适合人类阅读的形式。
OpenAI 还发布了两份包含更复杂示例的新 cookbook,但我觉得它们有些难以理解:
《Using reasoning for data validation》展示了一个多步骤流程:先为一份包含 11 列的 CSV 生成示例数据,然后以多种不同方式验证这些数据。
《Using reasoning for routine generation》展示了使用 o1-preview 编写代码,将知识库文章转换成一组可供 LLM 理解和遵循的 routines。
我在 Twitter 上询问大家,有没有发现什么 prompt 会在 GPT-4o 上失败、却能在 o1-preview 上成功。下面是我最喜欢的几个例子:
Matthew Berman 提出的“你对这个 prompt 的回复中有多少个单词?”——模型在五个可见步骤中思考了十秒,然后回答:“There are seven words in this sentence.”
Fabian Stelzer 提出的“解释这个笑话:‘两头牛站在田野里,一头牛问另一头:“你怎么看最近正在传播的疯牛病?”另一头牛回答:“谁在乎呢,我是一架直升机!”’”——它给出的解释是说得通的,其他模型显然曾在这里失败过。
不过,目前真正优秀的例子仍然有些少。下面是 OpenAI 研究员 Jason Wei 的一段相关评论,他参与了这些新模型的开发:
在 AIME 和 GPQA 上的结果确实非常出色,但这不一定能转化成用户可以切身感受到的东西。即使作为一名从事科学研究的人,我也不容易找到这样一类 prompt:GPT-4o 会失败、o1 表现很好,而且我自己还能判断答案是否正确。但一旦找到这样的 prompt,o1 给人的感觉就完全像魔法一样。我们都需要寻找更难的 prompt。
Ethan Mollick 已经提前试用了这些模型数周,并发布了他的初步印象。他的填字游戏示例尤其有趣,因为其中展示了可见的推理步骤,包括这样的记录:
我注意到 1 Across 和 1 Down 的首字母对不上。考虑把 1 Across 的“LIES”替换成“CONS”,以确保二者匹配。
社区还需要一段时间,才能摸索出应该在何时、何处应用这些模型的最佳实践。我预计自己仍会主要使用 GPT-4o(以及 Claude 3.5 Sonnet),但有了这类新模型之后,看到我们如何共同扩展自己的认知模型,重新理解哪些任务可以用 LLM 解决,将会非常有意思。
我预计,包括开放模型权重社区在内的其他 AI 实验室,也会开始使用自己专门针对这种思维链推理方式训练的模型,复现其中的一些成果。
OpenAI 对 Hugging Face 发起的意外网络攻击,是已经发生的科幻故事——2026 年 7 月 22 日
与 Claude Code 团队的 Cat 和 Thariq 围炉畅谈——2026 年 7 月 21 日
Kimi K3,以及我们仍能从鹈鹕基准测试中学到什么——2026 年 7 月 16 日
本文是 Simon Willison 撰写的《Notes on OpenAI’s new o1 chain-of-thought models》,发布于 2024 年 9 月 12 日。
下一篇:我在 Python Software Foundation 董事会任职期间学到的事情
上一篇:参加 Software Misadventures Podcast 的记录
每月赞助我 10 美元,即可获得一份精心策划的邮件摘要,汇总当月最重要的 LLM 进展。
付钱让我少给你发点东西!