ChatGPT-API:收費機制與聊天模型API
7 min readJun 2, 2024
本篇記錄使用ChatGPT的API收費規則與前置作業,並記錄用postman打api的json格式與各屬性意義。
前置作業
申請API 金鑰
到右邊網址進行申請:https://platform.openai.com/api-keys,到時候呼叫API會需要用到。
收費規則:https://platform.openai.com/settings/organization/limits
1. Token Limits :
- TPM (Tokens Per Minute):每分鐘可使用的token數上限。例如,gpt-3.5-turbo 模型的限制為 40,000 TPM,意味著每分鐘最多可用40,000個字元。
- 「代幣」(token)是指用於處理(輸入)和生成(回答)文本的基本單位。
例如,一個句子「Hello, world!」可以被分解為以下代幣:「Hello」、「,」、「world」和「!」。在使用 API 時,這四個代幣將會計入代幣使用量。
2. Request and Other Limits (請求和其他限制):
- RPM (Requests Per Minute):每分鐘可發送的最大請求數。例如,這裡的每個模型都設定為 3 RPM,即每分鐘最多可以發送3次請求。
- RPD (Requests Per Day):每天可以發送的最大請求數。例如,200 RPD 表示一天之內最多可以發送200次請求。
3. Batch Queue Limits (批次隊列限制):
- TPD (Tokens Per Day):每天可以使用的最大代幣數。例如,對於gpt-3.5-turbo模型,每天的代幣使用限制為200,000 TPD。
這些限制是為了確保系統的穩定性和公平性,防止單一用戶過度佔用資源。
費用表:https://platform.openai.com/usage
可以查詢自己的用量。
配額:https://platform.openai.com/settings/organization/billing/overview
早期如果是剛申請的帳號,會送3個月的free等級,如果沒用完超過三個月會自動歸零。
使用上限設定:https://platform.openai.com/usage
充值後不一定可以使用API。
- 因為如果超在上限設定頁面的每月預算(Set a monthly budget),就算有餘額也不能使用API。
- OpenAI 的API有日配額和月配額的限制,也就是前面提到的收費規則。
聊天API
文件網址:https://platform.openai.com/docs/api-reference/chat
Request Json:
{
"model": "gpt-3.5-turbo-0125",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "7+9="
}
]
}
model:語言模型的版本,會決定聊天回答的準確性及收費。
role:在 OpenAI API 中,role
是用於指定消息的發送者角色,並對聊天行為產生影響。在您提供的請求體中,有三種角色:system
、user
、和assistant
。每個角色在對話中擔任不同的功能:
- system:此角色用於設定對話的背景或者提供模型執行的特定指令。例如,它可以用來告訴模型它是一個有幫助的助手。這有助於引導模型的回答風格和行為。如果在將”content”改為 “You are a helpful Java engineer.”,可以讓模型在回應時,採用Java工程師的角度進行回應。
- user:代表真實用戶的輸入。當設置為
user
時,消息內容應該是來自實際使用者的查詢或請求,模型根據這些用戶的輸入來生成回應。 - assistant:此角色用於模型生成的回答,基於
user
角色提供的查詢或請求。
Response Json:
{
"id": "chatcmpl-9VfotWlJwcCJTa3miJc8YdczvCCE2",
"object": "chat.completion",
"created": 1717335951,
"model": "gpt-3.5-turbo-0125",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "7 + 9 = 16"
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 21,
"completion_tokens": 7,
"total_tokens": 28
},
"system_fingerprint": null
}
- id: “chatcmpl-9VfO3txElj8Ohf3LKLoVlrEVeISPf” — 這是這個特定請求的唯一識別碼。它有助於追踪和參考特定的請求。
- object: “chat.completion” — 這表示物件的類型,在這個案例中是一個聊天完成。這表明該響應是對話提示的結果。
- created: 1717334287 — 這是一個 UNIX 時間戳,表明這個請求是何時被創建的。您可以將這個時間戳轉換成常見的日期和時間格式來獲得更具體的時間信息。
- model: “gpt-3.5-turbo-0125” — 這表示生成此回應的模型版本。”gpt-3.5-turbo-0125" 是指定的模型,每個版本可能會根據訓練和功能有所不同。
- choices: 這是一個包含生成的回應選項的列表。在這個例子中,列表中只有一個選項:
- index: 0 — 這是選項在列表中的索引。
- message: 包含 “role” 和 “content”:
- role: “assistant” — 表示這是助理的回應。
- content: “7 + 9 = 16” — 助理提供的答案內容。
- logprobs: null — 這裡為 null,表明沒有提供關於該回應的對數概率信息。這個屬性主要是提供了與生成的文本相關的概率數據,這可以用於深入了解模型如何在給定上下文中做出特定選擇,也可以用於分析和改進模型的行為。
- finish_reason:
lstop
— 表明生成過程為何結束,這裡是因為到達了終止條件。如果是length
如果達到請求中指定的最大令牌數,content_filter
如果由於內容過濾器中的標誌而省略內容。
6. usage: 描述了請求中使用的token數量:
- prompt_tokens: 21 — 表明提示中使用了21個token。
- completion_tokens: 7 — 表明完成中使用了7個token。
- total_tokens: 28–本次總共使用了28個token。