OpenAI 發(fā)布 o1 及開發(fā)者新工具:模型升級、實時 API 優(yōu)化、偏好微調(diào)等重磅更新
OpenAI 12天發(fā)布會Day9, 今日宣布推出一系列針對開發(fā)者的強大模型、全新定制工具以及性能、靈活性和成本效益的升級,旨在助力開發(fā)者構(gòu)建更智能、更強大的 AI 應(yīng)用。本次更新涵蓋以下關(guān)鍵內(nèi)容:
1. API 中的 OpenAI o1
OpenAI o1 模型正式在 API 中向 5 級使用用戶開放。作為 OpenAI o1-preview 的繼任者,o1 模型旨在處理復(fù)雜的、多步驟任務(wù),并提供更高的準(zhǔn)確性。該模型具備以下關(guān)鍵特性:
- ? 函數(shù)調(diào)用: 無縫連接 o1 模型與外部數(shù)據(jù)和 API。
- ? 結(jié)構(gòu)化輸出: 生成可靠地遵循自定義 JSON Schema 的響應(yīng)。
- ? 開發(fā)者消息: 允許開發(fā)者指定模型的指令或上下文,例如定義語氣、風(fēng)格和其他行為指導(dǎo)。
- ? 視覺能力: 能夠理解圖像,為科學(xué)、制造或編碼等需要視覺輸入的領(lǐng)域解鎖更多應(yīng)用。
- ? 更低延遲: 針對給定請求,o1 模型平均使用的推理 Token 比 o1-preview 少 60%。
- ? 推理力度參數(shù): 新增
reasoning_effort
API 參數(shù),允許開發(fā)者控制模型在回答問題前的思考時間
本次發(fā)布的 o1-2024-12-17 版本是兩周前在 ChatGPT 中發(fā)布的模型的全新后訓(xùn)練版本。它在基于用戶反饋的模型行為方面進行了改進,同時保持了在 o1 系統(tǒng)卡片中評估的前沿能力。此外,ChatGPT 中的 o1 模型也同步更新至此版本。
在多個基準(zhǔn)測試中,o1-2024-12-17 取得了最新的技術(shù)水平,顯著提高了成本效益和性能。具體數(shù)據(jù)如下:
類別 | 評估指標(biāo) | 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 | |
數(shù)學(xué) | 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 在函數(shù)調(diào)用和結(jié)構(gòu)化輸出方面顯著優(yōu)于 gpt-4o
OpenAI 將逐步增加模型的訪問權(quán)限,同時努力擴展訪問范圍至其他使用級別并提高速率限制。
2. 實時 API 改進
實時 API 旨在幫助開發(fā)者創(chuàng)建低延遲、自然的對話體驗,適用于語音助手、實時翻譯工具、虛擬導(dǎo)師等應(yīng)用場景。本次更新重點包括:
WebRTC 支持: 引入 WebRTC 支持,簡化跨平臺實時語音產(chǎn)品的構(gòu)建和擴展。WebRTC 負(fù)責(zé)處理音頻編碼、流式傳輸、噪聲抑制和擁塞控制。以下是一個使用 JavaScript 集成 WebRTC 的示例代碼:
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;
}
降低 GPT-4o 和 GPT-4o mini 的實時快照成本: 發(fā)布 gpt-4o-realtime-preview-2024-12-17,語音質(zhì)量更高,輸入更可靠,成本降低 60%。同時,推出 GPT-4o mini 的實時版本 gpt-4o-mini-realtime-preview-2024-12-17,以更低的成本提供相同的語音體驗
更強大的響應(yīng)控制:
- ? 并發(fā)帶外響應(yīng): 支持后臺任務(wù),例如內(nèi)容審核或分類,而不會中斷用戶的語音交互
- ? 自定義輸入上下文: 允許開發(fā)者指定哪些會話項作為模型輸入
- ? 受控響應(yīng)時序: 支持使用服務(wù)器端語音活動檢測(VAD),并手動觸發(fā)語音回復(fù),從而更好地控制時序和準(zhǔn)確性
- ? 最大會話時長: 從 15 分鐘增加到 30 分鐘
3. 偏好微調(diào)
微調(diào) API 現(xiàn)在支持偏好微調(diào),使開發(fā)者可以根據(jù)用戶和開發(fā)者的偏好定制模型。該方法使用直接偏好優(yōu)化(DPO)來比較模型響應(yīng)對,教會模型區(qū)分偏好和非偏好輸出。偏好微調(diào)在語氣、風(fēng)格和創(chuàng)造性等主觀任務(wù)上尤為有效。
與監(jiān)督微調(diào)相比,偏好微調(diào)具有以下差異:
監(jiān)督微調(diào) (SFT) | 偏好微調(diào) (PFT) | |
目標(biāo) | 鼓勵模型生成正確的輸出 | 優(yōu)化模型以傾向期望的行為 |
通過復(fù)制標(biāo)記的輸出 | 通過加強偏好響應(yīng)并降低非偏好響應(yīng)的可能性 | |
訓(xùn)練數(shù)據(jù) | 確切的輸入和輸出對 | 通過人工注釋、A/B 測試或合成數(shù)據(jù)生成的偏好和非偏好模型輸出對 |
用例 | 易于準(zhǔn)備理想輸出的任務(wù),例如自定義代碼格式和嚴(yán)格的正確性 | 對于“更好”的響應(yīng)是主觀的,例如創(chuàng)意寫作或總結(jié)的任務(wù)更有效 |
偏好微調(diào)已開始與合作伙伴進行測試,并已取得令人鼓舞的成果。偏好微調(diào)將首先應(yīng)用于 gpt-4o-2024-08-06,并將很快支持 gpt-4o-mini-2024-07-18。
4. Go 和 Java SDK
OpenAI 還推出了兩個新的官方 SDK,分別針對 Go 和 Java,以完善現(xiàn)有的 Python、Node.js 和 .NET 庫。
Go SDK: 適用于構(gòu)建可擴展的 API 和后端系統(tǒng)。以下是 Go SDK 的示例代碼:
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),
},
)
Java SDK: 則適用于企業(yè)軟件開發(fā),提供類型化的請求和響應(yīng)對象,以及管理 API 請求的實用工具。以下是 Java SDK 的示例代碼:
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);
總結(jié)
OpenAI 的此次更新為開發(fā)者帶來了強大的工具和模型,旨在推動 AI 應(yīng)用的創(chuàng)新和發(fā)展。無論你是構(gòu)建新的語音應(yīng)用、微調(diào)模型還是開發(fā)前沿的代理應(yīng)用,這些更新都將為你帶來更大的靈活性和效率。建議開發(fā)者查閱 API 文檔,開始探索和實驗這些新功能