从GPT-1到推理模型:每一代对开发者而言带来了哪些变化
追溯GPT系列从2018年的预训练到推理模型的发展历程,了解每一代所新增的理念,并了解GPT-4o的视觉功能以及Python中的结构化输出功能。
来源: The GPT Timeline: How OpenAI Built the Brains of Modern AI
您每次向现代语言模型发起的 API 调用,其实都建立在一系列逐代发展而来的核心理念之上:生成式预训练、大规模计算、上下文学习、通过人类反馈进行对齐、原生多模态能力,以及推理阶段所需的额外计算。了解这些理念的起源有助于我们更清晰地理解模型的功能、失败原因,以及应使用哪些 API 功能。本指南将追溯 GPT 系列从 2018 年诞生至今的发展历程,重点介绍那些以推理能力为特色的模型,并最后给出两个针对 GPT-4o 的实用 Python 示例。
GPT 出现之前:为什么 Transformer 如此重要
直到2018年左右,大多数自然语言处理技术仍依赖循环神经网络及其LSTM变体。这类模型需要逐个词元读取文本,这使得训练难以并行化,而且长文本中前部的信息会在处理到末尾之前就逐渐消失。
2017年,谷歌发表了一篇题为《Attention Is All You Need》的研究论文,提出了Transformer架构。该架构用自注意力机制取代了循环结构,使得序列中的每个位置都能直接关注其他所有位置。OpenAI基于这一架构开发了GPT(生成式预训练Transformer)系列,并在2018年6月发表了论文《Improving Language Understanding by Generative Pre-Training》,当时很少有人意识到这标志着计算领域即将迎来重大变革。
2018年至2019年:预训练与规模优势
GPT-1:先进行预训练,再做微调
以今天的标准来看,第一个模型相当简单:
- 1.17亿个参数
- 仅有解码器的12层Transformer结构
- 在BooksCorpus数据集上训练,文本量约为5GB
它的贡献在于提出了一种两阶段训练方法。首先,通过对原始文本进行无监督预训练,模型仅通过预测下一个词元就能掌握语法、事实关联以及语言结构。其次,针对情感分析或分类等特定任务进行少量有监督微调,即可获得业界领先的性能,无需为每个任务设计专门的架构。
GPT-2:出现零样本学习能力
接下来的改进主要体现在规模上:
- 15亿个参数,约为GPT-1的十倍
随着规模足够大,许多任务的微调变得可选。GPT-2展现了零样本学习能力:诸如“翻译成法语:”这样的提示就能让它处理从未被明确训练过的任务,仅仅因为继续处理该文本很自然地就会产生译文。
GPT-2还因其发布方式而被人们铭记。OpenAI最初因担心该模型会被用于大量制造假新闻和垃圾信息而未公开完整版本,而是分阶段发布。这一决定引发了关于人工智能安全以及是否应公开强大模型的长期公众讨论。
2020年至2022年:上下文学习与对齐
GPT-3:提示词中的示例
GPT-3实现了从研究项目到商业产品的转变:
- 1750亿个参数,是GPT-2的百倍以上
- 训练数据来自经过筛选的网页文本、书籍和维基百科,筛选前原始数据量约为45TB
它的核心能力是大规模少样本学习。在提示词中给出两三个已有的示例,模型就能延续这种模式,无论是编写代码、创作诗歌还是从杂乱的数据中提取信息。这就是上下文学习:模型仅通过提示词即可进行调整,无需更新权重。
不过,基础版GPT-3存在一个严重缺陷。它仅被训练用于延续文本,而非充当辅助工具,因此常常编造事实、偏离主题或忽略用户的提问。下图总结了后续的改进方案:通过人类反馈进行对齐,将原始文本预测模型转变为能够遵循指令的模型。
[Raw Pre-training] --> Predicts likely text continuations (often rambling or toxic)
│
▼ + RLHF (Human Feedback Alignment)
[InstructGPT Engine] --> Follows instructions safely and concisely
InstructGPT与ChatGPT:从人类偏好中学习
解决该问题的方法是基于人类反馈的强化学习(RLHF)。人们会对模型输出进行评分,奖励模型会学习这些偏好,随后语言模型就会被优化为能生成人类更喜欢的答案。由此诞生的InstructGPT模型能够更加直接且有效地遵循指令。
2022年11月30日,OpenAI推出了基于GPT-3.5系列的ChatGPT。通过将多轮对话与经过RLHF调优的行为模式相结合,它被广泛认为是当时增长最快的消费级应用,大约两个月内就拥有了1亿用户。
2023年至2024年:专业级推理与多模态能力
GPT-4:更强的推理能力、图像处理及工具功能
GPT-4于2023年3月发布,其重点从流畅的文本生成转向了学术及专业任务中的推理能力。OpenAI公布的测试结果显示,该模型在模拟的统一律师考试中得分处于第90百分位左右,在多项AP考试中也取得了优异成绩。此外,GPT-4还具备了图像理解功能,其系列产品更增添了开发者如今日常依赖的功能:JSON格式的输出、函数调用以及代码执行和网络搜索等工具使用能力。
有两个细节经常被误传。首先,OpenAI并未正式公布GPT-4的架构;所谓它是“专家混合模型”的说法源自未经证实的报道。其次,128k令牌的上下文窗口是在2023年后期推出的GPT-4 Turbo版本中才具备的,最初的3月版本上下文窗口要小得多。
GPT-4o:支持文本、视觉和音频处理的单一模型
早期的语音处理系统是由多个模块组成的:一个模型负责将语音转录为文字,另一个语言模型生成文本,还有一个独立的引擎负责合成音频。而GPT-4o(其中的“o”代表“omni”)则通过一个端到端的单一网络同时处理文本、图像和音频。由于消除了各模块之间的数据传递环节,语音延迟降至约200毫秒,该模型还能感知并呈现语调,而不仅仅是文字内容。
推理模型:在推理阶段消耗计算资源
随着越来越长的训练时长带来的收益愈发难以实现,高质量训练数据逐渐成为限制因素,人们的注意力便转向了测试时的计算能力:让模型在回答之前先进行思考。两者的区别很明显。传统的GPT会在接收到提示后立即开始输出内容,而具备推理能力的模型则会先通过内部思维链进行分析,之后才给出最终答案。
Traditional GPT Response: Prompt ──> Immediate Word-by-Word Streaming
o-Series Response: Prompt ──> Internal Chain-of-Thought (Deliberation) ──> Final Answer
OpenAI的o1和o3系列就是按照这种方式设计的。模型不会立即确定下一个词,而是会投入更多计算资源来探索边缘情况、检查中间步骤并调试自身代码,这在数学、编程竞赛和多步逻辑问题中效果最为显著。但这样的做法会导致更高的延迟和成本,因此应将其用于需要深入思考的问题。
在Python中使用GPT-4o
这段历史说明了为何GPT-4o改变了日常开发方式:它不再需要串联视觉模型、语言模型和语音引擎,只需一次API调用即可处理混合输入。两个示例展示了对开发者最有用的功能。
在单次请求中同时发送图片和文本
使用GPT-4o时,可以在单条用户消息的content数组中将文本和图片并排放置。图片可以通过公共URL或base64编码的数据形式传递。下面的示例使用了官方Python SDK,从环境变量中读取API密钥,请求模型检查混凝土照片中的裂缝并评估其严重程度,通过max_tokens限制回复长度,最后输出首选结果的文本。
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# Sending a visual inspection query directly to GPT-4o
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Analyze this image for architectural structural damage. Identify any cracks and rate severity."
},
{
"type": "image_url",
"image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e1/Concrete_crack_example.jpg"
},
},
],
}
],
max_tokens=500,
)
print(response.choices[0].message.content)
内容是由类型化的字段(text和image_url)组成的列表,这使得你可以在一次操作中混合多张图片和指令。可将输出视为需要审核的评估结果;任何与安全相关的内容仍需由专家处理。
通过结构化输出获取符合模式规范的 JSON
过去,要从模型中可靠地提取 JSON,往往需要精心设计提示词,并结合正则表达式进行防御性解析。结构化输出在解码阶段解决了这一问题:通过限制模型的采样方式,确保输出符合你指定的 JSON 模式。借助严格的模式规范,OpenAI 表示这能够保证输出符合模式要求,其可靠性高于旧版的“JSON 模式”,后者仅能保证 JSON 在语法上是有效的。
在 Python 中,最便捷的方式是使用 Pydantic。示例中定义了一个 Entity 模型以及一个包含标题、摘要、介于 -1.0 和 1.0 之间的情感得分以及实体列表的 ArticleAnalysis 模型,随后将该类作为 response_format 传递给 SDK 的 parse 工具函数。该工具函数会将此类转换为 JSON 规范,随请求一同发送,并在 message.parsed 中返回一个类型化的对象。
from openai import OpenAI
from pydantic import BaseModel, Field
from typing import List
client = OpenAI()
# Define the exact JSON schema required by your database
class Entity(BaseModel):
name: str
category: str = Field(description="Person, Organization, Location, or Date")
class ArticleAnalysis(BaseModel):
title: str
summary: str
sentiment_score: float = Field(description="Score between -1.0 and 1.0")
key_entities: List[Entity]
# Pass the schema directly into the completion request
completion = client.beta.chat.completions.parse(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are an automated intelligence parser."},
{"role": "user", "content": "OpenAI CEO Sam Altman announced new developer tooling in San Francisco today."}
],
response_format=ArticleAnalysis,
)
# Extract type-safe output directly as a Python object
result: ArticleAnalysis = completion.choices[0].message.parsed
print(f"Summary: {result.summary}")
print(f"Entities: {result.key_entities}")
有两点实用提示。该功能最初位于client.beta下,而较新版本的SDK也在非beta命名空间中提供了该功能,因此请确认项目所使用的SDK版本。虽然数据结构是有保障的,但具体数值并非如此:情感得分虽为数字形式,但其合理性仍需由模型来判断。应像处理任何外部输入一样,对异常情况进行处理并验证业务规则。
GPT系列概览
- GPT-1(2018年):拥有1.17亿个参数;证明了生成式预训练结合轻度微调的有效性。
- GPT-2(2019年):拥有15亿个参数;具备零样本任务处理能力,并采用分阶段、注重安全性的发布策略。
- GPT-3(2020年):拥有1750亿个参数;支持大规模的少样本、上下文学习功能。
这一发展对您的技术架构意味着什么
- 单纯提升规模已不再是关键。早期的进步主要体现在参数数量上(1.17亿,随后为15亿,再升至175亿);而后期的进展则更多得益于RLHF、多模态整合以及测试时推理等对齐技术。
- 模型从自动补全功能转向了实际操作功能。当前的模型能够进行规划、调用函数以及协调多步骤的工具工作流,正因如此,智能体设计现已成为主流工程领域的关注点。
- 可预测性是你可以利用的一项优势。结构化输出功能允许你将模型输出接入具有固定结构的编码路径中,而无需解析自由文本。
- 效率如今也与模型规模形成竞争关系。诸如GPT-4o mini这样的小型版本以及针对特定任务的推理模型,在成本和延迟方面往往能优于最大的模型,因此应根据具体工作负载来选择模型,而非仅依据其宣传中的功能指标。
使用这些模型进行开发时,越来越注重的是组合模型、工具和结构化方案,而非仅仅发送单一提示词。