LiteLLM与langfuse集成
- English: LiteLLM Integration with Langfuse
Table of Contents
为什么需要将LiteLLM与Langfuse集成? #
上一篇 介绍了LiteLLM (如何使用AI 网关(LiteLLM): 统一管理AI大语言模型接入) 但是在企业级AI应用部署中,仅有一个统一的API网关是不够的。随着AI应用规模的扩大,我们还需要全面的可观测性和监控能力,以便:
- 追踪模型性能 - 了解不同模型在各种场景下的响应时间、成功率和质量
- 分析使用模式 - 识别高频查询、用户行为模式和潜在的优化机会
- 成本管理 - 精确追踪每个团队、项目或功能的AI使用成本
- 质量保证 - 监控模型输出质量,及时发现异常或退化情况
这就是为什么将LiteLLM与Langfuse集成变得如此重要。
Langfuse简介 #
Langfuse是一个专为LLM应用设计的开源可观测性平台,提供了全面的追踪、评估和监控功能。它能够:
- 记录所有LLM交互的详细信息
- 提供直观的仪表板,展示性能指标和使用统计
- 支持自定义标签和分组,便于多维度分析
- 实现成本追踪和分配
- 提供评分和反馈机制,帮助改进模型输出质量
集成优势 #
将LiteLLM与Langfuse结合使用,可以获得以下优势:
- 统一管理与全面监控 - LiteLLM提供统一的API接入层,而Langfuse提供深入的可观测性
- 无缝数据流 - 所有通过LiteLLM的请求自动被记录到Langfuse,无需额外代码
- 细粒度分析 - 可以按模型、团队、项目或任何自定义维度分析性能和成本
- 闭环优化 - 基于Langfuse的数据洞察,可以优化LiteLLM的路由策略和模型选择
实施步骤 #
1. 安装 Langfuse #
- 克隆 Langfuse 仓库
git clone https://github.com/langfuse/langfuse.git
cd langfuse
- 配置环境变量
在
docker-compose.yml
文件中配置必要的环境变量:
POSTGRES_PASSWORD
: PostgreSQL 数据库密码NEXTAUTH_SECRET
: NextAuth 密钥NEXTAUTH_URL
: 应用访问地址(默认为 http://localhost:3000)
- 启动服务
docker compose up -d
等待服务就绪 等待约 2-3 分钟,直到看到
langfuse-web-1
容器日志显示 “Ready”。访问界面 打开浏览器访问 http://localhost:3000 即可进入 Langfuse 管理界面。
2. 配置 LiteLLM 集成 #
如果还没有安装 LiteLLM,请参考:如何使用AI 网关(LiteLLM): 统一管理AI大语言模型接入
2.1 配置 LiteLLM 配置文件 #
编辑 config.yaml
:
# https://docs.litellm.ai/docs/proxy/logging#langfuse
litellm_settings:
success_callback: ["langfuse"]
2.2 配置环境变量 #
编辑 .env
文件:
# Langfuse 配置
LANGFUSE_PUBLIC_KEY="pk-lf-xxxxxxxx-0000-xxxx-xxxx-xxxxxxxxxxxx"
LANGFUSE_SECRET_KEY="sk-lf-xxxxxxxx-6767-xxxx-xxxx-xxxxxxxxxxxx"
# Optional, defaults to https://cloud.langfuse.com
LANGFUSE_HOST="http://localhost:3000"
2.3 重启 LiteLLM 服务 #
# 重启 LiteLLM 服务使配置生效
cd litellm
docker-compose restart
3. 使用示例 #
LiteLLM 支持通过 HTTP Header 和请求体两种方式传递追踪信息。
3.1 通过 HTTP Header 传递 #
curl http://localhost:4000/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LITELLM_API_KEY" \
-H 'langfuse_trace_user_id: user-grayson' \
-H 'langfuse_trace_session_id: oa-test-id-hello-word' \
-H 'langfuse_trace_environment: local' \
-d '{
"model": "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "你是一个助手. 叫 李四1"
},
{
"role": "user",
"content": "how are you? what your name?"
}
]
}'
3.2 通过请求体传递 #
curl http://localhost:4000/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LITELLM_API_KEY" \
-d '{
"model": "gpt-4o-mini",
"metadata": {
"session_id": "oa-test-id-hello-word",
"user_id": "user-grayson",
"trace_environment": "staging",
"trace_metadata": {"subdomain": "demo-full", "custom": "hello"}
},
"messages": [
{
"role": "system",
"content": "你是一个助手. 叫 李四三"
},
{
"role": "user",
"content": "how are you? what your name?"
}
]
}'
4. 效果展示 #