
3大AI語言大模型API基礎參數、核心性能的區別:ChatGPT 4o、百度千帆 ERNIE 4.0、阿里通義千問 Max
管理 OpenAI API 使用成本的第一步是隨時了解您的使用情況。OpenAI 提供的儀表板在 使用 選項卡下,詳細展示了每日 API 調用次數、消耗的代幣(tokens)以及相關成本。通過定期監控這些數據,您可以識別潛在的浪費并采取措施減少不必要的開支。
了解代幣的使用情況是控制成本的關鍵。以下是一個 Python 示例代碼,用于計算輸入文本的代幣數量:
import tiktoken
def get_number_of_tokens(prompt_text, model_name):
# 獲取模型的編碼方式
encoding = tiktoken.encoding_for_model('gpt-4o-mini')
# 將文本編碼為代幣列表
list_of_tokens = encoding.encode(prompt_text)
return len(list_of_tokens)
函數調用
使用 OpenAI API 時,所有函數名稱、描述和額外參數都會計入輸入代幣。如果使用多個函數,累積的代幣使用量可能會顯著增加。OpenAI 提供了 代碼示例 來幫助統計這些輸入代幣。
內存機制
像 LangChain 這樣的框架通常內置內存機制,會收集先前調用的上下文信息。這些上下文雖然有助于提高模型的連貫性,但也會增加代幣使用量。為了控制成本,可以通過 緩沖、摘要 或 選擇性保留 等策略來管理內存。
推理代幣
新一代模型(如 gpt-4o 和 gpt-4o-mini)會使用內部推理代幣。這些代幣雖然不會出現在用戶的輸出中,但仍然會計入成本。
API 調用的使用數據可以提供詳細的成本分解,包括輸入代幣、緩存代幣和推理代幣。以下是一個示例代碼:
def create_chat_completion_object(query):
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": f"{query}"}
],
)
return response
# 示例調用
chat_object = create_chat_completion_object("What is the capital of India?")
print('Response:', chat_object.choices[0].message.content)
print('Usage:', chat_object.usage)
輸出示例:
Response: The capital of India is New Delhi.
Usage: CompletionUsage(completion_tokens=8, prompt_tokens=24, total_tokens=32)
緩存是一種強大的功能,可以優化涉及大上下文的 API 調用。例如,當需要對一篇長文進行多次提問時,可以通過緩存復用初始上下文,從而降低成本。
注意事項:
更多詳情請參考 OpenAI 的 Prompt Caching 指南。
批處理允許您同時發送多個請求,從而顯著降低每次請求的成本。OpenAI 對批處理任務的輸入和輸出代幣提供 50% 的折扣。
批量嵌入(Batch Embedding)
適用于大規模數據的高效處理。具體優化指南可以參考 批量嵌入教程。
批量聊天請求(Batch Chat Requests)
使用 OpenAI 的框架,可以高效處理批量聊天任務。更多信息請參考 OpenAI 的 批處理指南。
在處理大文本時,許多信息可能是無關的,直接使用會增加成本并降低性能。以下是兩種常見的上下文過濾策略:
基于嵌入的過濾
基于廉價模型的判斷過濾
輸出代幣的成本是輸入代幣的三倍,因此減少輸出代幣是優化成本的關鍵。通過結構化輸出,可以確保 API 僅生成所需的信息,從而避免不必要的代幣浪費。
分類/驗證任務
當需要對數據進行分類或驗證時,結構化輸出可以減少冗余代幣。
數據提取
如果目標是提取特定信息(如數值),結構化輸出可以確保僅返回所需數據。
模型鏈式調用
在多步驟流程中,結構化輸出可以確保輸出的兼容性并減少開銷。
以下是一個使用結構化輸出的示例代碼:
from pydantic import BaseModel
class custom_output(BaseModel):
a: list[bool]
completion = client.beta.chat.completions.parse(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You will receive a list of animals, for each animal return True if they are a mammal, else return False, output as a list of booleans nothing else."},
{"role": "user", "content": "Lion, Eagle, Dolphin, Crocodile, Elephant, Snake, Kangaroo, Frog, Tiger, Penguin, Whale, Shark, Giraffe, Octopus, Bear, Turtle, Deer, Lizard, Rabbit, Butterfly"}
],
response_format=custom_output,
)
result = completion.choices[0].message.parsed
print(result.a)
print(completion.usage)
輸出示例:
[True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False]
CompletionUsage(completion_tokens=24, prompt_tokens=138, total_tokens=162)
通過以上策略,您可以有效地管理 OpenAI API 的使用成本,同時確保實現預期的功能和性能。
原文鏈接: https://medium.com/@mikehpg/controlling-cost-when-using-openai-api-fd5a038fa391
3大AI語言大模型API基礎參數、核心性能的區別:ChatGPT 4o、百度千帆 ERNIE 4.0、阿里通義千問 Max
大模型API亂斗,價格對比:Grok3、deepseek R1、ChatGPT 4o
FastAPI 異步編程:提升 API 性能
2025最強AI大模型分析:Gemini 2.5 Pro vs Claude 3.7 Sonnet API評測
如何獲取通義千問 API Key 密鑰(分步指南)
一文講透MCP的原理及實踐
如何使用 node.js 和 express 創建 rest api
MongoDB 基本使用:工具、API、Spring 集成
Google Gemini API使用教程:提升SEO的終極指南