Skip to content

可观测性#

注意:

本页面提到的工具和集成被视为遗留。现在,可观测性通过 instrumentation 模块(v0.10.20 及更高版本可用)来处理。

LlamaIndex 提供一键式可观测性🔭,以便您在生产环境中构建合乎原则的 LLM 应用程序。

在开发 LLM 应用程序时,对数据(RAG 系统、代理)进行原则性的观察、调试和评估是一个关键要求,既要能够观察整个系统,也要能够观察每个组件。

此功能允许您将 LlamaIndex 库与我们合作伙伴提供的强大的可观测性/评估工具无缝集成。只需配置一次变量,您就可以执行以下操作:

  • 查看 LLM/prompt 输入/输出
  • 确保任何组件的输出(LLMs、嵌入)表现如预期
  • 查看索引和查询的调用跟踪

每个提供商都有相似之处,也有不同之处。请查看下面的完整指南!

使用模式#

要切换,通常只需要执行以下操作:

from llama_index.core import set_global_handler

# 通用用法
set_global_handler("<handler_name>", **kwargs)

# W&B 示例
# set_global_handler("wandb", run_args={"project": "llamaindex"})

请注意,所有传递给 set_global_handlerkwargs 都将传递给底层的回调处理程序。

就是这样!执行将无缝地传输到下游服务(例如 W&B Prompts),您将能够访问诸如查看应用程序执行跟踪等功能。

注意:TruLens(由 TruEra 提供)使用了不同的“一键式”体验。详情请参见下文。

简单(LLM 输入/输出)#

这个简单的可观测性工具会将每个 LLM 输入/输出对打印到终端。当您需要快速在 LLM 应用程序上启用调试日志记录时,这是最有用的。

使用模式#

import llama_index.core

llama_index.core.set_global_handler("simple")

合作伙伴 一键式 集成#

我们与合作伙伴提供了丰富的集成。为每个合作伙伴提供了简短描述 + 使用模式和指南。

Langfuse#

Langfuse 是一个开源的 LLM 工程平台,帮助团队协作调试、分析和迭代他们的 LLM 应用程序。通过 Langfuse 集成,您可以无缝跟踪和监控 LlamaIndex 应用程序的性能、跟踪和指标。详细的 LlamaIndex 上下文增强和 LLM 查询过程的跟踪可以直接在 Langfuse UI 中查看。

使用模式#

from llama_index.core import set_global_handler

# 确保您已安装了 'llama-index-callbacks-langfuse' 集成包。

# 注意:按照 langfuse.com 项目设置中显示的方式设置您的环境变量 'LANGFUSE_SECRET_KEY'、'LANGFUSE_PUBLIC_KEY' 和 'LANGFUSE_HOST'。

set_global_handler("langfuse")

指南#

langfuse-tracing

DeepEval#

DeepEval(由 Confident AI 提供) 是一个用于 LLM 应用程序的开源评估框架。当您使用 DeepEval 的 14+ 默认指标(摘要、幻觉、答案相关性、忠实度、RAGAS 等)“单元测试”您的 LLM 应用程序时,您可以通过与 LlamaIndex 的跟踪集成来调试失败的测试用例,或者通过 DeepEval 的托管评估平台 Confident AI生产环境中调试不令人满意的评估,该平台可以在生产环境中运行无参考评估。

使用模式#

from llama_index.core import set_global_handler

set_global_handler("deepeval")

# 注意:在 CLI 中运行 'deepeval login' 以在 Confident AI 上记录跟踪。像往常一样运行所有 LlamaIndex 应用程序,跟踪将被收集,并在运行评估时在 Confident AI 上显示。
...

tracing

Weights and Biases Prompts#

Prompts 允许用户记录/跟踪/检查 LlamaIndex 在索引构建和查询过程中的执行流程。它还允许用户对其索引进行版本控制。

使用模式#

from llama_index.core import set_global_handler

set_global_handler("wandb", run_args={"project": "llamaindex"})

# 注意:不需要执行以下操作
from llama_index.callbacks.wandb import WandbCallbackHandler
from llama_index.core.callbacks import CallbackManager
from llama_index.core import Settings

# wandb_callback = WandbCallbackHandler(run_args={"project": "llamaindex"})
# Settings.callback_manager = CallbackManager([wandb_callback])

# 访问处理程序的其他方法以持久化索引和加载索引
import llama_index.core

# 持久化索引
llama_index.core.global_handler.persist_index(graph, index_name="my_index")
# 加载存储上下文
storage_context = llama_index.core.global_handler.load_storage_context(
    artifact_url="ayut/llamaindex/my_index:v0"
)

指南#

OpenLLMetry#

OpenLLMetry 是基于 OpenTelemetry 的开源项目,用于追踪和监控 LLM 应用程序。它连接到所有主要的可观测平台,并且在几分钟内安装完成。

使用模式#

from traceloop.sdk import Traceloop

Traceloop.init()

指南#

Arize Phoenix#

