跳至主要内容

自定义 LLM 定价

概述

LiteLLM 为所有 LLM 提供商提供灵活的成本跟踪和定价自定义功能

  • 自定义定价 - 覆盖默认模型成本或为自定义模型设置定价
  • Token 定价 - 基于输入/输出 Token 跟踪成本(最常见)
  • 时长定价 - 基于运行时长跟踪成本(例如 Sagemaker)
  • 零成本模型 - 通过将成本设置为 0,绕过免费/本地部署模型的预算检查
  • 提供商折扣 - 对特定提供商应用百分比折扣
  • 提供商利润率 - 在 LLM 成本中增加费用/利润率,用于内部结算
  • 基础模型映射 - 确保 Azure 部署的成本跟踪准确

默认情况下,响应成本可通过日志对象中的 kwargs["response_cost"] 在成功时获取(同步 + 异步)。了解更多

信息

LiteLLM 已经在我们的 模型成本表 中内置了 100 多个模型的定价。

时长定价(例如 Sagemaker)

与 LiteLLM 代理服务器一起使用

第一步:将定价添加到 config.yaml

model_list:
- model_name: sagemaker-completion-model
litellm_params:
model: sagemaker/berri-benchmarking-Llama-2-70b-chat-hf-4
model_info:
input_cost_per_second: 0.000420
- model_name: sagemaker-embedding-model
litellm_params:
model: sagemaker/berri-benchmarking-gpt-j-6b-fp16
model_info:
input_cost_per_second: 0.000420

步骤 2:启动代理

litellm /path/to/config.yaml

第三步:查看支出日志

Token 定价(例如 Azure)

配合 LiteLLM 代理服务器使用

model_list:
- model_name: azure-model
litellm_params:
model: azure/<your_deployment_name>
api_key: os.environ/AZURE_API_KEY
api_base: os.environ/AZURE_API_BASE
api_version: os.environ/AZURE_API_VERSION
model_info:
input_cost_per_token: 0.000421 # 👈 ONLY to track cost per token
output_cost_per_token: 0.000520 # 👈 ONLY to track cost per token

覆盖模型成本表

您可以覆盖 我们的模型成本表,为您映射的模型使用自定义定价。

只需在配置中的模型下添加 model_info 键,并覆盖所需的键即可。

示例:覆盖 Anthropic prod/claude-3-5-sonnet-20241022 模型的成本映射。

model_list:
- model_name: "prod/claude-3-5-sonnet-20241022"
litellm_params:
model: "anthropic/claude-3-5-sonnet-20241022"
api_key: os.environ/ANTHROPIC_PROD_API_KEY
model_info:
input_cost_per_token: 0.000006
output_cost_per_token: 0.00003
cache_creation_input_token_cost: 0.0000075
cache_read_input_token_cost: 0.0000006

其他成本键

您还可以使用其他键来指定不同场景和模式下的成本:

  • input_cost_per_token_above_200k_tokens - 上下文超过 200k Token 时的输入 Token 成本
  • output_cost_per_token_above_200k_tokens - 上下文超过 200k Token 时的输出 Token 成本
  • cache_creation_input_token_cost_above_200k_tokens - 大上下文下的缓存创建成本
  • cache_read_input_token_cost_above_200k_token - 大上下文下的缓存读取成本
  • input_cost_per_image - 多模态请求中每张图片的成本
  • output_cost_per_reasoning_token - 推理 Token 成本(例如 OpenAI o1 模型)
  • input_cost_per_audio_token - 音频输入 Token 成本
  • output_cost_per_audio_token - 音频输出 Token 成本
  • input_cost_per_video_per_second - 每秒视频输入的成本
  • input_cost_per_video_per_second_above_128k_tokens - 大上下文下的视频成本
  • input_cost_per_character - 某些提供商基于字符的定价
  • input_cost_per_token_priority / output_cost_per_token_priority - 优先级/按需付费定价(Vertex AI Gemini, Bedrock)
  • input_cost_per_token_flex / output_cost_per_token_flex - 批量/灵活定价

这些键会随着新模型处理多模态方式的演进而变化。最新版本可在 https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json 找到。

服务层级 / 按需付费定价(Vertex AI, Bedrock)

