跳至主要内容

动态回调管理

信息

✨ 这是一个企业版功能。

开始使用 LiteLLM 企业版

LiteLLM 的动态回调管理功能使团队能够按请求控制日志记录行为,而无需更改中央基础设施。这对于管理大规模服务生态系统的组织至关重要,因为:

  • 团队管理自身的合规性 - 服务可以在没有中央监督的情况下适当地处理敏感数据
  • 去中心化的责任制 - 每个团队在共享基础设施的同时,可以控制各自的数据处理方式

您可以通过在请求中传递 x-litellm-disable-callbacks 请求头来禁用回调,从而让团队能够精细化控制其数据记录的位置。

入门:列出并禁用回调

管理回调是一个两步过程:

  1. 首先,列出您的活动回调,以查看当前启用了哪些回调
  2. 然后,根据需要在请求中禁用特定的回调

1. 列出活动回调

首先查看代理上当前启用的所有回调,以了解有哪些回调可以禁用。

请求

curl -X 'GET' \
'https://:4000/callbacks/list' \
-H 'accept: application/json' \
-H 'x-litellm-api-key: sk-1234'

响应

{
"success": [
"deployment_callback_on_success",
"sync_deployment_callback_on_success"
],
"failure": [
"async_deployment_callback_on_failure",
"deployment_callback_on_failure"
],
"success_and_failure": [
"langfuse",
"datadog"
]
}

响应字段

响应包含三个数组,对您的活动回调进行了分类:

  • success - 仅在请求成功完成时执行的回调。这些回调接收来自成功的 LLM 响应的数据。
  • failure - 仅在请求失败或遇到错误时执行的回调。这些回调接收错误信息和失败的请求数据。
  • success_and_failure - 在请求成功和失败时都会执行的回调。这些通常是日志记录/可观测性工具,需要捕获所有请求数据,无论结果如何。

2. 禁用回调

既然您已经知道哪些回调处于活动状态,就可以使用 x-litellm-disable-callbacks 请求头选择性地禁用它们。您可以引用上述列表响应中的任何回调名称。

禁用单个回调

使用 x-litellm-disable-callbacks 请求头来为单个请求禁用特定的回调。

curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer sk-1234' \
--header 'x-litellm-disable-callbacks: langfuse' \
--data '{
"model": "claude-sonnet-4-20250514",
"messages": [
{
"role": "user",
"content": "what llm are you"
}
]
}'

禁用多个回调

您可以通过在请求头中提供以逗号分隔的列表来禁用多个回调。使用 /callbacks/list 响应中的任意回调名称组合。

curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer sk-1234' \
--header 'x-litellm-disable-callbacks: langfuse,datadog,prometheus' \
--data '{
"model": "claude-sonnet-4-20250514",
"messages": [
{
"role": "user",
"content": "what llm are you"
}
]
}'

请求头格式与大小写敏感度

预期的请求头格式

x-litellm-disable-callbacks 请求头接受以下格式的回调名称(请使用 /callbacks/list 返回的确切名称):

  • 单个回调x-litellm-disable-callbacks: langfuse
  • 多个回调x-litellm-disable-callbacks: langfuse,datadog,prometheus

指定多个回调时,请使用逗号分隔的值,且逗号周围不要有空格。

大小写敏感度

回调名称检查是不区分大小写的。这意味着以下所有内容都是等效的:

# These are all equivalent
x-litellm-disable-callbacks: langfuse
x-litellm-disable-callbacks: LANGFUSE
x-litellm-disable-callbacks: LangFuse
x-litellm-disable-callbacks: langFUSE

这适用于单个和多个回调的指定方式

# Case insensitive for multiple callbacks
x-litellm-disable-callbacks: LANGFUSE,datadog,PROMETHEUS
x-litellm-disable-callbacks: langfuse,DATADOG,prometheus

禁用动态回调管理(企业版)

一些组织有合规性要求,即所有请求必须在任何情况下都进行记录。对于这些情况,您可以完全禁用动态回调管理,以确保用户无法禁用任何日志记录回调。

使用场景

此功能专为以下企业场景设计:

  • 合规性要求:强制要求所有 API 请求必须记录在案
  • 审计跟踪:必须完整且无遗漏
  • 安全策略:要求监控所有流量
  • 不允许例外:禁止禁用回调

如何禁用

在您的 config.yaml 中将 allow_dynamic_callback_disabling 设置为 false

config.yaml
litellm_settings:
allow_dynamic_callback_disabling: false

效果

禁用后:

  • x-litellm-disable-callbacks 请求头将被忽略
  • 所有已配置的回调将始终执行,适用于每个请求
  • 用户无法通过请求头或请求元数据绕过日志记录
  • 根据您的代理配置,所有请求都将被确保记录

示例:合规日志记录设置

以下是针对要求强制记录日志的组织的完整示例:

config.yaml
# config.yaml
model_list:
- model_name: gpt-4
litellm_params:
model: openai/gpt-4
api_key: os.environ/OPENAI_API_KEY

litellm_settings:
callbacks: ["langfuse", "datadog", "s3"]
# Disable dynamic callback disabling for compliance
allow_dynamic_callback_disabling: false

使用此配置:

  • 所有请求都将被记录到 Langfuse、Datadog 和 S3
  • 用户无法通过请求头禁用这些回调中的任何一个
  • 完整且有保障的审计跟踪以满足合规要求
信息

默认行为:动态回调禁用功能默认开启 (allow_dynamic_callback_disabling: true)。您必须明确将其设置为 false 以强制执行可靠的日志记录。