在构建和调试基于大模型的应用时,性能跟踪和调试是至关重要的步骤。Langfuse 是一个开源的 LLM 工程平台,可以帮助团队协作调试、分析和迭代他们的 LLM 应用程序。本文将介绍如何使用 LangfuseCallbackHandler 集成 LlamaIndex,并在 Langfuse UI 中查看性能跟踪和度量。
安装包
首先,我们需要安装所需的 Python 包:
%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"] = "https://cloud.langfuse.com" # 🇪🇺 EU region, 🇺🇸 US region: "https://us.cloud.langfuse.com"
# 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 服务器。
# ... 这里是您的 LlamaIndex 调用 ...
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()
运行上述代码后,您将在 Langfuse 项目中看到您的索引和查询的跟踪结果。
可能遇到的错误
- API 密钥错误:确保您正确设置了 Langfuse 和 OpenAI 的 API 密钥。
- 网络问题:检查您的网络连接,确保能够连接到 Langfuse 服务器。
- 回调处理器未正确注册:确认回调处理器已正确设置和注册。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料: