1. 什么是 Langfuse?
Langfuse 是一个开源的 LLM(大语言模型)应用监控与评估平台,专为构建在生产环境中可靠运行的 AI 应用而设计。它帮助开发者追踪、分析和优化基于 LLM 的应用流程,提供从提示词管理、成本追踪到性能评估的全链路可观测性。
2. 核心功能
2.1 应用追踪 (Tracing)
自动记录 LLM 应用的执行过程,包括:
- 调用链可视化:清晰展示从用户输入到最终输出的完整流程,包括对 LLM、工具、检索等组件的调用。
- 详细日志:记录每次调用的输入、输出、耗时、Token 使用量、模型名称、成本等元数据。
- 会话管理:将同一会话中的多次交互关联起来,便于进行端到端的分析和调试。
2.2 提示词管理 (Prompt Management)
提供中心化的提示词版本控制与管理:
- 版本化存储:保存不同版本的提示词模板,便于 A/B 测试和回滚。
- 变量插值:支持在提示词模板中定义变量,运行时动态填充。
- 环境隔离:区分开发、测试、生产环境的提示词,确保安全部署。
2.3 评估与评分 (Evaluation & Scoring)
通过人工或自动方式评估 LLM 输出的质量:
- 人工标注:在平台上直接对输出结果进行打分或标注。
- 自动评估:集成评估模型(如使用另一个 LLM)对输出进行自动化评分。
- 指标看板:可视化展示不同版本、不同参数下的模型表现对比。
2.4 成本与使用分析 (Cost & Usage Analytics)
监控 LLM 应用的花费与资源消耗:
- 成本细分:按项目、模型、会话等维度统计 API 调用成本。
- 使用趋势:分析 Token 消耗、请求量的变化趋势。
- 预算预警:设置成本阈值,超出时发出告警。
3. 架构与部署
3.1 技术栈
- 后端:基于 Node.js (TypeScript) 和 Prisma ORM。
- 前端:使用 Next.js 和 React 构建的管理控制台。
- 数据库:支持 PostgreSQL (推荐) 和 SQLite。
- 部署:提供 Docker 镜像,支持本地部署、云服务器部署以及官方托管的云服务。
3.2 数据流
- SDK 集成:在 LLM 应用代码中集成 Langfuse SDK (Python/JS),SDK 会将追踪数据发送到 Langfuse 后端。
- 数据存储:后端接收数据并存储到数据库中。
- 可视化分析:用户通过 Web 控制台查看追踪数据、管理提示词、进行评估和分析。
4. 快速开始
4.1 安装与部署
使用 Docker Compose 快速启动本地实例:
yaml
# docker-compose.yml
version: '3.8'
services:
postgres:
image: postgres:15
environment:
POSTGRES_USER: langfuse
POSTGRES_PASSWORD: langfuse
POSTGRES_DB: langfuse
volumes:
- postgres_data:/var/lib/postgresql/data
langfuse:
image: langfuse/langfuse:latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://langfuse:langfuse@postgres:5432/langfuse
NEXTAUTH_SECRET: your-secret-here
NEXTAUTH_URL: http://localhost:3000
SALT: your-salt-here
depends_on:
- postgres
volumes:
postgres_data:
运行 docker-compose up -d,然后在浏览器中访问 http://localhost:3000。
4.2 集成 SDK
在 Python 应用中集成 Langfuse SDK 进行追踪:
python
# 安装 SDK
# pip install langfuse
from langfuse import Langfuse
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
初始化 Langfuse
langfuse = Langfuse(
public_key="your-public-key",
secret_key="your-secret-key",
host="http://localhost:3000" # 自托管地址或云服务地址
)
创建一个追踪会话
trace = langfuse.trace(name="customer-support-chat")
在 LangChain 调用中自动追踪
llm = ChatOpenAI(model="gpt-4")
prompt = ChatPromptTemplate.from_template("回答用户关于{product}的问题:{question}")
chain = prompt | llm
执行并追踪
with trace:
response = chain.invoke({
"product": "Langfuse",
"question": "它主要能解决什么问题?"
})
print(response.content)
5. 应用场景
- LLM 应用开发与调试:快速定位复杂链式调用中的问题,比较不同提示词或模型版本的效果。
- 生产环境监控:实时监控应用性能、成本和异常,确保服务 SLA。
- 实验管理与 A/B 测试:系统化地管理提示词实验,基于数据决策最佳方案。
- 团队协作与知识沉淀:集中管理提示词和评估标准,形成团队的最佳实践库。
6. 总结
Langfuse 填补了 LLM 应用在可观测性领域的工具空白。它将软件工程中成熟的监控、调试和评估理念引入 AI 应用开发,让"黑盒"的 LLM 调用变得透明、可分析和可优化。对于任何希望将 LLM 应用投入生产并持续改进的团队来说,Langfuse 都是一个值得深入研究和采用的基础设施组件。