OpenAI發(fā)布ChatGPT函數(shù)調用和API更新
2023年6月13日,OpenAI針對開發(fā)者調用的API做了重大更新,包括更易操控的 API模型、函數(shù)調用功能、更長的上下文和更低的價格。
在今年早些時候發(fā)布gpt-3.5-turbo,gpt-4在短短幾個月內,已經看到開發(fā)人員在這些模型之上構建了令人難以置信的應用程序。
今天,我們將跟進一些令人興奮的更新:
- Chat Completions API 中的新函數(shù)調用功能
- gpt-4和的更新和更易于操縱的版本gpt-3.5-turbo
- 新的 16k 上下文版本gpt-3.5-turbo(與標準 4k 版本相比)
- 我們最先進的嵌入模型的成本降低了 75%
- 輸入令牌的成本降低,gpt-3.5-turbo模型降低了25%
- gpt-3.5-turbo-0301和gpt-4-0314模型宣布棄用時間表
所有這些模型都具有我們在 3 月 1 日推出的相同的數(shù)據(jù)隱私和安全保證——客戶擁有根據(jù)他們的請求生成的所有輸出,他們的 API 數(shù)據(jù)不會用于訓練。
模型更新相關
GPT-4
- 新增了gpt-4-0613模型,這個是一個帶有函數(shù)調用的更新和改進模型。
- gpt-4-32k-0613包括與 相同的改進gpt-4-0613,以及擴展的上下文長度,以便更好地理解更大的文本。
- 通過這些更新,我們將在未來幾周內邀請候補名單中的更多人試用 GPT-4,目的是使用此模型完全刪除候補名單。感謝所有耐心等待的人,我們很高興看到您使用 GPT-4 構建的內容!
GPT-3.5 Turbo
- gpt-3.5-turbo-0613包括與 GPT-4 相同的函數(shù)調用以及通過系統(tǒng)消息更可靠的可操縱性,這兩個功能允許開發(fā)人員更有效地指導模型的響應。
- gpt-3.5-turbo-16k和gpt-3.5-turbo以兩倍的價格提供4倍的上下文長度:每 1K 輸入令牌 0.003 美元和每 1K 輸出令牌 0.004 美元。16k 上下文意味著該模型現(xiàn)在可以在單個請求中支持約 20 頁文本。
模型棄用
今天,我們將開始對我們在三月份宣布的gpt-4和gpt-3.5-turbo的初始版本進行升級和棄用。使用穩(wěn)定模型名稱(gpt-3.5-turbo、gpt-4和gpt-4-32k)的應用將在6月27日自動升級到上述新模型。為了比較版本之間的模型性能,我們的 Evals 庫支持公開和私有評估,以顯示模型變化對您的用例的影響。
需要更多時間進行過渡的開發(fā)者可以通過在API請求的 'model' 參數(shù)中指定gpt-3.5-turbo-0301、gpt-4-0314或gpt-4-32k-0314,繼續(xù)使用舊模型。這些舊模型將一直可以使用到9月13日,之后指定這些模型名稱的請求將會失敗。您可以通過我們的模型棄用頁面來跟蹤模型棄用的最新信息。這是對這些模型的第一次更新,因此,我們非常歡迎開發(fā)者提供反饋,以幫助我們確保平穩(wěn)過渡。
函數(shù)調用
gpt-4-0613跟gpt-3.5-turbo-0613模型支持函數(shù)調用,讓模型智能地選擇輸出包含參數(shù)的 JSON 對象來調用這些函數(shù)。這是一種更可靠地將 GPT 功能與外部工具和 API 連接的新方法。
這些模型已經過微調,可以檢測何時需要調用函數(shù)(取決于用戶的輸入)并使用符合函數(shù)簽名的 JSON 進行響應。函數(shù)調用允許開發(fā)人員更可靠地從模型中獲取結構化數(shù)據(jù)。例如,開發(fā)人員可以:
創(chuàng)建通過調用外部工具(例如 ChatGPT 插件)來回答問題的聊天機器人
- 將諸如“給 Anya 發(fā)電子郵件,看看她下周五是否想喝咖啡”之類的查詢轉換為函數(shù)調用
send_email(to: string, body: string)
- 例如:波士頓的天氣怎么樣?
get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')
從文本中提取結構化數(shù)據(jù)
定義一個名為 的函數(shù)extract_people_data(people: [{name: string, birthday: string, location: string}]),以提取維基百科文章中提到的所有人。
函數(shù)調用示例
調用OpenAI的API時,需要增加functions參數(shù),這個參數(shù)是json格式字符串。
curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
"model": "gpt-3.5-turbo-0613",
"messages": [
{"role": "user", "content": "What is the weather like in Boston?"}
],
"functions": [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
]
}'
OpenAI會返回一個Json字符串:
{
"id": "chatcmpl-123",
...
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"function_call": {
"name": "get_current_weather",
"arguments": "{ \"location\": \"Boston, MA\"}"
}
},
"finish_reason": "function_call"
}]
}
調用第三方接口,使用模型響應調用您的 API
curl https://weatherapi.com/...
響應:
{ "temperature": 22, "unit": "celsius", "description": "Sunny" }
將響應結果發(fā)送給OpenAI進行總結
這個時候我們看到messages中的數(shù)組元素變多了,增加了上下文,并且其中有role=function的對象,在content中帶上了上一步api返回的結果。
curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
"model": "gpt-3.5-turbo-0613",
"messages": [
{"role": "user", "content": "What is the weather like in Boston?"},
{"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston, MA\"}"}},
{"role": "function", "name": "get_current_weather", "content": "{\"temperature\": "22", \"unit\": \"celsius\", \"description\": \"Sunny\"}"}
],
"functions": [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
]
}'
OpenAI將響應發(fā)送回模型進行總結,返回了一句完整的話:波士頓目前天氣晴朗,氣溫為22攝氏度。
{
"id": "chatcmpl-123",
...
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "The weather in Boston is currently sunny with a temperature of 22 degrees Celsius.",
},
"finish_reason": "stop"
}]
}
函數(shù)調用相關開發(fā)文檔:
函數(shù)如何調用
https://platform.openai.com/docs/guides/gpt/function-calling
了解如何在簡單和高級用例中通過API使用函數(shù)調用
https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb
函數(shù)調用總結
自 ChatGPT 插件的 alpha 版本發(fā)布以來,我們學到了很多關于如何讓工具和語言模型安全地協(xié)同工作的知識。然而,仍然存在開放的研究問題。例如,概念驗證利用說明了來自工具輸出的不受信任的數(shù)據(jù)如何指示模型執(zhí)行意外操作。我們正在努力減輕這些和其他風險。開發(fā)人員可以通過僅使用來自可信工具的信息并在執(zhí)行具有現(xiàn)實世界影響的操作(例如發(fā)送電子郵件、在線發(fā)布或進行購買)之前包括用戶確認步驟來保護他們的應用程序。
函數(shù)調用其實跟網頁版的插件功能差不多,就是讓api調用有更多的擴展性,但是目前感覺調用還是比較麻煩的,查詢一個天氣功能要請求三次。
更低的價格
我們將繼續(xù)提高我們的系統(tǒng)效率,并將節(jié)省下來的資金轉嫁給開發(fā)人員,即日起生效。
嵌入
text-embedding-ada-002是我們最受歡迎的嵌入模型。今天,我們將成本降低 75% 至每 1K 代幣 0.0001 美元。
GPT-3.5 Turbo
-
gpt-3.5-turbo是我們最受歡迎的聊天模型,為數(shù)百萬用戶提供 ChatGPT 支持。今天,我們將 的輸入代幣成本降低了25%。開發(fā)人員現(xiàn)在可以以每1K輸入令牌0.0015美元和每1K輸出令牌0.002 美元的價格使用該模型,這相當于1美元大約700頁。
-
gpt-3.5-turbo-16k定價為每1K輸入代幣0.003 美元,每 1K 輸出代幣 0.004 美元。
開發(fā)者反饋是我們平臺發(fā)展的基石,我們將繼續(xù)根據(jù)我們聽到的建議進行改進。我們很高興看到開發(fā)人員如何在他們的應用程序中使用這些最新模型和新功能。
總結
以上就是OpenAI 2023年6月13日發(fā)布的更新內容,大家也可以去看原文:
https://openai.com/blog/function-calling-and-other-api-updates?ref=upstract.com
公眾號:楚少AI
ChatGPT手機版: https://ai004.com/

2023年6月13日,OpenAI針對開發(fā)者調用的API做了重大更新,包括更易操控的 API模型、函數(shù)調用功能、更長的上下文和更低的價格。
浙公網安備 33010602011771號