文章

OpenAI 发布 o1 模型与开发者新工具 [译]

OpenAI 发布 o1 模型与开发者新工具 [译]

今天,我们推出了一系列重要更新:性能更强的模型、全新的定制工具,以及多项升级功能,这些都将帮助开发者构建性能更优、更灵活且更具成本效益的 AI 应用。主要包括:

  • OpenAI o1 API:支持函数调用、开发者消息、结构化输出和视觉处理能力。

  • 实时 API 更新:引入简化的 WebRTC 集成、GPT-4o 音频价格降低 60%,并推出更经济的 GPT-4o mini,定价仅为此前的十分之一。

  • 偏好微调:创新的模型定制技术,让开发者能更便捷地根据用户和开发者需求来调整模型表现。

  • Go 和 Java SDK:全新推出的开发工具包测试版。

OpenAI o1 API 发布

OpenAI o1 是我们精心打造的推理模型,能够以超高精度处理复杂的多步骤任务,现已向使用等级 5 的开发者开放。作为 OpenAI o1-preview 的进阶版本,开发者已经用它构建了众多智能应用,成功应用于客户服务优化、供应链决策和复杂金融趋势预测等领域。

o1 已完全具备生产环境所需的关键特性:

  • 函数调用:实现与外部数据和 API 的无缝对接。

  • 结构化输出:生成严格符合自定义 JSON Schema 的响应内容。

  • 开发者消息:支持为模型设定具体指令或上下文,包括语气、风格等行为指南。

  • 视觉能力:具备图像推理能力,为科研、制造、编程等需要视觉输入的领域开启新的可能。

  • 更低延迟:相比 o1-preview,处理同等请求时平均节省 60% 的推理令牌。

  • 精细控制:通过 reasoning_effort API 参数调节模型的思考时长。

今天发布的 o1 快照版本 o1-2024-12-17 是对两周前 ChatGPT 版本的全面升级,根据用户反馈优化了多个方面的表现,同时保持了我们在 o1 系统卡片 中展示的前沿能力。我们也将同步更新 ChatGPT 中的版本(详见模型发布说明)。以下评估结果反映了这个新版本的实际性能,为开发者提供最新的参考基准。

o1-2024-12-17 在多个基准测试中创下新纪录,显著提升了性能和成本效益:

类别 评估项目 o1-2024-12-17 o1-preview
通用能力 GPQA diamond 75.7 73.3
  MMLU (pass @1) 91.8 90.8
编程 SWE-bench Verified 48.9 41.3
  LiveCodeBench 76.6 52.3
数学 MATH (pass @1) 96.4 85.5
  AIME 2024 (pass @1) 79.2 42.0
  MGSM (pass @1) 89.3 90.8
视觉 MMMU (pass @1) 77.3
  MathVista (pass @1) 71.0
事实准确性 SimpleQA 42.6 42.4
代理能力 TAU-bench (零售) 73.5
  TAU-bench (航空) 54.2

模型在不同指标上的评估准确率

此外,o1-2024-12-17 在函数调用和结构化输出测试中的表现明显优于 gpt-4o。

我们正在逐步扩大访问范围,同时致力于向更多使用等级开放并提升速率限制。开发者可查看 API 文档 开始使用。

实时 API 改进

实时 API 让开发者能够打造低延迟、自然流畅的对话体验。它特别适合开发语音助手、实时翻译工具、虚拟导师、互动客服系统,甚至是定制的虚拟圣诞老人。今天的更新针对开发者最迫切的需求进行了优化:提供直接的 WebRTC 集成、降低使用成本、增强响应控制能力。

WebRTC 支持

我们为实时 API 引入了 WebRTC 支持。作为一个开放标准,WebRTC 能帮助开发者更轻松地在各种平台上构建和扩展实时语音产品——无论是浏览器应用、移动客户端、物联网设备,还是服务器间直接通信。

我们的 WebRTC 集成专门针对实际网络环境进行了优化,即使在网络条件不稳定时也能保持流畅的交互体验。它自动处理音频编码、流传输、噪声抑制和拥塞控制等关键问题。

借助 WebRTC,开发者现在只需几行 Javascript 代码即可添加实时功能:

1
2
3
4
5
6
7
8
9
10
11
12
async function createRealtimeSession(localStream, remoteAudioEl, token) {
    const pc = new RTCPeerConnection();
    pc.ontrack = e => remoteAudioEl.srcObject = e.streams[0];
    pc.addTrack(localStream.getTracks()[0]);
    const offer = await pc.createOffer();
    await pc.setLocalDescription(offer);
    const headers = { Authorization: `Bearer ${token}`, 'Content-Type': 'application/sdp' };
    const opts = { method: 'POST', body: offer.sdp, headers };
    const resp = await fetch('https://api.openai.com/v1/realtime', opts);
    await pc.setRemoteDescription({ type: 'answer', sdp: await resp.text() });
    return pc;
}

更多 WebRTC 集成详情,请参阅 API 文档

GPT-4o 和 GPT-4o mini 实时版本价格调整

我们在实时 API 测试版中推出了 gpt-4o-realtime-preview-2024-12-17,提供更优质的语音质量和更可靠的输入识别(特别是数字识别),同时大幅降低了使用成本。得益于效率提升,我们将音频令牌价格下调 60%,输入价格降至每百万令牌 40 美元,输出价格降至每百万令牌 80 美元。缓存音频输入成本更是降低了 87.5%,仅需每百万令牌 2.50 美元。

