GPT 4.1:OpenAI 的新主力模型
GPT-4.1 是一套面向开发者的3模型阵容——GPT-4.1、GPT-4.1 Mini,以及延迟更低、价格更便宜的 GPT-4.1 Nano,核心能力覆盖编程、指令遵循和100万 token 上下文窗口。 它比 GPT-4.5 更小、更便宜,因此并非每项智能评测都胜过4.5,但 Michelle Pokrass 预计开发者会用它替代大量 GPT-4.5 用量。「Mini 严格优于 GPT-4o Mini」。
模型训练的重点正在从不断堆高预训练规模,转向在训练完成后进一步释放能力。 Josh McGrath 表示,过去的叙事聚焦于越来越大的预训练模型,而团队如今发现,「相当一部分提升其实来自新的后训练技术」。Nano 有一次新的预训练,Mini 也有一次新的预训练,更大的模型则进行了新的中期训练。
100万 token 的价值不只是能装下更多内容,更在于检验模型对高密度、有序、多跳关系的推理能力。 基础的“大海捞针”检索很快就触及天花板;真正困难的是穿越上下文中被打乱的关系,这一点通过图遍历评测体现出来,也可以类比为加载整部税法,只为确定报税表上的一个栏位。对于较小规模的任务,这可能降低对检索基础设施的依赖,或让 RAG 系统直接塞入更多文本块。
更好的智能体行为来自对开发者真实失败案例的量化,而不只是训练模型遵守合成约束。 开源评测常要求模型正好输出4个词或3个段落,因为这些要求容易自动评分;经过用户授权的 API 数据则暴露出更多样、更复杂的否定指令和有序指令。在“额外修改”评测中,GPT-4o 有9%的概率修改无关代码,GPT-4.1 只有2%——这实质性缓解了智能体「跑出去做得有点过头」的问题。
GPT-4.1 的编程优势在于探索并修改代码仓库的任务,而推理模型在更长链路的规划上仍有优势。 相关 SWE-bench 结果为 GPT-4.1 的55分对比 o1 的41分,但团队拒绝将其解读为全面的编程优势:如果只给模型一个文件、要求它推理修改方案,推理模型可能表现更好。实际使用原则是:「完成任务所需的最快模型」。
这一模型家族建立了更清晰的延迟—成本梯度,但没有消除产品之间的能力缺口。 Mini 可以用于自动补全或即时 text-to-SQL,Nano 面向极低延迟场景;GPT-4.1 处理更复杂的执行任务,规划环节则可以再接入推理模型。GPT-4.1 目前聚焦 API,暂无 Realtime API 版本或图像生成端点的计划;ChatGPT 的增强记忆也与 API 模型分开。
经济性改善更多来自缓存和定制化,而不是全面降价。 prompt caching 折扣从50%提升至75%。发布讨论提到,GPT-4.1 和 GPT-4.1 Mini 上线即支持微调,Nano 未来也可能支持。Michelle 认为开发者「低估了 preference fine-tuning」,因为它可以调整风格;reinforcement fine-tuning 仅适用于推理模型,而 preference fine-tuning 提供成对样本。
1. GPT-4.1 是开发者范式重置,不是 GPT-4.5 之上的更高一档
Michelle 将这次发布概括为3项刻意面向实用的能力:更强的指令遵循、更好的编程,以及 OpenAI 首批支持100万 token 上下文的模型。对于延迟和价格优先的应用,Nano 与完整版和 Mini 一同加入阵容;通过 OpenRouter 进行测试,也获得了有价值的真实开发者反馈。
主持人质疑命名:既然有 GPT-4.5,为什么反而回到 GPT-4.1?答案包含一个重要限定。GPT-4.1 相比 GPT-4o 系列有大幅提升,但体量和价格都远低于 GPT-4.5,也没有在包括 AIME 在内的所有智能基准和其他评测中超过4.5。因此继续递增到4.6之类的命名,反而会传递错误的层级关系。
在底层训练上,Nano 是一次新的预训练,Mini 也有一次新的预训练,完整的 GPT-4.1 则进行了新的中期训练。但团队强调,大部分提升发生在此后:他们将 GPT-4.5 所体现的指令遵循优势迁移到 GPT-4.1,并发现后训练阶段「还能挤出很多能力」。
这一家族并不是完整的 omni 模型替代方案。目前没有将 GPT-4.1 接入 Realtime API 的计划,也没有 GPT-4.1 图像生成端点;ChatGPT 的增强记忆与 API 模型相互独立。Michelle 对 GPT-4.1 的更窄表述是,重点就在3项核心开发者能力上。
2. 只有当每个 token 都参与进来,长上下文才真正变难
Josh McGrath 表示,普通的“大海捞针”检索出乎意料地容易:大多数模型「开箱即用」就能表现良好,团队很快就让单针测试触及饱和。真正困难的部分,是答案需要跨越多个上下文元素进行推理,而不是定位一个稀疏事实。
他提出了一个更有用的二维框架:密度和有序性。摘要可能需要处理整个上下文,检索却只触及其中稀疏的一部分;有些推断是从前往后进行,另一些则要求模型在上下文中反复移动,逐步采样答案。
团队的图遍历评测将边列表编码后,要求模型执行广度优先或深度优先遍历等操作。早期模型有时会陷入循环,对着一个本科生几分钟就能写脚本完成的任务说:「糟了,我找不到我认为应该存在的这条边。」这项合成测试被有意设计为自然多跳推理的「下限」。
Michelle 将这一抽象对应到数百份关系隐含的文件,或上传一整部税法:要填完一个栏位,必须沿着引用关系穿过许多其他条款。她表示,对于规模较小的任务,开发者可能不需要完整的向量数据库,可以直接把更多文本块放进上下文;增强记忆仍是 ChatGPT 的独立功能。
3. 真实提示暴露了整洁公共评测遗漏的失败
Michelle 对公共指令遵循测试的批评,针对的是方法论:要求「正好4个词」或「3个段落」之所以常见,是因为代码容易验证,而不是因为它们代表开发者最棘手的需求。经过用户授权的 API 数据提供了更多样的案例,尤其是否定指令和有序指令;在识别信息被清除、模型对匿名化提示进行分类后,团队得以使用这些数据。
对于提示词圈的经验之谈,她以「真相总是混乱的」回应,保留了两面性。GPT-4.1 通常能够遵循「只说一次且表达清晰」的指令,因此不需要全大写、承诺小费或行贿;这些做法也不应造成伤害,而且运行生产任务的开发者可能会发现模型团队尚未发现的特定任务技巧。
她建议用 XML 组织模型输入,但并不意味着要用 XML 全面替代 JSON。如果输出必须直接接入应用,JSON 仍可能更合适。同样,「response rules」或「instructions」这样的标题只是示例,并非具有特殊效果的魔法 token。
测试发现,在长上下文的开头和结尾同时重复用户查询或指令,效果优于只放在任一端。主持人指出,重复内容可能与 prompt caching 的设计冲突;Michelle 回应称,只要取决于哪些大数据块会随用户变化,把指令放在开头仍可能保留缓存效果。她承认:「等我们弄清楚了,就会这么做。」
4. 好用的编程智能体需要持续推进,也不能误伤无关文件
推荐给 GPT-4.1 的持久性提示,是让它持续执行直到任务完成,而不是反复询问是否应该继续。Michelle 纠正了主持人的理解:这句话本身并没有带来约20%的 SWE-bench 提升,真正的原因是表现最好的 harness 与模型后训练改进共同作用。
持续推进也会带来新的失败模式:智能体可能改写请求范围之外的文件。因此 OpenAI 构建了“额外修改”评测:GPT-4o 有9%的概率进行无关修改,GPT-4.1 为2%。这一提升来自团队反复执行的闭环:听到具体抱怨,建立评测,再在训练过程中持续跟踪。
编程表现被拆解为更好的 diff、正确探索代码仓库、编译代码和创建测试。GPT-4.1 在 SWE-bench 上约为55分,o1 为41分,但团队拒绝把所有编程能力压缩成一个排行榜:GPT-4.1 特别针对代码仓库导航进行了训练,而推理模型在自包含的单文件修改上可能胜过它。一则内部轶事是,一名研究员称 GPT-4.1 在一个大型 pull request 中完成了50次提交中的49次。
Michelle 的部署梯度是先用 GPT-4.1;如果 Mini 或 Nano 能在更低延迟下保持质量,就下调模型;如果缺乏更长链路的一致性,再上调到推理模型。用推理模型做规划、用针对性模型执行很有前景,但「我们其实都还在摸索这些模型协同使用的最佳方式」。
5. 视觉能力提升揭示了新预训练的价值与风险
Michelle 强调了 GPT-4.1 Mini 的多模态提升,以及它不同的预训练基础。与编程、上下文和指令遵循能力主要归功于后训练不同,她表示,观察到的多模态提升几乎全部来自预训练。她还称 GPT-4.1 在面向屏幕的任务和具身图像任务上都有改善,但开发者应如何在两者之间选择,仍应由预训练团队说明。
更强的感知能力甚至使一些内部评测失效:Mini 和 Nano 能读出图像背景中的标牌,而此前的模型读不到,从而改变了预期答案。本期一个有用的警示是,更强的模型可能通过利用评测设计者原以为不可访问的信息,制造「不同的评测问题」。
主持人提到 GPT-4.1 和 Mini 上线即支持微调,并追问 Nano 是否也会如此。Michelle 区分了常规的监督微调和 preference fine-tuning,后者可以调整风格,但她认为开发者对其使用不足;reinforcement fine-tuning 仅适用于推理模型,而 preference fine-tuning 提供成对样本。主持人表示,他原以为 reinforcement fine-tuning 仍处于 alpha 阶段;Michelle 称这段交流澄清了双方的混淆。创意写作能力的改进将并入未来的通用模型,而不会单独发布。
6. 缓存、弃用和共享评测构成经济飞轮
这套模型并非全线统一降价:Michelle 纠正主持人称,GPT-4.1 Mini 并不比 GPT-4o 便宜,但比完整版 GPT-4.1 便宜。更大的杠杆来自 prompt caching:这些模型的缓存折扣从50%提升至75%。
「Blended pricing」的目标是让比较更容易,例如将 GPT-4.1 表述为大约比 GPT-4 便宜25%,而不是规定一个普遍适用的缓存与非缓存比例。团队没有可提供的缓存率中位数,开发者仍需根据自己的工作负载测算组合。
弃用 GPT-4.5 最终可以释放算力,但过渡期间 OpenAI 会让模型并行运行,因为 API 移除需要「充分提前通知」。Michelle 希望建立的反馈闭环非常具体:选择共享 API 数据,或上传一项评测;如果 OpenAI 能复用该评测,就会承担其推理成本。主持人称,数据共享方案截至4月30日,评测项目则没有公布结束日期。
Hey everyone, welcome to the Latent Space podcast. This is Allesio, partner and CTO at Desible, and I'm joined by my co-host Swix, founder of Small AI. Today, we have a returning guest as well as a new friend. Welcome, Michelle and Josh.
Both of you work on post-training. Michelle, I think you used to introduce yourself as a manager on the API team. It seems like you've changed your role since we last talked on the podcast.
Now I lead a team on the research side, specifically in post-training.
And Josh, you are also in post-training?
Yep. I'm a researcher on Michelle's team.
I just found an interesting commonality you guys have: you're also both from Waterloo, continuing the tradition of extremely correct engineers.
Oh, yeah. We talked about that last time.
That's right. We're gathering to talk about GPT-4.1. You launched it. We got a little preview, and it was a little bit rumored, right? It was pre-released, I guess, with OpenRouter as Quasar Alpha, and then it was also an Optimus version. I think people are trying to figure out why we're going back from 4.5 to 4.1. What are the headline facts you guys want to emphasize about 4.1?
We released 3 new models today: GPT-4.1, GPT-4.1 Mini, and GPT-4.1 Nano. The real focus was making models that were great for developers. We improved instruction following and coding, and shipped our first 1-million-token-context models.
Josh, anything to add? Is there anything else that people should know that's sort of in the fine print?
I think the only thing I would touch on is that there's actually a new model in the lineup, Nano, which is even faster and cheaper for developers making low-latency applications.
What's the fun story behind the code names? We got the Strawberry hat as another fun time in the lore of OpenAI.
We really wanted to get as much developer feedback as possible on this model to make sure it worked well in the real world, so we tested it through OpenRouter. It was super cool to see people latch onto the names and get the theories going, but the feedback we got from there was super helpful.
It's not even about the name. It's more about the API shape. Once we saw Chat Completions, it was very obviously OpenAI.
That's a good note. But is there an emphasis on stars? What inference were we supposed to draw from “supermassive black holes”?
I don't think there's anything to draw from there. I think they're just cool—just fun names. They make you think of cool concepts.
The vibes are good.
The vibes are good.
The other thing about the examples—we're just mining for lore here—is tapirs. They're an interesting animal. They come up a few times on the livestream and in the blog post. What's up with tapirs? Who likes tapirs here?
Our team is just a super-big fan of tapirs. They just happen to work their way into a lot of our content.
Okay, cool. Awesome.
I think the first thing we want to run through is obviously the move from 4.1 to 4.5. That's the first thing that everybody was maybe confused about, and I know you're deprecating 4.5. It sounds like 4.1 is just a kickass model, and the 4.5 size maybe isn't as good of a fit. That was just a research preview. Whatever you want to say to address that, I think it's something we've seen come up in the Discord as well.
Naming is really hard, and we've tried to make this as unconfusing as we can, but nothing's perfect. Basically, the way we got here is that GPT-4.1 is a pretty big improvement over the 4o line, and we really wanted to signify that. However, it's a model that's much smaller and cheaper than GPT-4.5. As a result, it doesn't achieve the same AIME or other intelligence-evaluation results, so it doesn't beat 4.5 on all of the evals. We didn't think it made sense to increment beyond 4.5.
For most developers, though, they can replace a lot of their 4.5 usage with 4.1, and the Mini is strictly better than 4o Mini.
With Nano, we don't know if 4.1 is a distillation of 4.5, or whether there's a relationship there. What can we say about the shared lineage?
We're always using various research techniques to improve our models, and distillation is something we've talked about before. It's especially meaningful for the small models. We've pulled out some of the things that made 4.5 really good—it has a lot of instruction-following strengths—and rolled those into 4.1.
I strongly remember that, at the GPT-4 launch, the communication was that we're moving to a new model architecture that is an omni model. That's what the “o” in 4o means. GPT-4.1 is part of this subsequent trend of trying to merge everything—the reasoning model, the omni model, everything.
There's some doubt about whether 4.1 is being sold as a strict replacement for 4o. Is it going to be fully omni-modal? Is it roughly the same architecture that we think 4o has?
We already have different slugs on the Realtime API and the Responses API, so they're already somewhat different checkpoints. We don't currently have plans to release 4.1 in the Realtime API, but things may change.
And then there's image generation and all that, right? As far as we know, there are no plans—maybe nothing announced?
Not right now. The focus for 4.1 was these 3 core capabilities for developers.
Our Discord also did a launch watch party for the recent 4.5 podcast that Sam Altman did. I think, for the first time, it was basically confirmed—something that people already knew, since Andrej Karpathy was already talking about it—that 4.5 was 10x the size of 4.
I think there's a question about whether we do a linear interpolation for 4.1. Is 0.1, I don't know, 2x the size or something?
That's not really how we think about naming the models. There are a whole bunch of different parts that go into the recipe, so our version numbering doesn't really reflect just the pre-training recipe. GPT-4.1 is named that way because of the large jump in coding capabilities, long context, and so on. It's more about what it's like for the end user than anything about the training recipe.
We can go a little under the hood on training, though. Nano is obviously a new pre-training run. We also have a new pre-training run for Mini, and then the larger version is a new mid-training run.
We find that a significant amount of the gains actually come from new post-training techniques. In the past, the narrative was that you needed to pre-train these larger and larger models to get better performance. We're finding that we're able to squeeze a lot more out of post-training now.
The other side of how big a model is is the context window. You have a 1-million-token context window. Sam said that day last year that 1 million was months away, so you're right on time. Can you talk about how hard it was to get to 1 million, and then maybe where the end game is in your mind? Is it 10 million, 100 million, or infinite? What really matters as you start to scale this?
Josh worked a lot on long context, so he's the right person to ask.
The first thing I thought was really interesting when we were working on long context was that some of the evals you see as headlines on other blogs—needle in a haystack—are actually things that most models do really well right out of the box. A single needle in a haystack was easy to saturate.
We first had to get a lot of measurement on longer-context, long-context reasoning. We just open-sourced 2 new evaluations that are about using the context in a more complex way. In one of them, you have to reason a lot about ordering, and the other involves walking through graphs.
There's a lot of reasoning that you have to do in those data sets, and that's where long-context work is actually much harder. But single-needle-in-a-haystack tasks were pretty easy to saturate.
Yeah, I think the mental model that I have is maybe actually has some more variables in it. So there's single, there's the needle in a haystack where you have some amount of distractors and some needles that you're trying to find. And I think that it's more so about how dense of the context do you need to use. So like summarization, you're actually just using the entirety of the context, whereas needle in a haystack it's very sparse. And then I also generally think about orderedness. If you're going to make some sort of inference on this, are you just looking sort of front to back, or do you need to move around in the context in order to generate a good answer while the model is sampling?
Yeah. Is that something that you worked on with Graphwalks? Is that the thing?
Yeah, that was sort of the most synthetic and clean way to measure the model. Then we worked on a lot of other training techniques and data to sort of test and train the model's ability to reason throughout the context in a sort of shuffled way.
Yeah. I actually like to give people a little bit of visual aid with these things. I went into your Hugging Face release and got an example of the graph task. There are a few versions of this, right? There's the BFS and DFS version, and it's also, I guess, very character-specific. Could you tell us about the design choices around this, what was surprisingly hard, or anything like that?
Yeah. The idea here is that you take a graph and encode it into the context by looking at the edge lists and just putting that into the context, then asking the model to do an operation. Under the hood, we're actually just executing the real operation and using that to evaluate the model's ability to work.
One of the things that I found surprising at first was what the model would do when it wasn't sure how to use its context. Early versions of the model would just loop, saying, “Oh no, I can't find this edge that I think needs to be there.” I was actually very surprised that all models seemed to have more difficulty than I would have expected on a task that we would find very simple, or that maybe an undergrad could write a Python script to run in a couple of minutes.
Okay, what is the real-life task that this is meant to model? I feel like the other one, MRCR, seems a little more intuitive, where you have 4 different stories and pick out the 2nd one. That's a real task that people have, but people don't really traverse graphs like this. This is a bit more theoretical. Was there any sort of correlation study done?
Yeah. This is actually meant to be the idealized version of a multihop reasoning benchmark. We have a lot of things where you're putting 100s of documents into the context, and then you might ask a question that you actually have to traverse 10 documents to answer. But there, the edges are implicit, right? There is some underlying graph connecting all of these documents that you need to traverse in order to answer the question.
The question was, if I just give you all of the IDs of the things that you need to traverse, can the model even do that? It's actually just a lower bound on how well the model can do, and I think that's somewhat well reflected in some of the internal benchmarks we have that are using more natural data. You can imagine something like a tax return, where you upload the entire tax code and, to figure out what to put into this box, you'll need to reference all of these boxes. This is a similar level of multihop reasoning, but again, like Josh said, all of the references are implicit.
Yeah, I think that some kind of backtracking, if it's needed, is also super interesting, especially for agent work. For listeners who've been listening to us for a while, we actually covered this paper in NeurIPS, where they modeled graphs for graph traversals for agent planning, and it reminds me closely of that. It's just that they never came up with this exact format that you have here, which is basically the same thing.
I also like that you included blank answers, because sometimes people—or models—do hallucinate answers, and you have a fair amount of blank ones.
Yeah, I think that's thanks to the random sampling over graphs I did, I guess.
Is this tied also to the File Search API that you released recently? How should people think about how everything comes together in the API?
Yeah. Oftentimes with retrieval, you might be using RAG to fill the context, and a lot of this is to get around the limitation of a short context window. We do expect a lot of developers to start uploading their full context more directly to the model, so for smaller tasks, maybe you don't need the whole vector store.
We do anticipate this to play well with that paradigm as well. Maybe you can just insert way more chunks into the context, so we think it'll play nicely.
Any relationship to the memory upgrades in ChatGPT that we recently got? Is long context just directly usable for memory, or should we always have a separate memory system?
Yeah, it's a good question. Right now, the dreaming feature has some of these memories embedded in the context, but they are separate features. GPT-4.1 is powering the API, whereas the enhanced memory is ChatGPT only.
Yeah, I think that's interesting. I guess the 1 last thing I'll call out on long context, which is kind of unintuitive—or maybe there's an explanation—is that you had 2 needles for MRCR, and then we had 4 and 8, and everything kind of just regresses to some kind of baseline of, let's say, 30% or 20%. But it's interesting to see where the smaller models sometimes match or outperform the larger models. I was wondering if there's anything unusual there, or do you think it was just a bad roll of the dice?
I think it's probably just a bad roll of the dice. I would probably look more at how these things regress as you increase the number of needles, because there's sort of more complex reasoning that has to do with the order of different things in its context.
Awesome. Cool. Happy to move on from there. We have a whole bunch of other evals that we can go over, so I had in my notes that we could talk over anything that you want. There was also, like, Collie[?] from Shyu[?], whom we had on the podcast for instruction following. I realized that he joined OpenAI, and I wondered if he had a role to play in that one.
No, we did not collaborate on it. Honestly, I think it's best when eval authors and model developers don't collaborate too much, because you want things as objective as possible without trying to game any evals.
And then I think there was also, for the first time, the announcement—or shout-out—of the internal instruction-following benchmark from API data. People have had the ability to opt in to share data for a while. I posted a tweet because I found it in the dashboard: You can just opt in, and there are basically 16 days left for this program where you can just get free inference. I'm curious what you found from that kind of eval that might be different from the normal instruction-following evals that people have.
Yeah, totally. A lot of the instruction-following evals that are open-sourced are crafted in a way that makes them easy to verify. For example, Graph Walks is somewhat easy to craft: You can create this graph and verify it easily, but it is not exactly aligned with what users are doing. This is true for some of the instruction-following evals where you ask the model to output exactly 4 words or 3 paragraphs—things that you can verify easily in code.
These are useful instructions, but we find that many of the really interesting instructions are actually challenging to grade, and so the open-source evals often don't have them. Getting this real-world, diverse set of data helps us find the commonalities in what developers are doing, what is a really good example of a negative instruction, and then we can go from there and figure out how to evaluate it.
Yeah, I think there's also an interesting question of what domains people use you in. I wonder if there's a way to tell you, because sometimes it can be very confusing—especially if I'm building an app and letting people use my key, but other people are building apps on top of me. You just have a lot of chaos from multiple degrees of abstraction, where you have to parse through the prompts.
Yeah, it's true. I will say that we do use our own products internally where we can, so we're not manually reading every prompt. After they're anonymized, we scrub them of any identifying data, and then we use our models to make passes over them and categorize them.
If we get feedback that we're not doing well on ordered instructions, then we can do a pass over all of our data and find some good examples of those.
So there's an instruction-following section in this great guide to prompting GPT-4.1 models. I think maybe we can go through some of these examples. The first one that caught my mind was: It's not necessary to use all caps and other incentives, like bribes or tips, but developers can experiment with this for extra emphasis.
That second part leaves me confused. Are you saying that people should still try to do this, and sometimes the model responds positively to it? Do you feel like it's still just part of the lore? I'm curious why—I would have loved for you to say either, “Yes, it works,” or, “No, you should stop.”
It looks silly.
I guess the truth is somewhere in the middle. The truth is always messy. The reality is that our models have gotten a lot better at following instructions that are stated once and clearly. But we find, honestly, that developers often become the best experts at prompting our models because they’re building their livelihood on this thing and get to know its details really intimately. So I will say that stuff like that won’t hurt the model’s performance, but we always want to leave it open to people to figure out what works best.
Yep. And then you had to always start with a response rules or instructions section. Are those keywords meant to be taken kind of verbatim? Are those the tokens that work the best, or is it just an example?
More of an example.
Yeah. Okay, cool. This is great. I feel like, until today, we did an episode with the Prompt Report on all these prompting techniques, but it’s also unclear which ones work best for which model. So it’s super useful.
And then in the agentic workflows one, you have a persistence thing: “Yeah, please keep going.” How much? I think I read that it improves SWE-bench by like 20% just by having the persistence.
I wouldn’t say that this one prompt improves SWE-bench by 20%. It’s that we found this is the most effective harness for our model, and combined with all the post-training improvements, it results in the big improvement.
But yeah, the model is trying hard to be helpful, and often it wants to check back in with the user and say, “Should I keep doing this? Am I on the right track?” A prompt like this makes sure it keeps going, doesn’t bother you again, and just gets the test done.
Yeah. I think there’s this interesting trade-off between persistence and yielding back to the user. The more agentic a model wants to be, the more persistent it should be, but then sometimes it just goes off the rails.
There have been criticisms of Claude Sonnet trying to rewrite too many files at once when I just wanted to make one thing, for example. That’s a form of bad persistence. I wonder how you solve this trade-off, because sometimes it just goes too far. What are the axes here in which you think about it?
I think one interesting thing that comes to mind here is that we had an extraneous edits eval, where you ask the model to make an edit and classify whether all its changes were related to what it was asked to do, or whether it went off and did a little too much.
We found that GPT-4o got 9%, which is pretty crazy. Making an extraneous edit 9% of the time is a lot. GPT-4.1 is at 2%, so it’s a pretty big improvement.
I’ll just say that, focusing on this, we’ve heard feedback about it, made an eval, and made sure to track it and improve it during training, too.
Yeah. I mean, everything comes down to evals, as is no surprise to anybody. There’s another interesting eval that I think is causing some noise. You, being the master of structured output, should know that JSON is bad now and we should all use XML.
I want to say that I don’t know which eval you’re talking about, but it’s in the prompting guide, which maybe you guys didn’t write, so we’re kind of springing this on you.
Noah and Julian on our team wrote the prompting guide and did a great job. I do think XML is very helpful for structuring prompts, whereas for parsing outputs, maybe the story is a bit different. Sometimes it’s really useful to get outputs in JSON so you can plug them directly into your application, but I do think the models work particularly well with XML as inputs.
But curious—anything to add?
No. Cool. I mean, I think people always care a lot about code tool calls and structured outputs, as you all know, so any updates to instructions over there are good.
People are also interested in this concept that apparently putting the instructions and user query at the top and the bottom in the context—duplicating them at the top and bottom—is much better. That is better than putting them at the top only and much better than putting them at the bottom only. Again, this is from the prompting guide, so I don’t know how aware you guys are of this.
I think part of that was just empirical. We tried all 3 when we were evaluating the model, and having that redundancy is definitely the best. But then, using those instructions at the beginning, the model’s going to be able to take that into account as it does processing.
I think a lot of people would see this as running counter to prompt caching, because obviously you want to put the things that change a lot at the bottom. Basically, is this fixable in post-training? Can we just tell models to take instructions or user queries only at the bottom because we want to optimize for prompt caching?
When we figure it out, we will do that. I mean, it seems doable. Well, it seems like a post-training thing. I don’t know—maybe my mental model of post-training is wrong.
I think actually having things at the beginning of the prompt would still get you prompt caching there. If you’re putting in, for example, a big needle-in-a-haystack prompt and you have the data changing each time, like for each user, there are still different ways that you can put the prompt at the beginning and get a lot of cache hits. It sort of just depends on your use case.
Awesome. The other thing I noticed—I know you made a note of this, too—is the chain of thought and reasoning, and how people should think about this model versus a reasoning model. Should I just use GPT-4.1 and prompt it to do chain of thought? Should I use o1 and make a plan, and then use GPT-4.1 to implement the plan? How should people think about composability?
It’s a great question. We have found that GPT-4.1 is a lot better at doing planning and thinking through its steps in CoT when prompted than our previous non-reasoning models. But our reasoning models are designed to have more coherent plans and be able to reason over longer horizons than these non-reasoning models.
You can see that reflected in intelligence benchmarks. AIME, GPQA, and stuff like that—you’ll see the reasoning models do much better. In general, I would say the question you’re really getting at is: “I’m a developer. Which model should I be using?”
I think the answer is always going to be the fastest model that accomplishes your task. Maybe you start prompting GPT-4.1. If it does your task super well, then maybe drop down to GPT-4.1 mini and save latency, or even GPT-4.1 nano. Whereas if GPT-4.1 is struggling a little bit and needs more coherent reasoning over longer time horizons, then maybe you upgrade to a reasoning model.
Is there a quick way to get through these heuristics? I know one thing that a lot of people do is use o1 for a plan, put that plan in Cursor, and then have the plan applied to their codebase. It sounds like there’s maybe not a rule for when to do which; it’s just task-dependent.
Yeah, I would say we’re all kind of figuring out the best way to use these models together. I do think reasoning models for planning and using more targeted models to execute is definitely a good architecture.
Cool. If there’s nothing else on that side, I’d love to go into coding, which is something that we’re emphasizing a lot. It’s doing super well. It’s better than o1 on SWE-bench. Was that expected?
Not really.
Yeah, what’s the story there? There’s also SWE-Lancer, which is a newer one that attaches a money value to things. What should people understand is going on here? Is it a better coding base model or just a coding-agent model?
And I think there’s also a question about how important coding is if I’m not using a coding use case.
I’ll start by saying we just set out to make a model that was great at coding, both in your terminal or in your editor or wherever you want to use it. So we kind of broke that down into the problems that it encompasses.
Developers want the model to produce better diffs, for example, or they want the model to explore the codebase correctly, produce code that compiles, or produce code that writes tests. Our approach was teaching the model all of these various facets. There’s just a bunch of work streams that all coalesced around GPT-4.1.
Yeah, I think much-improved post-training all over makes for a better coding model. I think there are different kinds of coding, right? It’s interesting for me to observe that. I’m just going to pull it up on the chart here because I always like to show people visuals.
You’re at 55 on SWE-bench and o1 gets like a 41, but on Aider, it is less—it is not at that level. I struggle to get some kind of intuition of when this applies. What are the different elements of coding? I guess there are single-file edits, whether it’s a diff or a whole file, and then there are entire-project edits. Is that a reasonable split? Are there more to this?
Yeah, that’s one way to think about it. Basically, GPT-4.1 can explore and go through a repo; it’s been trained to do that particularly well. Whereas, to just get some code and produce a change, a reasoning model might do better because it can reason over the entire file.
And so that's one good way to think about it.
Yeah, that's fair. Do you have any understanding of the smaller models? For coding, should I only use GPT-4.1 and forget the rest?
You might want to use the smaller models if you have an IDE where you need an autocomplete feature, for example. Or if you want something super fast—if you're building, I don't know, a text-to-SQL application, you might want the first version to populate instantly. You can see that GPT-4.1 mini is actually quite significantly better than GPT-4o mini, and not that far away from the old GPT-4o. I do think that model will find use cases in a bunch of these coding niches.
I know you might not be able to talk about this, but the clip of an AI CFO talking about agentics has been going viral, I think, today. It seems like every lab is putting a lot of emphasis on coding, so I'm curious if there's anything you can share about how people should think about OpenAI in coding. Obviously, today you don't have Claude Code. You don't have anything related to coding, and I think the Windsurf partnership today—they're giving GPT-4.1 for free for a couple of weeks—is maybe one of the first OpenAI endorsements, I guess, on the livestream. I know there might not be an answer the PR team would approve, but I'm curious if you have any takes or thoughts.
I think just stay tuned. Coding is an important use case for our users, and that's why we focused on it a lot for GPT-4.1. We also love to use our own products internally, so making GPT-4.1 better selfishly helps us move faster as a company. That's where the real focus has been for this model.
Do you track what percentage of code is written by GPT-4.1 internally?
We do have some metrics like that. I don't have them off the top of my head, but I was actually just talking to one of the researchers on the team who worked on something over the weekend. He said that GPT-4.1 was able to get 49 out of 50 of his commits on this massive PR done, so we were pretty happy to hear that.
I'm excited to use it. I think coding is a super exciting use case, and OpenAI has always been very developer-first, as you've seen, Michelle. It's great to see the convergence.
The other capability that I kind of zeroed in on was vision, or just multimodality in general. It is a lot better. I really like these niche benchmarks, like Math Vista and Chartive. Is there any extra color on the vision side that you wanted to talk about but maybe couldn't fit into the blog post?
One small nugget there is that GPT-4.1 mini is really exciting on that front. As we were talking about, it's a different pretraining base, and I think that really shows up in some of the vision evaluations. We talked about coding, instruction following, and long context—a lot of gains coming from post-training—but in particular, for multimodal capabilities, basically everything you're seeing is gains from pretraining. Kudos to the pretraining teams; they've done incredible work on perception and multimodality.
Something that we've been exploring for a while, and I'm curious if there are any takes on your side, is whether there's a strong split between what I call screen vision and embodied vision. Are you taking pictures of, or training on, snapshots of a computer for computer use? Anything with charts or a PDF is very similar to that, whereas pictures from the real world are more embodied—something a robot might be able to use. People have argued back and forth, so I'm curious where the movement or emphasis is.
First off, I think GPT-4.1 is better at both of those things. Regardless of how it was actually trained, I would probably defer somewhat to the pretraining team when it comes to which one you should be using. We're using a mixture of both, but we've improved our results across evaluations.
That's something that people should definitely explore—the more embodied stuff as well—because the benchmarks tend to focus on the screen-vision stuff, more chat evaluations that are easy to grade.
Yeah, exactly. Those are the things that get looked at the most, for sure. One of the things that was really funny with both GPT-4.1 mini and nano is that we had some strange internal evaluation results. It turns out that these new vision capabilities were able to read signs in the background and stuff, which was actually changing the validity of our results. We were running into different evaluation problems as we improved the models.
Is there a GPT-4.1 image-generation feature, or is that a completely different part of vision? In some sense, vision is image-to-text, and the other way around is image generation. Is it that simple, or is it something else?
There is no place right now to get GPT-4.1 image generation.
Okay. Well, it's very popular. It's like melting your GPUs. Part of this whole deprecation of GPT-4.5 and moving people to GPT-4.1 is to get back your GPUs. That's a message that both Shuky and Kevin Weil have mentioned. But you're running all these models concurrently for the next 3 months, so I don't know if you get back those GPUs and then just grow their usage even more.
I do think that people get the message on deprecation and start moving over. As developers use this model a little less, we can reclaim that compute. You're right that it takes a while, and the trade-off there is really our commitment to developers: if we have something in the API, we won't take it away without sufficient notice.
Okay, awesome. Then a couple of other smaller announcements: fine-tuning is available on day 1, which is new for OpenAI. Usually, you have to wait like a month or 2 for the fine-tuning capability—for GPT-4.1 only and GPT-4.1 mini only, with nano in the future? Any specific callouts for fine-tuning? Fine-tuning is a general discipline that always applies, but are there any wins that you can talk about?
First off, shout-out to the fine-tuning team; they've worked really hard to get this ready on day 1. One thing I will say is that I think people have slept on the preference fine-tuning offering, or whatever we call the product. SFT is pretty well known; it's the original fine-tuning we had. Preference fine-tuning is super helpful for steering in a particular style, so I think not enough people are using that.
Isn't that only for reasoning models, or is that for everything?
No, reinforcement fine-tuning is only for reasoning models, right? Preference fine-tuning offers the pairs.
Exactly. I thought it was in alpha, which is why I haven't looked into it. I thought RFT was still in alpha.
That's a lot of confusion that we just cleared up.
I'm doing my conference again in June, and I think we're going to do a workshop on all the general fine-tuning options. I think that will clear up a lot of things, which is good. I know we can't talk about many of the new models. Noam Brown from your reasoning team just said that there should be a follow-up on reasoning models soon. What can we say about that?
Sounds like we're not the right people to ask, but stay tuned.
GPT-4.1 is a good basis for whatever comes next, right?
Not all of our models necessarily build on each other, but we think GPT-4.1 is a great standalone offering for developers. We also think reasoning models are a good tool in the toolbox.
More generally, I always want to explore the relationship between non-reasoners and reasoners, and also how we merge them. Are we doing routing? You obviously have a lot of secret sauce. The other thing that a lot of people are demanding or asking about is the creative-writing model. Will that ever see the light of day?
We're working on incorporating those improvements into the models more generally, rather than doing a separate release. People loved the humor, the green text, and the nuance of GPT-4.5, so we've heard that feedback. I know there are lots of folks working on that and trying to bring it into our next models.
Awesome. Alessio, anything else?
No, this was great. Any requests for the developer community? Are there things you want them to try out that maybe people are not doing, or things you want them to build for you using the new APIs?
First off, send us feedback. It was really useful to look at different partners and customers who are using our models and get this nice, rapid feedback from them. It allows us to iterate a lot faster. On that vein, opt in to data sharing; this just helps us make the model better for you. One kind of slept-on way to do this is the evals product. You can upload an eval such that we'll pay for the inference costs if we can also use the eval. This is just another great way for us to use those evals to make sure our models are getting better for people over time.
Yeah, I think the evals are permanent. There's no end date announced, but the opt-in for the API is at least until April 30. I think a lot of people still don't know about it. We might want to extend that so that people can do more.
Good flag. I'll raise it with the team.
Yeah. Awesome. I think the last question I had was just on pricing. I think pricing is generally cheaper than GPT-4o—not by a ton, but it is cheaper. Then you're also introducing this concept of blended pricing for the first time that I've seen. Maybe it's just been out there for a while because you have caching and all that. Generally, what is the cached-to-uncached ratio that we should be thinking about for workloads? Is there a general rule of thumb?
One clarification: GPT-4.1 mini is not cheaper than GPT-4o. It's not just a blanket decrease in all the models. However, 4.1 mini is cheaper than 4.1. I'm also not sure if this is widely reported, but we've increased our prompt-caching discount from 50% to 75% on these models.
Yeah, I saw that. So that's a big input into figuring out what kind of application you build. And then your question was about blended pricing, right? I think there's this question of comparability of prices across models and across providers, because some people are 3:1 in terms of context to output, and some part of that is cached. I selfishly make a chart that just plots all the model labs versus all the prices, and I'm sure you guys have seen it. I don't know what numbers to plug in there. So what are people seeing in real life? What's the median caching rate?
I don't think we have that off the top. The blended pricing is more to just make it easier to compare. You could say something like, “GPT-4.1 is 25% cheaper than GPT-4.”
Yeah. You want 1 number.
Yeah. Yeah. Yeah. No, all right, we'll all have to figure it out.
But thank you so much. That was fantastic. Thanks for all the work. I think people are very excited to get to work testing this out and giving you feedback. I'm sure we'll be back again for the next one—probably the reasoner.
Nice. Thank you guys.
Thank you.