LlamaIndex与可观测性:使用Phoenix实现系统监控

223 阅读2分钟

在构建AI应用时,了解系统的运行状态、性能瓶颈和潜在问题至关重要。本文将介绍如何使用Phoenix为LlamaIndex应用添加可观测性,帮助你更好地监控和优化系统。

什么是可观测性?

可观测性(Observability)是指从系统的外部输出来理解系统内部状态的能力。在AI应用中,良好的可观测性可以帮助我们:

  • 监控系统性能
  • 追踪请求流程
  • 诊断潜在问题
  • 优化系统表现

Phoenix与LlamaIndex的集成

Phoenix是一个专门为LLM应用设计的可观测性平台,可以无缝集成到LlamaIndex应用中。让我们看看具体如何实现:

1. 基础配置

首先,我们需要访问llamatrace.com/官网,获取一个API key

Pasted image 20250103202902.png

然后在.env 文件中进行设置:

OPENAI_API_KEY=sk-xxx  (填你自己的Key)
PHOENIX_API_KEY=fcxxxx (填你自己的Key)

最后在代码中将phoenix设置为全局处理器

import os
from dotenv import load_dotenv
import llama_index.core

# 加载环境变量
load_dotenv()

# 配置Phoenix可观测性工具

# 从环境变量获取Phoenix API密钥
PHOENIX_API_KEY = os.getenv("PHOENIX_API_KEY")

# 设置OTEL(OpenTelemetry)导出器的请求头,包含API密钥
os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = f"api_key={PHOENIX_API_KEY}"

# 设置全局处理器,配置Phoenix端点用于追踪数据收集
llama_index.core.set_global_handler(
	"arize_phoenix",
	endpoint="https://llamatrace.com/v1/traces"
)

2. 文档索引与持久化

接下来,我们实现文档的加载和索引创建:

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, StorageContext, load_index_from_storage

# 从pdf目录读取所有PDF文档
documents = SimpleDirectoryReader("pdf/").load_data()

# 实现索引的持久化存储和加载
if os.path.exists("storage"):
    print("Loading index from storage")
    storage_context = StorageContext.from_defaults(persist_dir="storage")
    index = load_index_from_storage(storage_context)
else:
    print("Creating new index")
    index = VectorStoreIndex.from_documents(documents) 
    index.storage_context.persist(persist_dir="storage")

这部分代码实现了:

  1. 从PDF目录加载文档
  2. 检查是否存在持久化索引
  3. 根据情况选择加载或创建索引
  4. 保存索引到存储目录

3. 查询执行

最后,我们创建查询引擎并执行查询:

# 创建查询引擎
query_engine = index.as_query_engine()

# 执行查询
response = query_engine.query("什么是设计目标,请详细说明。")
print(response)

然后就可以打开官网查看到Llamaindex的执行过程啦!

Pasted image 20250103202712.png

希望这篇文章能帮助你更好地监控和优化你的LlamaIndex应用! 下一篇文章中,我们将探讨如何使用LlamaIndex构建AI智能体,实现更复杂的交互功能。