同时,我们还将 GPT-4o mini 引入实时 API 测试版,版本号为 gpt-4o-mini-realtime-preview-2024-12-17。作为我们最具性价比的小型模型,GPT-4o mini 为实时 API 带来了与 GPT-4o 相当的语音体验。其定价更为经济:音频服务每百万输入令牌 10 美元,输出令牌 20 美元;文本服务每百万输入令牌 0.60 美元,输出令牌 2.40 美元;缓存的音频和文本均为每百万令牌 0.30 美元。

这些版本同时在实时 API聊天补全 API 中提供,对应版本号为 gpt-4o-audio-preview-2024-12-17gpt-4o-mini-audio-preview-2024-12-17

更精细的响应控制

为帮助开发者打造卓越的语音交互体验,我们为实时 API 推出了以下功能:

  • 并发带外响应:支持在不干扰用户语音交互的情况下执行内容审核或分类等后台任务。

  • 自定义输入上下文:精确控制将哪些对话内容作为模型输入。例如,只对用户最新的发言进行审核,或重用历史响应而不影响当前会话状态。

  • 灵活的响应时机:利用服务器端语音活动检测(VAD)实现更精准的控制。比如,在触发语音回复前,先收集必要的用户信息并添加到模型上下文中。

  • 更长会话时间:最大会话时长从 15 分钟延长至 30 分钟。

偏好微调

微调 API 现已支持偏好微调,让开发者能够根据具体需求轻松定制模型行为。这项技术采用直接偏好优化(DPO)方法,通过比较模型响应对来训练模型识别优选和非优选输出。相比固定目标学习,这种基于对比的学习方式特别适合语气、风格和创造性要求较高的主观任务。

偏好微调与传统的监督式微调有以下关键区别:

  监督式微调 (SFT) 偏好微调 (PFT)
目标 通过复制标准答案训练模型生成准确输出 通过强化优选响应并抑制非优选响应来优化模型行为
训练数据 标准的输入输出对 通过人工评估、A/B 测试或合成数据生成的优选与非优选响应对
应用场景 适合有明确正确答案的任务,如代码格式化等需要严格准确性的场合 适合响应质量具有主观性的任务,如创意写作或文本摘要

我们已与多个可信伙伴开展了偏好微调测试,收获了令人鼓舞的成果。例如,Rogo AI 正在开发面向金融分析师的 AI 助手,可将复杂查询分解为多个子查询。使用其专业构建的 Rogo-Golden 基准测试,他们发现相比监督式微调在处理非常规查询时的局限(如无法在”公司 X 增长多快”这类查询中关注 ARR 等关键指标),偏好微调很好地解决了这些问题,将准确率从基础模型的 75% 提升到超过 80%。

偏好微调功能今日起首先在 gpt-4o-2024-08-06 上线,随后将很快支持 gpt-4o-mini-2024-07-18。该功能采用与监督式微调相同的训练令牌定价,我们的最新模型支持将于明年初推出。详情请参阅 API 文档中的微调指南

Go 和 Java SDK 测试版

最后,我们推出了两个全新的官方 SDK:GoJava 测试版,作为对现有 Python、Node.js 和 .NET 官方库的补充。我们的目标是让 OpenAI API 在各种编程语言中都能轻松使用。

Go 语言以其静态类型系统著称,特别适合开发并发应用和构建可扩展的 API 及后端系统。OpenAI Go SDK 让开发者能够在 Go 代码中轻松调用 OpenAI 模型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
client := openai.NewClient()
ctx := context.Background()
prompt := "Write me a haiku about Golang."

completion, err := client.Chat.Completions.New(
ctx, 
openai.ChatCompletionNewParams{
    Messages: openai.F(
      []openai.ChatCompletionMessageParamUnion{
        openai.UserMessage(prompt),
      },
    ),
    Model: openai.F(openai.ChatModelGPT4o),
},)

更多关于 Go SDK 的信息,请查看 GitHub 上的 README

Java 作为企业软件开发的主力语言,凭借其强大的类型系统和丰富的开源生态而广受欢迎。OpenAI Java SDK 提供了类型化的请求和响应对象,以及便捷的 API 请求管理工具:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
OpenAIClient client = OpenAIOkHttpClient.fromEnv();

ChatCompletionCreateParams params = ChatCompletionCreateParams
    .builder()
    .message(List.of(
        ChatCompletionMessageParam.ofChatCompletionUserMessageParam(
            ChatCompletionUserMessageParam
            .builder()
            .role(ChatCompletionUserMessageParam.Role.USER)
            .content(
                ChatCompletionUserMessageParam.Content.ofTextContent(
                    "What is the origin of Java's Duke mascot?"
                )
            )
            .build()
        )
    ))
    .model(ChatModel.O1_PREVIEW)
    .build();

ChatCompletion chatCompletion = client.chat().completions().create(params);

更多关于 Java SDK 的信息,请查看 GitHub 上的 README

结语

我们热切期待看到开发者们利用这些新功能打造的创新应用——可能是突破性的语音应用、个性化定制模型,或是开创新领域的智能代理。我们的 API 文档已提供了 o1实时 APIWebRTC 集成偏好微调的完整指南,欢迎即刻开始探索和实验。

如有任何疑问,欢迎访问 OpenAI 开发者论坛与我们的团队交流。

作者

OpenAI

本文由作者按照 CC BY 4.0 进行授权