大型语言模型(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应用成功的关键。