找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3169

积分

1

好友

440

主题
发表于 16 小时前 | 查看: 1| 回复: 0

Langfuse 是一款开源的 LLM 应用可观测性与分析平台,专为管理和调试由大语言模型驱动的应用程序而设计。它可以帮助开发者追踪每一次LLM调用,分析成本和延迟,从而更好地理解应用行为。今天,我们就来一步步实现如何在本地安装Langfuse,并将其与 LangChain 框架集成,实现对LLM应用的有效监控。

本地化安装

最便捷的本地安装方式是使用 Docker Compose。

# 下载源码
git clone https://github.com/langfuse/langfuse.git
cd langfuse
# 启动服务
docker compose up -d

配置服务

服务启动后,通过浏览器访问 http://localhost:3000,你将看到登录界面。

Langfuse登录界面

点击 “Sign up” 链接,进入账号注册页面。

Langfuse注册账号界面

成功登录后,系统会引导你创建一个新的组织(Organization)。点击 “+ New Organization” 按钮。

Langfuse组织管理首页

在创建组织页面,填写组织名称后点击 “Create” 按钮。

Langfuse创建组织表单

组织创建完成后,可以跳过 “Invite Members” 步骤,直接点击 “Next” 按钮进入第三步 “Create Project”。

Langfuse成员管理页面

在创建项目页面,输入你的项目名称,然后点击 “Create” 按钮。项目是用于分组追踪记录、数据集等的基本单元。

Langfuse创建项目表单

项目创建成功后,进入项目主页。点击左侧导航栏的 “Tracing”,页面会引导你进行追踪配置。点击 “Configure Tracing”。

Langfuse追踪功能引导页

在追踪设置页面,第一步是获取API密钥。点击 “Create new API key” 按钮。

Langfuse追踪设置指引页

创建成功后,页面会显示你的 Secret KeyPublic Key,请务必妥善保存。同时,页面也会给出将其配置到环境变量(.env文件)中的示例。

Langfuse API密钥生成结果

LangChain 集成 Langfuse

安装依赖

在你的 Python 环境中安装 langfuse 包。

pip install langfuse

配置环境变量

创建一个 .env 文件,将上一步在 WebUI 中生成的配置信息复制进去,例如:

LANGFUSE_SECRET_KEY="sk-1F-9532Fbde-dC57-478F-ac74-F6B0c4385658"
LANGFUSE_PUBLIC_KEY="pk-1F-2f17636d-64a4-46e3-3802-4050c406ee7c"
LANGFUSE_BASE_URL="http://127.0.0.1:3000"

基本使用:追踪LLM调用

集成 Langfuse 到 LangChain 应用中的核心是使用 CallbackHandler。步骤如下:

  1. 导入包:from langfuse.langchain import CallbackHandler
  2. 创建回调处理器对象:langfuse_handler = CallbackHandler()
  3. 将该处理器加入到 RunnableConfigcallbacks 属性中
  4. 在调用 LLM 时传入该 config

下面是一个完整的示例代码,使用了智谱AI的GLM模型:

from langchain_core.runnables import RunnableConfig
from langchain_openai import ChatOpenAI
from langfuse.langchain import CallbackHandler

from utils.env_util import ZAI_API_KEY, ZAI_BASE_URL

langfuse_handler = CallbackHandler()

model = ChatOpenAI(
    temperature=0.8,
    model="glm-4.7-flash",
    api_key=ZAI_API_KEY,
    base_url=ZAI_BASE_URL,
    max_tokens=2048,
    stream_usage=True,
    streaming=True
)

config = RunnableConfig(
    configurable={
        "thread_id": "12345t"
    },
    callbacks=[langfuse_handler]
)

result = model.invoke("你是谁?", config=config)
print(result)

运行这段代码后,回到 Langfuse 的 Tracing 页面,你就能看到这次 LLM 调用的详细追踪记录,包括输入、输出、延迟、使用的Token数等。

Langfuse追踪列表展示LLM调用

点击单条记录,可以查看更详尽的调试信息,例如模型参数、元数据等。

Langfuse单次调用详情页

进阶使用:按用户和会话追踪

对于更复杂的应用,你可能需要按用户(User)或会话(Session)来聚合和查看追踪数据。Langfuse 提供了相应的 API 来实现这一点。

from langchain_core.runnables import RunnableConfig
from langchain_openai import ChatOpenAI
from langfuse.langchain import CallbackHandler
from langfuse import get_client, propagate_attributes

from utils.env_util import ZAI_API_KEY, ZAI_BASE_URL

# 创建Langfuse客户端对象
langfuse = get_client()
langfuse_handler = CallbackHandler()

model = ChatOpenAI(
    temperature=0.8,
    model="glm-4.7-flash",
    api_key=ZAI_API_KEY,
    base_url=ZAI_BASE_URL,
    max_tokens=2048,
    stream_usage=True,
    streaming=True
)

config = RunnableConfig(
    configurable={
        "thread_id": "12345t"
    },
    callbacks=[langfuse_handler]
)

# 定义 session_id 和 user_id
session_id = "s:11111"
user_id = "u:11111"
with langfuse.start_as_current_observation(as_type="span", name="chat-agent"):
    with propagate_attributes(session_id=session_id, user_id=user_id):
        result = model.invoke("你是谁?", config=config)
        print(result)

通过这种方式,你可以在 Langfuse 的 “Users” 页面,通过指定的 user_id 查看到该用户的所有相关调用记录、总成本、总Token消耗等聚合信息,这对于分析用户行为和应用 RAG 系统的性能至关重要。

Langfuse用户管理列表

按用户查看追踪记录

你还可以进入用户的仪表盘,获得更直观的数据概览。

用户数据仪表盘

总结

通过以上步骤,我们成功在本地部署了 Langfuse,并将其与 LangChain 应用集成。现在,你可以清晰地 监控 每一次LLM调用的细节,从延迟、成本到具体的输入输出。这对于调试复杂的Agent工作流、优化提示词、控制预算具有巨大的价值。希望这篇指南能帮助你在开发LLM应用时,更好地利用可观测性工具提升开发效率和应用质量。如果你想与更多开发者交流此类技术的实践心得,欢迎访问 云栈社区 参与讨论。




上一篇:聊聊为什么蓝牙、WiFi、4G模组都爱用串口:接口背后的设计哲学
下一篇:OpenClaw、ClawTask与MoltBook:它们正在构建一个没有人类的AI经济闭环
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-2 22:21 , Processed in 0.277818 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表