对于支持多个定价层级的提供商(例如 Vertex AI PayGo,Bedrock 服务层级),LiteLLM 会根据响应自动应用正确的成本。

零成本模型(绕过预算检查)

使用场景:您拥有本地部署或免费模型,即使在用户超出预算限制时也应该能够访问这些模型。

解决方案 ✅:显式地将 input_cost_per_tokenoutput_cost_per_token 都设置为 0,以绕过该模型的所有预算检查。

信息

当模型配置为零成本时,LiteLLM 将自动跳过该模型的所有请求的预算检查(用户、团队、团队成员、最终用户、组织和全局代理预算)。

重要提示:两项成本都必须明确设置为 0。如果成本为 null 或未定义,系统会将该模型视为有成本,并应用预算检查。

配置示例

model_list:
# On-premises model - free to use
- model_name: on-prem-llama
litellm_params:
model: ollama/llama3
api_base: http://:11434
model_info:
input_cost_per_token: 0 # 👈 Explicitly set to 0
output_cost_per_token: 0 # 👈 Explicitly set to 0

# Paid cloud model - budget checks apply
- model_name: gpt-4
litellm_params:
model: gpt-4
api_key: os.environ/OPENAI_API_KEY
# No model_info - uses default pricing from cost map

行为

使用上述配置

  • 用户预算超支 → 仍可使用 on-prem-llama ✅,但会被限制使用 gpt-4
  • 团队预算超支 → 仍可使用 on-prem-llama ✅,但会被限制使用 gpt-4
  • 最终用户预算超支 → 仍可使用 on-prem-llama ✅,但会被限制使用 gpt-4

这确保了您的免费/本地模型在预算受限时仍可访问,同时付费模型仍受到严格管控。

为成本跟踪设置 'base_model'(例如 Azure 部署)

问题:Azure 在使用 azure/gpt-4-1106-preview 时在响应中返回 gpt-4。这导致成本跟踪不准确

解决方案 ✅ :在配置中设置 base_model,以便 litellm 使用正确的模型来计算 Azure 成本。

此处 获取基础模型名称。

带有 base_model 的配置示例

model_list:
- model_name: azure-gpt-3.5
litellm_params:
model: azure/chatgpt-v-2
api_base: os.environ/AZURE_API_BASE
api_key: os.environ/AZURE_API_KEY
api_version: "2023-07-01-preview"
model_info:
base_model: azure/gpt-4-1106-preview

带日期的 OpenAI 模型版本

当 OpenAI 在响应中返回的日期模型名称与您配置的模型名称不同时,base_model 也非常有用。

示例:您为 gpt-4o-mini-audio-preview 配置了自定义定价,但 OpenAI 在响应中返回了 gpt-4o-mini-audio-preview-2024-12-17。由于 LiteLLM 使用响应中的模型名称进行定价查找,因此您的自定义定价将不会生效。

解决方案 ✅:将 base_model 设置为您希望 LiteLLM 用于定价查找的键。

model_list:
- model_name: my-audio-model
litellm_params:
model: openai/gpt-4o-mini-audio-preview
api_key: os.environ/OPENAI_API_KEY
model_info:
base_model: gpt-4o-mini-audio-preview # 👈 Used for pricing lookup
input_cost_per_token: 0.0000006
output_cost_per_token: 0.0000024
input_cost_per_audio_token: 0.00001
output_cost_per_audio_token: 0.00002

调试

如果您的自定义定价未生效或出现错误,请检查以下内容:

  1. 使用 LITELLM_LOG="DEBUG"--detailed_debug CLI 标志运行代理。
litellm --config /path/to/config.yaml --detailed_debug
  1. 检查日志中是否有此行。
LiteLLM:DEBUG: utils.py:263 - litellm.acompletion
  1. 检查 'input_cost_per_token' 和 'output_cost_per_token' 是否为 acompletion 函数中的顶层键。
acompletion(
...,
input_cost_per_token: my-custom-price,
output_cost_per_token: my-custom-price,
)

如果这些键不存在,LiteLLM 将不会使用您的自定义定价。

如果问题仍然存在,请在 GitHub 上提交 Issue。