跳轉到主要內容
OpenAI ChatGPT 是一款非常強大的 AI 對話系統,只要輸入提示詞,就能在短短幾秒內生成流暢自然的回覆。ChatGPT 以其出色的語言理解和生成能力在業界獨樹一幟,如今,ChatGPT 早已在各個產業和領域廣泛應用,其影響力愈發顯著。無論是日常對話、創意寫作,還是專業諮詢、程式編寫,ChatGPT 都能提供令人驚嘆的智慧協助,極大地提高了人類的工作效率和創造力。 本文檔主要介紹 OpenAI Chat Completion API 操作的使用流程,利用它我們可以輕鬆使用官方 OpenAI ChatGPT 的對話功能。 平台接受的相容模型請求按該模型的輸入、輸出及快取用量計費。Chat Completions 的 prompt_tokens 包含快取 token,已回報的快取部分按對應快取價格結算;切換介面格式不會變成固定次數收費。費用以控制台目前模型價格和回應 usage.cost 為準。

GPT-6.1 Terra

使用 model: "gpt-6.1-terra" 選擇該模型。支援文字、圖像輸入和串流輸出;函數工具及結構化輸出請按本介面的參數格式呼叫。推理等級支援 low、medium、high、xhigh 和 max,建議從 reasoning_effort: "low" 開始;不支援 none 或 minimal。輸入超過 272,000 tokens 時適用長上下文價格,實際費用以控制台目前價格和回應中的用量為準。

GPT-6.1 Sol

使用 model: "gpt-6.1-sol" 選擇該模型。支援串流輸出、函數呼叫、結構化輸出和圖像輸入。首次開放的一週內,僅向已驗證的 ACE T1+ 持有者(至少 100,000 ACE)或獲授權使用者開放;具體開放時間以控制台存取提示為準。 推理等級支援 low、medium、high、xhigh 和 max,暫不支援 none 或 minimal。建議從 reasoning_effort: "low" 開始。輸入超過 272,000 tokens 時整次請求適用長上下文價格,費用以控制台目前價格為準。

申請流程

要使用 OpenAI Chat Completion API,首先到 Ace Data Cloud 控制台 取得您的 API Token,留作備用。 如果你尚未登入或註冊,會自動跳轉到登入頁面邀請你註冊和登入,完成後會自動返回目前頁面。 一個 API Token 即可呼叫平台所有服務,無需為每個服務個別申請。 首次申請會贈送免費額度,可免費體驗;額度不足時可在 控制台 儲值通用餘額。
📘 完整文件:OpenAI Chat Completion API →

基本使用

接下來就可以在介面上填寫對應的內容,如圖所示:

在第一次使用該介面時,我們至少需要填寫三個內容,一個是 authorization,直接在下拉列表裡面選擇即可。另一個參數是 model, model 就是我們選擇使用 OpenAI ChatGPT 官網模型類別,這裡我們主要有 20 種模型,詳情可以看我們提供的模型。最後一個參數是messages,messages是我們輸入的提問詞陣列,它是一個陣列,表示可以同時上傳多個提問詞,每個提問詞包含了 role 和 content,其中 role 表示提問者的角色,我們提供了三種身分,分別為 user 、assistant、system 。另一個 content 就是我們提問的具體內容。 同時您可以注意到右側有對應的呼叫程式碼生成,您可以複製程式碼直接執行,也可以直接點擊「Try」按鈕進行測試。 常用可選參數:
  • max_tokens:限制單次回覆的最大 token 數。
  • temperature:生成隨機性,0-2 之間,值越大越發散。
  • n:一次生成多少條候選回覆。
  • response_format:回傳格式設定。

呼叫之後,我們發現回傳結果如下:
回傳結果一共有多個欄位,介紹如下:
  • id,生成此次對話任務的 ID,用於唯一識別此次對話任務。
  • model ,選擇的 OpenAI ChatGPT 官網模型。
  • choices,ChatGPT 針對提問詞給予的回答資訊。
  • usage :針對本次問答對 token 的統計資訊。
其中 choices 是包含了 ChatGPT 的回答資訊,它裡面的 choices 是 ChatGPT,可以發現如圖所示。

可以看到,choices 裡面的 content 欄位包含了 ChatGPT 回覆的具體內容。

串流回應

該介面也支援串流回應,這對網頁串接十分有用,可以讓網頁實現逐字顯示效果。 如果想串流回傳回應,可以更改請求標頭裡面的 stream 參數,修改為 true。 修改如圖所示,不過呼叫程式碼需要有對應的更改才能支援串流回應。

將 stream 修改為 true 之後,API 將逐行回傳對應的 JSON 資料,在程式碼層面我們需要做相應的修改來取得逐行的結果。 Python 範例呼叫程式碼:
輸出效果如下:
可以看到,回應裡面有許多 data,data 裡面的 choices 即為最新的回答內容,與上文介紹的內容一致。choices 是新增的回答內容,您可以根據結果來串接到您的系統中。同時串流回應的結束是根據 data 的內容來判斷的,如果內容為 [DONE],則表示串流回應回答已經全部結束。回傳的 data 結果一共有多個欄位,介紹如下:
  • id,產生此次對話任務的 ID,用於唯一識別此次對話任務。
  • model ,選擇的 OpenAI ChatGPT 官網模型。
  • choices,ChatGPT 針對提問詞給予的回答資訊。
JavaScript 也是支援的,例如 Node.js 的串流呼叫程式碼如下:
Java 範例程式碼:
其他語言可以另外自行改寫,原理都是一樣的。

多輪對話