Arize Phoenix:以零配置的方式以闪电般的速度获取 LLMOps 洞察。Phoenix 通过提供以下功能,为监视您的模型和 LLM 应用程序提供了首选的笔记本体验:

  • LLM 跟踪 - 跟踪 LLM 应用程序的执行,以了解 LLM 应用程序的内部工作原理,并解决与检索和工具执行等问题相关的问题。
  • LLM 评估 - 利用大型语言模型的能力,评估您的生成模型或应用程序的相关性、毒性等。

使用模式#

# Phoenix 可以实时显示从 LlamaIndex 应用程序自动收集的跟踪。
import phoenix as px

# 在输出中查找一个 URL,以在浏览器中打开应用程序。
px.launch_app()
# 应用程序最初是空的,但随着您按照下面的步骤进行操作,跟踪将自动出现,因为您的 LlamaIndex 应用程序运行。

import llama_index.core

llama_index.core.set_global_handler("arize_phoenix")

# 像往常一样运行所有的 LlamaIndex 应用程序,跟踪将被收集并在 Phoenix 中显示。
...

指南#

OpenInference#

OpenInference 是用于捕获和存储 AI 模型推断的开放标准。它通过使用 LLM 可观测性解决方案(如 Phoenix)来实现 LLM 应用程序的实验、可视化和评估。

使用模式#

import llama_index.core

llama_index.core.set_global_handler("openinference")

# 注意:不需要执行以下操作
from llama_index.callbacks.openinference import OpenInferenceCallbackHandler
from llama_index.core.callbacks import CallbackManager
from llama_index.core import Settings

# callback_handler = OpenInferenceCallbackHandler()
# Settings.callback_manager = CallbackManager([callback_handler])

# 在此运行您的 LlamaIndex 应用程序...
for query in queries:
    query_engine.query(query)

# 以 OpenInference 格式查看您的 LLM 应用程序数据的数据框。
from llama_index.core.callbacks.open_inference_callback import as_dataframe

query_data_buffer = llama_index.core.global_handler.flush_query_data_buffer()
query_dataframe = as_dataframe(query_data_buffer)

注意:要解锁 Phoenix 的功能,您需要定义额外的步骤来提供查询/上下文数据框。请参见下文!

指南#

TruEra TruLens#

TruLens 允许用户通过反馈功能和跟踪等功能来对 LlamaIndex 应用程序进行仪器化/评估。

使用模式 + 指南#

# 使用 trulens
from trulens_eval import TruLlama

tru_query_engine = TruLlama(query_engine)

# 查询
tru_query_engine.query("作者在成长过程中做了什么?")

指南#

HoneyHive#

HoneyHive 允许用户跟踪任何 LLM 管道的执行流程。用户可以调试和分析其跟踪,或自定义特定跟踪事件的反馈,以从生产中创建评估或微调数据集。

使用模式#

from llama_index.core import set_global_handler

set_global_handler(
    "honeyhive",
    project="我的蜜蜂项目",
    name="我的LLM管道名称",
    api_key="我的蜜蜂API密钥",
)

# 注意:不需要执行以下操作
from llama_index.core.callbacks import CallbackManager

# from honeyhive.utils.llamaindex_tracer import HoneyHiveLlamaIndexTracer
from llama_index.core import Settings

# hh_tracer = HoneyHiveLlamaIndexTracer(
#     project="我的蜜蜂项目",
#     name="我的LLM管道名称",
#     api_key="我的蜜蜂API密钥",
# )
# Settings.callback_manager = CallbackManager([hh_tracer])

使用 Perfetto 调试和分析 HoneyHive 的跟踪数据。

指南#

PromptLayer#

PromptLayer 允许您跟踪 LLM 调用的分析数据,对各种用例的提示进行标记、分析和评估。与 LlamaIndex 一起使用,可跟踪 RAG 提示等性能。

使用模式#

import os

os.environ["PROMPTLAYER_API_KEY"] = "pl_7db888a22d8171fb58aab3738aa525a7"

from llama_index.core import set_global_handler

# pl_tags 是可选的,可帮助您组织提示和应用
set_global_handler("promptlayer", pl_tags=["paul graham", "essay"])

指南#

Langtrace#

Langtrace 是一个强大的开源工具,支持 OpenTelemetry,并旨在无缝跟踪、评估和管理 LLM 应用程序。Langtrace 与 LlamaIndex 直接集成,提供有关准确性、评估和延迟等性能指标的详细实时见解。

安装#

pip install langtrace-python-sdk

使用模式#

from langtrace_python_sdk import (
    langtrace,
)  # 必须在任何 llm 模块导入之前

langtrace.init(api_key="<LANGTRACE_API_KEY>")

指南#

OpenLIT#

OpenLIT 是一个原生于 OpenTelemetry 的 GenAI 和 LLM 应用程序可观察性工具。它旨在通过一行代码将可观察性集成到 GenAI 项目中。OpenLIT 为各种 LLM、VectorDB 和 LlamaIndex 等框架提供 OpenTelemetry 自动工具化。OpenLIT 提供有关 LLM 应用程序性能、请求跟踪、使用成本、令牌等概览指标的见解。

安装#

pip install openlit

使用模式#

import openlit

openlit.init()

指南#

更多可观察性#