团队/密钥基于的日志记录
概览
允许每个密钥/团队使用其自己的 Langfuse 项目或自定义回调。这可以实现对日志记录和合规性要求的精细化控制。
示例用例
Team 1 -> Logs to Langfuse Project 1
Team 2 -> Logs to Langfuse Project 2
Team 3 -> Disabled Logging (for GDPR compliance)
支持的日志记录集成
langfusegcs_bucketlangsmitharize
[测试版] 团队日志记录
✨ 这是企业版专属功能 在此处开始使用企业版
UI 使用
- 创建带有日志记录设置的团队
创建一个名为“AI Agents”的团队
- 为团队创建密钥
我们将为“AI Agents”团队创建一个密钥。该团队的所有密钥都将使用该团队的日志记录设置。
- 进行测试 LLM API 请求
使用新密钥进行测试 LLM API 请求,我们预计能在第 1 步中配置的日志记录提供商处看到日志。
- 在您的日志记录提供商处查看日志
导航至您配置的日志记录提供商,检查是否收到了第 2 步中的日志。
API 使用
为每个团队设置回调
1. 为团队设置回调
我们向 POST /team/{team_id}/callback 发送请求,以添加回调
curl -X POST 'http:/localhost:4000/team/dbe2f686-a686-4896-864a-4c3924458709/callback' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-1234' \
-d '{
"callback_name": "langfuse",
"callback_type": "success",
"callback_vars": {
"langfuse_public_key": "pk",
"langfuse_secret_key": "sk_",
"langfuse_host": "https://cloud.langfuse.com"
}
}'
支持的值
| 字段 | 支持的值 | 说明 |
|---|---|---|
callback_name | "langfuse", "gcs_bucket" | 目前仅支持 "langfuse", "gcs_bucket" |
callback_type | "success", "failure", "success_and_failure" | |
callback_vars | 包含回调设置的字典 | |
langfuse_public_key | string | Langfuse 所需 |
langfuse_secret_key | string | Langfuse 所需 |
langfuse_host | string | Langfuse 可选(默认为 https://cloud.langfuse.com) |
gcs_bucket_name | string | GCS Bucket 所需。您的 GCS 存储桶名称 |
gcs_path_service_account | string | GCS Bucket 所需。您的服务账户 JSON 文件路径 |
2. 为团队创建密钥
为团队 dbe2f686-a686-4896-864a-4c3924458709 创建的所有密钥都将记录到 第 1 步:为团队设置回调 中指定的 Langfuse 项目。
curl --location 'http://0.0.0.0:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data '{
"team_id": "dbe2f686-a686-4896-864a-4c3924458709"
}'
3. 为团队发送 /chat/completion 请求
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-KbUuE0WNptC0jXapyMmLBA" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello, Claude gm!"}
]
}'
预计这会记录在 第 1 步:为团队设置回调 中指定的 Langfuse 项目中。
禁用团队的日志记录
要禁用特定团队的日志记录,可以使用以下端点
POST /team/{team_id}/disable_logging
此端点会移除指定团队的所有成功和失败回调,从而有效地禁用日志记录。
第 1 步:禁用团队的日志记录
curl -X POST 'https://:4000/team/YOUR_TEAM_ID/disable_logging' \
-H 'Authorization: Bearer YOUR_API_KEY'
将 YOUR_TEAM_ID 替换为实际的团队 ID
响应 请求成功将返回类似以下的响应
{
"status": "success",
"message": "Logging disabled for team YOUR_TEAM_ID",
"data": {
"team_id": "YOUR_TEAM_ID",
"success_callbacks": [],
"failure_callbacks": []
}
}
第 2 步:进行测试 - /chat/completions
使用为该 team_id 生成的密钥 - 您不应在配置的成功回调(例如 Langfuse)中看到任何日志。
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-KbUuE0WNptC0jXapyMmLBA" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello, Claude gm!"}
]
}'
调试/排错
- 使用
GET /team/{team_id}/callback检查团队的活动回调
使用此命令检查 team=team_id 的哪些成功/失败回调处于活动状态。
curl -X GET 'https://:4000/team/dbe2f686-a686-4896-864a-4c3924458709/callback' \
-H 'Authorization: Bearer sk-1234'
团队日志记录端点
团队日志记录 - config.yaml
开启/关闭特定团队 ID 的日志记录和缓存。
示例
此配置将根据团队 ID 将 Langfuse 日志发送到两个不同的 Langfuse 项目。
litellm_settings:
default_team_settings:
- team_id: "dbe2f686-a686-4896-864a-4c3924458709"
success_callback: ["langfuse"]
langfuse_public_key: os.environ/LANGFUSE_PUB_KEY_1 # Project 1
langfuse_secret: os.environ/LANGFUSE_PRIVATE_KEY_1 # Project 1
- team_id: "06ed1e01-3fa7-4b9e-95bc-f2e59b74f3a8"
success_callback: ["langfuse"]
langfuse_public_key: os.environ/LANGFUSE_PUB_KEY_2 # Project 2
langfuse_secret: os.environ/LANGFUSE_SECRET_2 # Project 2
现在,当您为该团队 ID 生成密钥 时
curl -X POST 'http://0.0.0.0:4000/key/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{"team_id": "06ed1e01-3fa7-4b9e-95bc-f2e59b74f3a8"}'
使用这些密钥进行的所有请求都将记录到其特定的团队日志中。
[测试版] 基于密钥的日志记录
使用 /key/generate 或 /key/update 端点为特定密钥添加日志回调。
✨ 这是企业版专属功能 在此处开始使用企业版
基于密钥的日志记录原理
- 如果密钥没有配置回调,它将使用
config.yaml文件中指定的默认回调。 - 如果密钥配置了回调,它将使用密钥中指定的回调。
UI 使用
- 创建带有日志记录设置的密钥
创建密钥时,可以配置该密钥的特定日志记录设置。这些设置将应用于使用此密钥进行的所有请求。
- 进行测试 LLM API 请求
使用新密钥进行测试 LLM API 请求,我们预计能在第 1 步中配置的日志记录提供商处看到日志。
- 在您的日志记录提供商处查看日志
导航至您配置的日志记录提供商,检查是否收到了第 2 步中的日志。
API 使用
- Langfuse
- GCS Bucket
- Langsmith
curl -X POST 'http://0.0.0.0:4000/key/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"metadata": {
"logging": [{
"callback_name": "langfuse", # "otel", "gcs_bucket"
"callback_type": "success", # "success", "failure", "success_and_failure"
"callback_vars": {
"langfuse_public_key": "os.environ/LANGFUSE_PUBLIC_KEY", # [RECOMMENDED] reference key in proxy environment
"langfuse_secret_key": "os.environ/LANGFUSE_SECRET_KEY", # [RECOMMENDED] reference key in proxy environment
"langfuse_host": "https://cloud.langfuse.com"
}
}]
}
}'
- 创建虚拟密钥以记录到特定的 GCS 存储桶
将环境变量 GCS_SERVICE_ACCOUNT 设置为服务账户 JSON 的路径
export GCS_SERVICE_ACCOUNT=/path/to/service-account.json # GCS_SERVICE_ACCOUNT=/Users/ishaanjaffer/Downloads/adroit-crow-413218-a956eef1a2a8.json
curl -X POST 'http://0.0.0.0:4000/key/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"metadata": {
"logging": [{
"callback_name": "gcs_bucket", # "otel", "gcs_bucket"
"callback_type": "success", # "success", "failure", "success_and_failure"
"callback_vars": {
"gcs_bucket_name": "my-gcs-bucket", # Name of your GCS Bucket to log to
"gcs_path_service_account": "os.environ/GCS_SERVICE_ACCOUNT" # environ variable for this service account
}
}]
}
}'
- 进行测试 -
/chat/completions请求
使用第 3 步中的虚拟密钥发送 /chat/completions 请求
请求成功后,您应该能在 GCS 存储桶中看到日志
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-Fxq5XSyWKeXDKfPdqXZhPg" \
-d '{
"model": "fake-openai-endpoint",
"messages": [
{"role": "user", "content": "Hello, Claude"}
],
"user": "hello",
}'
- 创建虚拟密钥以记录到特定的 Langsmith 项目
curl -X POST 'http://0.0.0.0:4000/key/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"metadata": {
"logging": [{
"callback_name": "langsmith", # "otel", "gcs_bucket"
"callback_type": "success", # "success", "failure", "success_and_failure"
"callback_vars": {
"langsmith_api_key": "os.environ/LANGSMITH_API_KEY", # API Key for Langsmith logging
"langsmith_project": "pr-brief-resemblance-72", # project name on langsmith
"langsmith_base_url": "https://api.smith.langchain.com"
}
}]
}
}'
- 进行测试 -
/chat/completions请求
使用第 3 步中的虚拟密钥发送 /chat/completions 请求
请求成功后,您应该能在 Langsmith 项目中看到日志
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-Fxq5XSyWKeXDKfPdqXZhPg" \
-d '{
"model": "fake-openai-endpoint",
"messages": [
{"role": "user", "content": "Hello, Claude"}
],
"user": "hello",
}'
请通过在此处提交工单来帮助我们改进此功能
检查密钥回调是否配置正确 /key/health
使用密钥调用 /key/health 以检查回调设置是否配置正确
在请求头中传入该密钥
curl -X POST "https://:4000/key/health" \
-H "Authorization: Bearer <your-key>" \
-H "Content-Type: application/json"
- 密钥配置正确时的响应
- 密钥配置错误时的响应
日志回调设置正确时的响应
当日志回调设置正确时,密钥处于健康 (healthy) 状态。
{
"key": "healthy",
"logging_callbacks": {
"callbacks": [
"gcs_bucket"
],
"status": "healthy",
"details": "No logger exceptions triggered, system is healthy. Manually check if logs were sent to ['gcs_bucket']"
}
}
日志回调设置不正确时的响应
当日志回调设置不正确时,密钥处于不健康 (unhealthy) 状态。
{
"key": "unhealthy",
"logging_callbacks": {
"callbacks": [
"gcs_bucket"
],
"status": "unhealthy",
"details": "Logger exceptions triggered, system is unhealthy: Failed to load vertex credentials. Check to see if credentials containing partial/invalid information."
}
}
禁用/启用消息脱敏 (Redaction)
在全局禁用提示词日志记录时,使用此功能为特定密钥启用提示词日志记录。
全局禁用提示词日志记录(消息脱敏)的 config.yaml 示例
model_list:
- model_name: gpt-4o
litellm_params:
model: gpt-4o
litellm_settings:
callbacks: ["datadog"]
turn_off_message_logging: True # 👈 Globally logging prompt / response is disabled
为密钥启用提示词日志记录
将要启用提示词日志记录的密钥的 turn_off_message_logging 设置为 false。这将覆盖全局的 turn_off_message_logging 设置。
curl -X POST 'http://0.0.0.0:4000/key/generate' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"metadata": {
"logging": [{
"callback_name": "datadog",
"callback_vars": {
"turn_off_message_logging": false # 👈 Enable prompt logging
}
}]
}
}'
/key/generate 的响应
{
"key_alias": null,
"key": "sk-9v6I-jf9-eYtg_PwM8OKgQ",
"metadata": {
"logging": [
{
"callback_name": "datadog",
"callback_vars": {
"turn_off_message_logging": false
}
}
]
},
"token_id": "a53a33db8c3cf832ceb28565dbb034f19f0acd69ee7f03b7bf6752f9f804081e"
}
将密钥用于 /chat/completions 请求
此密钥会将提示词记录到请求中指定的回调中
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-9v6I-jf9-eYtg_PwM8OKgQ" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is ishaan what key alias is this"}
]
}'