OpenAI 函式呼叫與 API 更新

OpenAI 已為 gpt-4-0613gpt-3.5-turbo-0613 模型引入函式呼叫,透過生成結構化 JSON 輸出,使開發者能將 GPT 的能力與外部工具和 API 連接。此更新使模型能夠智慧地偵測何時需要呼叫函式,並產生符合特定函式簽名的引數。

函式呼叫功能

函式呼叫使開發者能夠從模型接收結構化資料,而非自然語言,這些資料可用於觸發外部動作或檢索資訊。模型已經過微調,能夠根據使用者輸入偵測函式呼叫的必要性,並回應與提供的 JSON Schema 相符的 JSON。

主要使用案例包括:

  • 外部工具整合: 透過呼叫外部工具建立聊天機器人來回答問題,例如將請求「Email Anya 看看她是否想要在下週五喝咖啡」轉換為 send_email(to: string, body: string) 呼叫。

  • 自然語言至 API/資料庫查詢: 將使用者查詢轉換為內部 API 呼叫或資料庫查詢。例如,「我這個月的前十大客戶是誰?」可以轉換為 get_customers_by_revenue(start_date: string, end_date: string, limit: int) 或透過 sql_query(query: string) 進行的 SQL 查詢。

  • 結構化資料擷取: 從文字中擷取特定資訊。例如,名為 extract_people_data(people: [{name: string, birthday: string, location: string}]) 的函式可用來從維基百科文章中擷取人物資料。

技術實作

這些功能透過 /v1/chat/completions 端點的新參數 functionsfunction_call 啟用。開發者可使用 JSON Schema 向模型描述他們的函式,並可選擇性地強制模型呼叫特定函式。

範例工作流程

  1. OpenAI API 呼叫: 開發者使用使用者的輸入和可用函式列表來呼叫模型。
  2. 第三方 API 呼叫: 開發者使用模型的 JSON 回應來執行對第三方 API 或內部工具的呼叫。
  3. OpenAI API 回應: 開發者將工具輸出的結果發送回模型,以為使用者產生最終的自然語言摘要。

安全考量

OpenAI 指出,雖然函式呼叫提升了工具整合,但安全風險仍然存在。一個概念證明的 exploit 已示範,來自工具輸出的不可信資料可能會指示模型執行非預期的動作。

為降低這些風險,建議開發者:

  • 僅從可信工具消費資訊。
  • 在執行對現實世界有影響的動作之前(例如購買或發送電子郵件),實施使用者確認步驟。

模型版本控制與穩定性

OpenAI 根據客戶回饋,已將 gpt-3.5-turbo-0301gpt-4-0314gpt-4-32k-0314 的支援延長至至少 2024 年 6 月 13 日。

為確保應用程式穩定性,OpenAI 允許 API 使用者釘選特定模型版本(例如使用 gpt-4-0314 而非通用的 gpt-4 指標)。每個釘選的模型都是穩定的,且不會進行影響輸出的變更。OpenAI 也鼓勵開發者為 OpenAI Evals 庫做出貢獻,以回報新模型版本的不足之處。

Sources