在构建AI应用时,了解系统的运行状态、性能瓶颈和潜在问题至关重要。本文将介绍如何使用Phoenix为LlamaIndex应用添加可观测性,帮助你更好地监控和优化系统。
什么是可观测性?
可观测性(Observability)是指从系统的外部输出来理解系统内部状态的能力。在AI应用中,良好的可观测性可以帮助我们:
- 监控系统性能
- 追踪请求流程
- 诊断潜在问题
- 优化系统表现
Phoenix与LlamaIndex的集成
Phoenix是一个专门为LLM应用设计的可观测性平台,可以无缝集成到LlamaIndex应用中。让我们看看具体如何实现:
1. 基础配置
首先,我们需要访问llamatrace.com/官网,获取一个API key
然后在.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")
这部分代码实现了:
- 从PDF目录加载文档
- 检查是否存在持久化索引
- 根据情况选择加载或创建索引
- 保存索引到存储目录
3. 查询执行
最后,我们创建查询引擎并执行查询:
# 创建查询引擎
query_engine = index.as_query_engine()
# 执行查询
response = query_engine.query("什么是设计目标,请详细说明。")
print(response)
然后就可以打开官网查看到Llamaindex的执行过程啦!
希望这篇文章能帮助你更好地监控和优化你的LlamaIndex应用! 下一篇文章中,我们将探讨如何使用LlamaIndex构建AI智能体,实现更复杂的交互功能。