如果您想要串接多輪對話功能,需要對 messages 欄位上傳多個提問詞,多個提問詞的具體範例如下圖所示:

Python 範例呼叫程式碼:
透過上傳多個提問詞,就可以輕鬆實現多輪對話,可以得到如下回答:
可以看到,choices 包含的資訊與基本使用的內容是一致的,這個包含了 ChatGPT 針對多個對話進行回覆的具體內容,這樣就可以根據多個對話內容來回答對應的問題了。

串接 OpenAI-Python

OpenAI Chat Completion API 與官方 OpenAI 介面保持相容,可直接使用官方 SDK OpenAI-Python 串接,本文將簡要介紹使用方式。
  1. 首先需要建置本機 Python 環境,此過程可使用 Google 搜尋一下。
  2. 下載安裝開發環境,例如安裝 VSCode 編輯器。
  3. 設定 OpenAI 環境變數。
  • 在專案資料夾裡,建立一個名為 .env 的檔案,並儲存
  • .env 檔案內容:
sk-xxx 使用自己的 key 替換。OPENAI_BASE_URL 是存取 OpenAI 的代理介面。
  1. 安裝專案依賴的套件
Mac OS 中指令為:
  1. 建立範例原始碼檔案
假設我們建立了一個範例程式碼 index.py,具體內容如下:

聯網模型

gpt-3.5-browsing 和 gpt-4-browsing 模型與其他模型不同,它可以根據提問詞來進行聯網搜尋,並且將聯網搜尋的結果進行適當的調整回傳給你,本文將透過一個具體範例來示範聯網功能,接下來就可以在 OpenAI Chat Completion API 介面上填寫對應的內容,如圖所示:

同時您可以注意到右側有對應的呼叫程式碼產生,您可以複製程式碼直接執行,也可以直接點擊「Try」按鈕進行測試。

呼叫之後,我們發現回傳結果如下:
可以看到,choices 裡面的回答資訊是根據聯網查詢後得到的,並且也給出了相關的連結,choices 裡面的回答資訊要透過 markdown 語法進行渲染,這樣才能獲得最佳的體驗,最後這也體現出我們模型的聯網功能的強大優勢。

視覺模型

gpt-4o 是 OpenAI 開發的多模態大型語言模型,它在 GPT-4 的基礎上增加了視覺理解能力。這個模型可以同時處理文字和圖像輸入,實現了跨模態的理解和生成。 使用 gpt-4o 模型的文字處理與上文的基本使用內容是一致的,下面將簡要介紹一下如果使用模型的圖像處理能力。 使用 gpt-4o 模型的圖像處理能力主要是透過在原有的 content 內容基礎上新增一個 type 欄位,透過該欄位可以知道上傳的是文字還是圖片,從而使用 gpt-4o 模型的圖像處理能力,下面主要講述採用 Curl 和 Python 兩種方式來呼叫該功能。
  • Curl 指令碼方式
  • Python 指令碼方式
接著可以得到以下結果,結果中的欄位資訊與上文一致,具體如下:
可以看到回答的內容是基於圖片進行回答的,因此透過上述兩種方式可以輕鬆使用 gpt-4-vision 模型的文字和圖像處理能力。 除了 gpt-4o,還有一個成本更低的模型,叫做 gpt-4o-mini。gpt-4o-mini 是 OpenAI 開發的最新一代大型語言模型,它不僅回應速度快,同時價格也更便宜,也支援多模態。vision 功能的使用可參考上文 gpt-4o 模型的使用內容。

GPT-4o 繪圖模型

根據參考圖進行生圖

以下是根據一張圖片生成自訂風格圖片的範例,首先讓我們看一下我們輸入的圖片,如下圖所示: 可以看到參考圖是一張真人圖片,我們可以讓它變化成一種風格,例如讓它變成動漫風格的圖像,具體的請求範例如下:
範例結果:
其中 choices 裡的 message.content 就是生成的完整對話結果,圖片以 Markdown 格式包含在其中(圖片連結為臨時位址,請及時下載儲存)。可以看出生成的圖片確實是動漫風格的,具體如下圖所示:

純文字生圖

我們可以透過一個提示詞讓它生成圖片,並且以對話式的結果回傳給我們,以下我們以建立一張未來城市日落的圖片為範例,具體範例如下:
範例結果:
可以看到結果符合提示詞,具體如下所示:

多圖生一圖

我們還可以使用多張參考圖來生成一張圖,例如使用一張帥哥和咖啡圖,利用這兩張圖可以生成一張帥哥喝咖啡的圖,以下是具體的參考圖:

以下我們以生成男生舉著咖啡,並且馬上要喝的樣子為範例,具體範例如下:
範例結果:
可以看到,生成的結果確實是結合了兩張圖來生成的,下面是具體的結果:

錯誤處理

在呼叫 API 時,如果遇到錯誤,API 會回傳相應的錯誤代碼和資訊。例如:
  • 400 token_mismatched:錯誤的請求,可能是由於缺少或無效的參數。
  • 400 api_not_implemented:錯誤的請求,可能是由於缺少或無效的參數。
  • 401 invalid_token:未授權,無效或缺少授權權杖。
  • 429 too_many_requests:請求過多,您已超過速率限制。
  • 500 api_error:內部伺服器錯誤,伺服器上發生了問題。

錯誤回應範例

結論

透過本文檔,您已經瞭解如何使用 OpenAI Chat Completion API 輕鬆實現官方 OpenAI ChatGPT 的對話功能。希望本文檔能幫助您更好地串接和使用該 API。如有任何問題,請隨時聯絡我們的技術支援團隊。