
3大AI语言大模型API基础参数、核心性能的区别:ChatGPT 4o、百度千帆 ERNIE 4.0、阿里通义千问 Max
OpenAI API 提供了一种强大的方式,将大语言模型(LLM)的功能集成到应用程序中。然而,频繁使用可能导致成本迅速上升。本文将探讨一些有效的成本管理策略,帮助您在实现预期效果的同时,控制开支。
管理 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的终极指南