
3大AI語(yǔ)言大模型API基礎(chǔ)參數(shù)、核心性能的區(qū)別:ChatGPT 4o、百度千帆 ERNIE 4.0、阿里通義千問 Max
管理 OpenAI API 使用成本的第一步是隨時(shí)了解您的使用情況。OpenAI 提供的儀表板在 使用 選項(xiàng)卡下,詳細(xì)展示了每日 API 調(diào)用次數(shù)、消耗的代幣(tokens)以及相關(guān)成本。通過定期監(jiān)控這些數(shù)據(jù),您可以識(shí)別潛在的浪費(fèi)并采取措施減少不必要的開支。
了解代幣的使用情況是控制成本的關(guān)鍵。以下是一個(gè) Python 示例代碼,用于計(jì)算輸入文本的代幣數(shù)量:
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)
函數(shù)調(diào)用
使用 OpenAI API 時(shí),所有函數(shù)名稱、描述和額外參數(shù)都會(huì)計(jì)入輸入代幣。如果使用多個(gè)函數(shù),累積的代幣使用量可能會(huì)顯著增加。OpenAI 提供了 代碼示例 來幫助統(tǒng)計(jì)這些輸入代幣。
內(nèi)存機(jī)制
像 LangChain 這樣的框架通常內(nèi)置內(nèi)存機(jī)制,會(huì)收集先前調(diào)用的上下文信息。這些上下文雖然有助于提高模型的連貫性,但也會(huì)增加代幣使用量。為了控制成本,可以通過 緩沖、摘要 或 選擇性保留 等策略來管理內(nèi)存。
推理代幣
新一代模型(如 gpt-4o 和 gpt-4o-mini)會(huì)使用內(nèi)部推理代幣。這些代幣雖然不會(huì)出現(xiàn)在用戶的輸出中,但仍然會(huì)計(jì)入成本。
API 調(diào)用的使用數(shù)據(jù)可以提供詳細(xì)的成本分解,包括輸入代幣、緩存代幣和推理代幣。以下是一個(gè)示例代碼:
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
# 示例調(diào)用
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)
緩存是一種強(qiáng)大的功能,可以優(yōu)化涉及大上下文的 API 調(diào)用。例如,當(dāng)需要對(duì)一篇長(zhǎng)文進(jìn)行多次提問時(shí),可以通過緩存復(fù)用初始上下文,從而降低成本。
注意事項(xiàng):
更多詳情請(qǐng)參考 OpenAI 的 Prompt Caching 指南。
批處理允許您同時(shí)發(fā)送多個(gè)請(qǐng)求,從而顯著降低每次請(qǐng)求的成本。OpenAI 對(duì)批處理任務(wù)的輸入和輸出代幣提供 50% 的折扣。
批量嵌入(Batch Embedding)
適用于大規(guī)模數(shù)據(jù)的高效處理。具體優(yōu)化指南可以參考 批量嵌入教程。
批量聊天請(qǐng)求(Batch Chat Requests)
使用 OpenAI 的框架,可以高效處理批量聊天任務(wù)。更多信息請(qǐng)參考 OpenAI 的 批處理指南。
在處理大文本時(shí),許多信息可能是無關(guān)的,直接使用會(huì)增加成本并降低性能。以下是兩種常見的上下文過濾策略:
基于嵌入的過濾
基于廉價(jià)模型的判斷過濾
輸出代幣的成本是輸入代幣的三倍,因此減少輸出代幣是優(yōu)化成本的關(guān)鍵。通過結(jié)構(gòu)化輸出,可以確保 API 僅生成所需的信息,從而避免不必要的代幣浪費(fèi)。
分類/驗(yàn)證任務(wù)
當(dāng)需要對(duì)數(shù)據(jù)進(jìn)行分類或驗(yàn)證時(shí),結(jié)構(gòu)化輸出可以減少冗余代幣。
數(shù)據(jù)提取
如果目標(biāo)是提取特定信息(如數(shù)值),結(jié)構(gòu)化輸出可以確保僅返回所需數(shù)據(jù)。
模型鏈?zhǔn)秸{(diào)用
在多步驟流程中,結(jié)構(gòu)化輸出可以確保輸出的兼容性并減少開銷。
以下是一個(gè)使用結(jié)構(gòu)化輸出的示例代碼:
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 的使用成本,同時(shí)確保實(shí)現(xiàn)預(yù)期的功能和性能。
原文鏈接: https://medium.com/@mikehpg/controlling-cost-when-using-openai-api-fd5a038fa391
3大AI語(yǔ)言大模型API基礎(chǔ)參數(shù)、核心性能的區(qū)別:ChatGPT 4o、百度千帆 ERNIE 4.0、阿里通義千問 Max
大模型API亂斗,價(jià)格對(duì)比:Grok3、deepseek R1、ChatGPT 4o
2025最強(qiáng)AI大模型分析:Gemini 2.5 Pro vs Claude 3.7 Sonnet API評(píng)測(cè)
如何使用 node.js 和 express 創(chuàng)建 rest api
MongoDB 基本使用:工具、API、Spring 集成
Google Gemini API使用教程:提升SEO的終極指南
使用 ASP.NET Web API 構(gòu)建 RESTful API
REST API設(shè)計(jì)開源工具:值得推薦的10+款
使用.Net構(gòu)建一個(gè)RESTful Web API
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)