Langfuse错误追踪:AI应用故障诊断
2026-02-04 04:01:25作者:袁立春Spencer
痛点:AI应用故障排查的困境
你是否曾遇到过这样的场景?深夜接到报警,AI应用出现异常,却无法快速定位问题根源。传统的日志系统分散在各个服务中,LLM(Large Language Model,大语言模型)调用链复杂,错误信息碎片化,导致故障诊断如同大海捞针。
读完本文,你将获得:
- Langfuse错误追踪的核心机制解析
- 实战代码示例:从异常捕获到可视化展示
- 错误级别分类与智能诊断策略
- 生产环境故障排查最佳实践
- 多维度错误分析与统计方法
Langfuse错误追踪架构解析
核心错误处理机制
Langfuse采用分层错误追踪架构,通过OpenTelemetry标准实现分布式错误追踪:
graph TB
A[应用层异常] --> B[traceException捕获]
B --> C[OpenTelemetry Span记录]
C --> D[错误属性标准化]
D --> E[Datadog集成]
D --> F[CloudWatch监控]
D --> G[Langfuse可视化界面]
subgraph "错误信息标准化"
H[错误类型] --> I[错误消息]
J[堆栈跟踪] --> K[错误代码]
end
E --> L[实时告警]
F --> M[指标聚合]
G --> N[可视化分析]
错误追踪核心代码实现
Langfuse的traceException函数是错误处理的核心:
export const traceException = (
ex: unknown,
span?: opentelemetry.Span,
code?: string,
) => {
const activeSpan = span ?? getCurrentSpan();
if (!activeSpan) return;
const exception = {
code: code,
message: ex instanceof Error ? ex.message : JSON.stringify(ex),
name: ex instanceof Error ? ex.name : "Error",
stack: ex instanceof Error ? JSON.stringify(ex.stack) : undefined,
};
// OpenTelemetry异常记录
activeSpan.recordException(exception);
// Datadog错误追踪标签
activeSpan.setAttributes({
"error.stack": exception.stack,
"error.message": exception.message,
"error.type": exception.name,
});
activeSpan.setStatus({
code: opentelemetry.SpanStatusCode.ERROR,
message: exception.message,
});
};
错误级别分类体系
Langfuse采用四级错误分类标准,便于优先级排序和故障处理:
| 错误级别 | 标识 | 颜色 | 严重程度 | 处理策略 |
|---|---|---|---|---|
| DEBUG | 🔍 | 灰色 | 低 | 开发调试信息 |
| WARNING | ⚠️ | 黄色 | 中 | 需要关注但非阻塞 |
| ERROR | 🚨 | 红色 | 高 | 立即处理的生产问题 |
| DEFAULT | ℹ️ | 蓝色 | 信息 | 常规运行状态 |
错误级别可视化实现
export const LevelColors = {
DEFAULT: { text: "", bg: "" },
DEBUG: { text: "text-muted-foreground", bg: "bg-primary-foreground" },
WARNING: { text: "text-dark-yellow", bg: "bg-light-yellow" },
ERROR: { text: "text-dark-red", bg: "bg-light-red" },
};
export const LevelSymbols = {
DEFAULT: "ℹ️",
DEBUG: "🔍",
WARNING: "⚠️",
ERROR: "🚨",
};
实战:LLM应用错误追踪集成
基础错误追踪配置
from langfuse import observe
from langfuse.openai import openai
import os
# 环境变量配置
os.environ["LANGFUSE_SECRET_KEY"] = "sk-lf-..."
os.environ["LANGFUSE_PUBLIC_KEY"] = "pk-lf-..."
os.environ["LANGFUSE_HOST"] = "https://cloud.langfuse.com"
@observe()
def ai_chat_completion(user_query: str):
try:
response = openai.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": user_query}],
temperature=0.7
)
return response.choices[0].message.content
except Exception as e:
# 自动被Langfuse捕获并记录错误
raise
# 复杂场景:嵌套追踪与错误传播
@observe()
def process_user_request(user_input: str):
try:
# 数据预处理
processed_input = preprocess_input(user_input)
# LLM调用
response = ai_chat_completion(processed_input)
# 后处理
return postprocess_response(response)
except ValueError as e:
# 输入验证错误
logger.warning(f"Input validation failed: {e}")
raise
except openai.APIConnectionError as e:
# 网络连接错误
logger.error(f"API connection error: {e}")
raise
except openai.RateLimitError as e:
# 速率限制错误
logger.error(f"Rate limit exceeded: {e}")
raise
高级错误处理策略
from langfuse.decorators import observe
from tenacity import retry, stop_after_attempt, wait_exponential
class AIServiceWithRetry:
def __init__(self):
self.llm_client = openai
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=4, max=10)
)
@observe()
def call_llm_with_retry(self, messages, model="gpt-4o"):
"""
带重试机制的LLM调用,自动错误追踪
"""
try:
response = self.llm_client.chat.completions.create(
model=model,
messages=messages,
timeout=30 # 30秒超时
)
return response.choices[0].message.content
except openai.APITimeoutError as e:
logger.error(f"LLM API timeout: {e}")
raise
except openai.APIError as e:
logger.error(f"LLM API error: {e}")
raise
except Exception as e:
logger.error(f"Unexpected error in LLM call: {e}")
raise
# 使用示例
ai_service = AIServiceWithRetry()
try:
result = ai_service.call_llm_with_retry(
messages=[{"role": "user", "content": "Explain quantum computing"}]
)
except Exception as e:
# 所有错误都会被Langfuse自动追踪
logger.error("Failed to get LLM response", exc_info=True)
错误诊断与可视化分析
错误仪表板配置
Langfuse提供丰富的错误可视化功能,包括:
- 错误趋势图表:按时间维度展示错误发生频率
- 错误类型分布:统计不同错误类型的占比
- 影响范围分析:显示受影响的用户和业务功能
- 根因分析:通过Trace链定位问题根源
错误查询与过滤
-- 查询最近24小时内的ERROR级别异常
SELECT
trace_id,
observation_name,
error_message,
error_stack,
timestamp,
user_id
FROM observations
WHERE level = 'ERROR'
AND timestamp >= NOW() - INTERVAL '24 HOURS'
ORDER BY timestamp DESC
LIMIT 100;
生产环境最佳实践
错误监控告警策略
| 监控指标 | 阈值 | 告警级别 | 响应时间 |
|---|---|---|---|
| ERROR级别错误率 | > 1% | P0 | 15分钟内 |
| WARNING级别错误数 | > 10/分钟 | P1 | 1小时内 |
| LLM API失败率 | > 5% | P0 | 立即处理 |
| 响应时间P95 | > 5秒 | P2 | 4小时内 |
错误处理清单
✅ 错误信息标准化
- 统一的错误消息格式
- 包含足够上下文信息
- 避免敏感信息泄露
✅ 错误分类策略
- 按业务影响程度分类
- 按技术根因分类
- 按发生频率分类
✅ 告警集成
- Slack/Teams实时通知
- 邮件摘要报告
- PagerDuty紧急呼叫
✅ 事后分析
- 错误根本原因分析(RCA)
- 预防措施制定
- 知识库文档更新
故障排查实战案例
案例1:LLM API速率限制错误
症状:突然出现大量429 Too Many Requests错误
诊断步骤:
- 在Langfuse中过滤ERROR级别异常
- 查看错误消息包含"rate limit"或"429"
- 分析发生时间段的请求量趋势
- 检查LLM供应商的配额使用情况
解决方案:
@observe()
def adaptive_llm_call(messages, model="gpt-4o"):
"""
自适应LLM调用,处理速率限制
"""
try:
return openai.chat.completions.create(
model=model,
messages=messages,
max_retries=2,
timeout=15
)
except openai.RateLimitError:
# 自动降级到备用模型
return openai.chat.completions.create(
model="gpt-3.5-turbo", # 备用模型
messages=messages,
timeout=10
)
案例2:内存泄漏导致的服务崩溃
症状:服务周期性重启,错误日志显示OOM(Out of Memory)
诊断步骤:
- 使用Langfuse Trace分析内存使用模式
- 识别内存增长与特定操作的关系
- 检查大对象或未释放的资源
解决方案:
@observe()
def process_large_dataset(dataset):
"""
处理大数据集时进行内存优化
"""
try:
# 分批次处理,避免内存溢出
batch_size = 1000
results = []
for i in range(0, len(dataset), batch_size):
batch = dataset[i:i + batch_size]
processed_batch = process_batch(batch)
results.extend(processed_batch)
# 强制垃圾回收
if i % 5000 == 0:
gc.collect()
return results
except MemoryError as e:
logger.error("Memory exhaustion in dataset processing", exc_info=True)
# 自动触发扩容或告警
trigger_scaling_action()
raise
错误追踪的高级特性
自定义错误指标
from langfuse.metrics import record_counter, record_gauge
@observe()
def business_critical_operation(data):
try:
result = process_data(data)
record_counter("business_operation.success", 1)
return result
except BusinessException as e:
# 记录业务特定错误
record_counter("business_operation.failure", 1, tags={"error_type": "business_rule"})
raise
except TechnicalException as e:
record_counter("business_operation.failure", 1, tags={"error_type": "technical"})
raise
分布式错误追踪
sequenceDiagram
participant Client
participant API Gateway
participant Auth Service
participant LLM Service
participant Database
Client->>API Gateway: 发送请求
API Gateway->>Auth Service: 验证权限
Auth Service-->>API Gateway: 验证成功
API Gateway->>LLM Service: 调用LLM
LLM Service->>Database: 查询上下文
Database-->>LLM Service: 返回数据
LLM Service-->>API Gateway: LLM响应
API Gateway-->>Client: 最终响应
Note over LLM Service, Database: 数据库超时错误
LLM Service->>API Gateway: 返回错误
API Gateway->>Langfuse: 记录分布式Trace
Langfuse-->>运维团队: 发送告警
总结与展望
Langfuse的错误追踪系统为AI应用提供了完整的可观测性解决方案。通过:
- 标准化错误处理:统一的异常捕获和记录机制
- 多维度可视化:丰富的错误分析和展示功能
- 智能诊断:基于Trace的根因分析能力
- 生产就绪:企业级的监控告警集成
未来,随着AI应用的复杂度不断提升,错误追踪将更加注重:
- AI特异性错误的自动诊断
- 预测性错误预防
- 自适应错误恢复机制
- 多模态错误分析(文本、代码、日志联合分析)
通过Langfuse的错误追踪能力,团队可以显著提升AI应用的稳定性和可靠性,确保用户体验和业务连续性。
立即行动:
- 集成Langfuse SDK到你的AI应用
- 配置错误监控告警
- 建立错误处理标准流程
- 定期进行错误复盘和优化
让错误不再是噩梦,而是改进的机会!
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0198
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0129
MiMo-V2.5-Pro-FP4-DFlashMiMo-V2.5-Pro-FP4-DFlash 是驱动 MiMo-V2.5-Pro-UltraSpeed 的底层模型: FP4 量化骨干网络:对 MoE 专家采用 MXFP4 量化,同时保持模型其他部分的更高精度,在几乎无损质量的前提下,显著减小模型体积并降低内存带宽压力。 BF16 DFlash 草稿生成器:用于块扩散推测解码,每次前向传播可生成一整个块的 tokens,并让骨干网络一步完成验证。 两者协同作用,既降低了每参数的位宽,又减少了骨干网络前向传播的次数,而这两者正是万亿参数模型解码过程中的两大主要成本来源。Python00
JoyAI-EchoJoyAI-Echo,这是一个独立的、仅用于推理的版本,旨在实现分钟级多镜头音视频生成。它采用了经过蒸馏的DMD生成器、配对的跨模态记忆以及故事级别的一致性。其性能的核心在于,一个跨模态视听记忆库能够在长达五分钟的视频中保持角色外观和语音音色的一致性。同时,一个训练后处理流程将基于记忆的强化学习与分布匹配蒸馏相结合,实现了7.5倍的速度提升,显著增强了视觉质量和对齐效果。00
AstrBot✨ 易上手的多平台 LLM 聊天机器人及开发框架 ✨ 平台支持 QQ、QQ频道、Telegram、微信、企微、飞书 | OpenAI、DeepSeek、Gemini、硅基流动、月之暗面、Ollama、OneAPI、Dify 等。附带 WebUI。Python07
handy-ollama动手学Ollama,CPU玩转大模型部署,在线阅读地址:https://datawhalechina.github.io/handy-ollama/Jupyter Notebook07
项目优选
收起
暂无描述
Dockerfile
767
5.01 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
866
1.95 K
Ascend Extension for PyTorch
Python
725
897
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
692
1.35 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
458
454
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.09 K
1.12 K
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.02 K
265
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
152
238
CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。
Python
1.01 K
629
Oohos_react_native
React Native鸿蒙化仓库
C++
357
425