大型语言模型(LLM)在2025年将更加深入地渗透到我们生活的方方面面,因此,LLM可观测性的重要性日益凸显。本文旨在为开发者提供一份精选的开源LLM可观测性工具清单,以便更好地理解、监控和优化LLM应用的性能、成本以及潜在问题。我们将逐一介绍这些工具,包括安装方法、核心功能和集成要点,帮助你选择最适合自身需求的LLM观测解决方案。这些工具将赋能你更好地追踪LLM调用,检测异常行为,最终提升产品的质量和用户体验。
LLM可观测性的关键价值
在深入研究具体工具之前,我们需要明确为什么LLM可观测性如此重要。想象一下,你构建了一个基于LLM的客户服务聊天机器人。用户体验的好坏,直接关系到业务的成败。如果没有适当的监控手段,你如何知道:
- 追踪:每一次用户交互的完整路径,从最初的prompt到最终的回复,确保没有信息遗漏或环节出错?
- 成本:每个prompt的成本,以及不同模型版本之间的成本差异,从而进行有效的成本控制?
- 延迟:不同API端点的响应时间,以及是否存在影响用户体验的瓶颈?
- 错误:LLM是否输出了不准确、有害或不相关的回复,即所谓的“幻觉”?
- 检索增强生成 (RAG) 流程:embeddings的质量,检索的效率,以及它们如何影响最终生成的文本的质量?
LLM可观测性正是为了解决这些问题而生。它使你能够追踪单个token或prompt调用,监控成本和延迟,检测错误和异常行为,并关联RAG流程中的各个环节。一个具体的案例是,通过LLM观测发现某个特定的prompt导致了大量的无效回复,进而触发了对该prompt的优化,最终提高了客户满意度。
Traceloop (OpenLLMetry):符合OpenTelemetry标准的追踪利器
Traceloop (OpenLLMetry)是一个符合OpenTelemetry (OTLP) 标准的SDK,专注于为LLM应用提供全面的追踪和指标。它允许开发者以标准化的方式收集遥测数据,并将其导出到各种后端进行分析。
-
安装:
pip install traceloop-sdk
-
配置:
from traceloop.sdk import Traceloop # 使用你的应用名称初始化;可以禁用批处理以立即查看追踪 Traceloop.init(app_name="your_app_name", disable_batch=True)
-
核心功能:
- 基于Span的遥测数据,兼容Jaeger、Zipkin等OTLP接收器。这意味着你可以将Traceloop的数据导入到你现有的监控系统中,例如Grafana。
- 通过init参数配置批处理发送和采样,灵活控制数据收集的粒度。
- 内置语义标签,用于错误、重试和截断输出,方便快速定位问题。例如,如果一个LLM调用因为超时而失败,Traceloop会自动添加一个错误标签,帮助你识别问题根源。
-
集成: 与LangChain, LlamaIndex, Haystack等框架以及原生的OpenAI SDK无缝集成,无需修改大量代码。例如,你可以在LangChain链中使用Traceloop,自动追踪每个步骤的执行时间和输入输出。
Traceloop的优势在于其标准化和易用性。如果你已经在使用OpenTelemetry,Traceloop可以无缝集成到你的工作流程中。
Langfuse:模块化的LLM链观测与日志框架
Langfuse是一个模块化的可观测性和日志框架,专门为LLM链设计。它提供结构化的事件日志记录,让你能够深入了解LLM链的执行过程。
-
安装:
pip install langfuse
-
配置:
from langfuse import Langfuse # 使用你的API密钥和可选的项目名称初始化 Langfuse.init(api_key="YOUR_API_KEY", project="my_project")
-
核心功能:
- 结构化的事件日志记录,用于prompt、completion和链步骤。你可以记录每个prompt的输入和输出,以及每个步骤的执行时间,从而全面了解LLM链的性能。
- 内置的向量存储集成:Pinecone, Weaviate, FAISS。这让你能够轻松地追踪RAG流程中的向量检索过程。
- Web UI仪表板,用于链执行流程和性能指标。Langfuse提供可视化的界面,让你能够快速了解LLM链的瓶颈和潜在问题。
-
集成: 使用装饰器 (
@Langfuse.trace
) 或上下文管理器 (with Langfuse.trace()
),方便地追踪函数或代码块。例如,你可以使用@Langfuse.trace
装饰器来追踪一个LLM调用函数,Langfuse会自动记录该函数的输入输出和执行时间。
Langfuse的优势在于其模块化和可视化。它提供灵活的配置选项,让你能够根据自己的需求定制观测方案。
Helicone:无代码入侵的代理式观测方案
Helicone是一种基于代理的解决方案,无需修改代码即可捕获模型调用。它通过充当LLM API的代理,自动收集所有请求和响应的数据。
-
部署:
docker run -d -p 8080:8080 \ -e HELICONE_API_KEY="YOUR_API_KEY" \ helicone/proxy:latest
-
配置: 将LLM客户端指向代理端点:
export OPENAI_API_BASE_URL="http://localhost:8080/v1"
-
核心功能:
- 通过代理透明地捕获所有API调用,无需修改代码。这意味着你可以快速部署Helicone,而无需担心代码兼容性问题。
- 自动化的成本和延迟报告。Helicone会自动计算每个LLM调用的成本和延迟,并生成报告,帮助你进行成本控制和性能优化。
- 计划的电子邮件摘要,包含使用情况指标。Helicone会定期发送电子邮件,汇总你的LLM使用情况,让你随时掌握LLM的运行状况。
-
集成: 部署在任何基于HTTP的LLM端点之前即可,无需代码更改。Helicone可以与任何支持HTTP API的LLM模型集成,例如OpenAI, Cohere等。
Helicone的优势在于其非侵入性。如果你不想修改代码,Helicone是一个理想的选择。
Lunary:专注于RAG流程的可观测性工具
Lunary是一个专注于检索增强生成 (RAG) 的可观测性工具。它帮助你追踪embeddings查询、相似度得分,并将检索延迟与生成延迟关联起来。
-
安装:
pip install lunary
-
配置:
from lunary import Client client = Client(api_key="YOUR_API_KEY")
-
核心功能:
- 追踪embeddings查询和相似度得分。Lunary可以记录每个embeddings查询的文本和向量,以及检索到的文档的相似度得分,帮助你评估embeddings的质量和检索的准确性。
- 将检索延迟与生成延迟相关联。Lunary可以测量检索和生成的时间,并将其关联起来,帮助你识别RAG流程中的瓶颈。
- 交互式仪表板,用于查询与上下文对齐。Lunary提供可视化的界面,让你能够直观地了解查询和上下文之间的关系,从而优化RAG流程。
-
集成: 在RAG pipeline执行周围使用
client.trace_rag()
上下文管理器。例如:from lunary import Client client = Client(api_key="YOUR_API_KEY") with client.trace_rag(): # RAG pipeline logic here query = "What is the capital of France?" context = retrieve_context(query) response = generate_response(query, context)
Lunary的优势在于其对RAG流程的专注。如果你正在构建RAG应用,Lunary可以为你提供深入的洞察。
Phoenix (Arize AI):LLM指标的监控与异常检测服务
Phoenix (Arize AI)是一个针对LLM指标的监控和异常检测服务。它可以自动检测模型漂移,并在延迟和错误率超过阈值时发出警报。
-
设置:
npm install @arize-ai/phoenix
-
配置:
import { Phoenix } from "@arize-ai/phoenix"; const phoenix = new Phoenix({ apiKey: "YOUR_API_KEY", organization: "YOUR_ORG_ID", environment: "production" });
-
核心功能:
- 自动检测跨模型版本的漂移。Phoenix可以比较不同模型版本的性能指标,并检测是否存在漂移,帮助你及时发现问题。
- 在延迟和错误率阈值上发出警报。Phoenix可以监控LLM的延迟和错误率,并在超过预设阈值时发出警报,让你能够及时采取行动。
- A/B测试支持,用于比较分析。Phoenix支持A/B测试,让你能够比较不同模型版本的性能,从而选择最佳模型。
-
集成: 在模型调用周围注入
phoenix.logInference()
调用,以记录推理事件。例如:import { Phoenix } from "@arize-ai/phoenix"; const phoenix = new Phoenix({ apiKey: "YOUR_API_KEY", organization: "YOUR_ORG_ID", environment: "production" }); async function processQuery(query) { const startTime = Date.now(); try { const response = await myLLMModel.generate(query); const endTime = Date.now(); const latency = endTime - startTime;
phoenix.logInference({ query: query, response: response, latency: latency, modelName: "myLLMModel", modelVersion: "v1" }); return response; } catch (error) { const endTime = Date.now(); const latency = endTime - startTime; phoenix.logInference({ query: query, error: error.message, latency: latency, modelName: "myLLMModel", modelVersion: "v1" }); throw error; }
}
Phoenix的优势在于其自动化和警报功能。它可以帮助你及时发现并解决LLM应用中的问题。
TruLens:Hugging Face的语义评估工具包
TruLens是一个来自Hugging Face的语义评估工具包。它提供内置的评估器,用于评估LLM输出的连贯性、冗余性和毒性。
-
安装:
pip install trulens-eval
-
配置:
from trulens_eval import Tru tru = Tru(model_name="your-model-name") results = tru.run(["prompt1", "prompt2"], metric="coherence")
-
核心功能:
- 内置评估器,用于评估连贯性、冗余性和毒性。TruLens提供多种评估指标,让你能够全面评估LLM输出的质量。
- 批量评估历史输出。TruLens可以批量评估历史输出,帮助你了解LLM的性能趋势。
- 支持自定义指标扩展。TruLens允许你自定义评估指标,以满足特定的需求。
-
集成: 在评估pipeline或CI工作流程中使用
tru.run()
来监控输出质量。例如:from trulens_eval import Tru, Feedback tru = Tru() # Define feedback functions. f_coherence = Feedback.coherence().on_output() # Define a groundedness function f_groundedness = Feedback.groundedness().on(context_selection=lambda x: x.document.content).on_output() # Chain together into a combined evaluation f_combined = f_coherence + f_groundedness # Instrument your LLM application. from trulens_eval import instrument @instrument def your_llm_app(prompt, context): # Your LLM application logic here. pass # Run the evaluation. results = tru.run(your_llm_app, prompts=["prompt1", "prompt2"], context=["context1", "context2"], feedback_functions=[f_combined])
TruLens的优势在于其语义评估能力。它可以帮助你深入了解LLM输出的质量,并发现潜在的问题。
其他工具简介
除了上述工具之外,还有一些其他的开源LLM可观测性工具值得关注:
- Portkey: 一个CLI驱动的prompt工程工作流分析器。
- PostHog: 一个具有LLM可观测性插件的产品分析平台。
- Keywords AI: 一个基于关键词规则的意图标记和警报工具。
- Langsmith: LangChain的官方可观测性扩展。
- Opik & OpenLIT: 轻量级的社区项目,用于最小开销的instrumentation。
选择合适的工具
选择合适的LLM可观测性工具取决于你的具体需求。如果你需要一个符合OpenTelemetry标准的追踪工具,Traceloop (OpenLLMetry) 是一个不错的选择。如果你正在构建RAG应用,Lunary 可以为你提供深入的洞察。如果你不想修改代码,Helicone 是一个理想的选择。
下一步
选择合适的工具后,下一步是集成和监控。在生产环境中部署之前,务必在staging环境中进行测试。监控关键指标,并根据需要调整采样率和警报阈值,以平衡开销和洞察力。
结论
LLM可观测性是构建高质量LLM应用的关键。通过使用合适的开源LLM可观测性工具,你可以更好地理解、监控和优化LLM应用的性能、成本以及潜在问题。随着LLM技术的不断发展,LLM观测工具也将不断完善,为开发者提供更强大的支持。
希望本文能够帮助你选择最适合自身需求的LLM观测解决方案,并构建出更加可靠和高效的LLM应用。请记住,持续的监控和优化是确保LLM应用成功的关键。