跳转到内容

可观测性

可观测性是调试工作流的关键。除了仅添加 print() 语句外,workflows 还配备了一个广泛的检测系统,用于追踪每个工作流步骤的输入和输出。

此外,您还可以利用这个插装系统为工作流步骤之外的任何函数添加可观测性!所有这些信息的更深入示例可以在可观测性示例文件夹中找到。

工作流与 OpenTelemetry 集成以导出追踪数据。您可以使用 llama-index-observability-otel 包:

from llama_index.observability.otel import LlamaIndexOpenTelemetry
# Initialize with your span exporter
instrumentor = LlamaIndexOpenTelemetry(
span_exporter=your_span_exporter,
service_name_or_resource="your_service_name",
)
# Start registering traces
instrumentor.start_registering()

所有工作流步骤、LLM调用和自定义事件都会自动捕获并导出为OpenTelemetry跨度,包含以下详细属性:

  • 每个工作流步骤的跨度名称
  • 开始和结束时间
  • 事件属性(输入数据、输出数据等)
  • 展示执行流程的嵌套span关系

工作流与主流可观测性平台无缝集成:

Arize Phoenix

Arize Phoenix 为你的工作流提供实时追踪和可视化功能。

您可以在示例笔记本中阅读更多内容。

Langfuse 直接与工作流自带的检测系统集成。

您可以在示例笔记本中阅读更多内容。

您可以使用LlamaIndex调度器定义自定义跨度和事件,为代码添加细粒度追踪:

from llama_index_instrumentation import get_dispatcher
from llama_index_instrumentation.base import BaseEvent
dispatcher = get_dispatcher()
# Define custom events
class ExampleEvent(BaseEvent):
data: str
class AnotherExampleEvent(BaseEvent):
print_statement: str
# Use the @dispatcher.span decorator
@dispatcher.span
def example_fn(data: str) -> None:
dispatcher.event(ExampleEvent(data=data))
s = "This are example string data: " + data
dispatcher.event(AnotherExampleEvent(print_statement=s))
print(s)

当你调用已插桩的函数时,所有跨度和事件都会被任何已配置的追踪后端自动捕获。

查看 examples/observability 目录中的完整示例。