Langfuse 部署与配置教程
Langfuse 部署与配置教程 Agent本文介绍如何为 Agent 项目部署LangfuseLLM 可观测 / Tracing 平台并把项目接入其中实现每次大模型调用的追踪与可视化。官网 Langfuse一、Langfuse 是什么Langfuse 是一个开源的LLM 可观测性平台用来记录、追踪、分析每一次大模型调用Trace追踪把一次完整的 LLM 调用链路prompt → 回复 token → 耗时 → 成本记录成一条 trace。可视化Web 界面按项目维度展示所有调用可按模型 / 时间检索。调试查看每次调用实际发送的 prompt 与返回结果排查生成质量问题。本项目把 Langfuse 以langchain callback handler的方式挂载到 LLM 客户端上无需改造业务生成逻辑。二、整体架构[ Agent 服务] ──(HTTPS/HTTP)──► [Langfuse 服务Web 采集] │ │ └── 读取 LANGFUSE_* 环境变量 └── 存 PostgreSQL可选客户端AgentPythonlangchain通过LANGFUSE_*环境变量连接 Langfuse。服务端Langfuse 提供 Web UI3000端口与采集 API。三、服务端部署 LangfuseDocker以下以Langfuse 官方镜像 Docker Compose为例。 Agent 项目里已有 langsmith 的自托管配置docker-compose.langsmith.ymlLangfuse 需另行部署一套。1. 准备docker-compose.langfuse.yml在服务器上新建一个目录例如~/langfuse创建如下文件services: langfuse: image: ghcr.io/langfuse/langfuse:latest container_name: langfuse restart: unless-stopped ports: - 3000:3000 # 重要NEXTAUTH_URL 与 LANGFUSE_PUBLIC_URL 需让客户端能访问到 environment: DATABASE_URL: postgresql://postgres:LANGFFUSE_DB_PASSWORDlangfuse-db:5432/langfuse # 无外部 OAuth 时使用一个强随机密钥openssl rand -base64 32 NEXTAUTH_SECRET: 你的随机SHA256 SALT: 你的随机hex NEXTAUTH_URL: http://192.168.1.7:3000 LANGFUSE_PUBLIC_URL: http://192.168.1.7:3000 # 首次启动的初始管理员改掉 INIT_PROJECT_ID: 216879ad-14da-4daa-9a96-368b9305d393 INIT_PROJECT_PUBLIC_KEY: pk-lf-YOUR_PUBLIC_KEY INIT_PROJECT_SECRET_KEY: sk-lf-YOUR_SECRET_KEY INIT_PROJECT_NAME: default INIT_USER_EMAIL: adminexample.com INIT_USER_PASSWORD: 改我 INIT_USER_NAME: Admin depends_on: langfuse-db: condition: service_healthy healthcheck: test: [CMD, wget, -qO-, http://127.0.0.1:3000/api/public/health] interval: 30s timeout: 5s retries: 10 langfuse-db: image: postgres:15-alpine container_name: langfuse-db restart: unless-stopped environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: LANGFFUSE_DB_PASSWORD POSTGRES_DB: langfuse volumes: - langfuse-db-data:/var/lib/postgresql/data healthcheck: test: [CMD-SHELL, pg_isready -U postgres] interval: 5s timeout: 5s retries: 30 volumes: langfuse-db-data:TIP上面的INIT_PROJECT_PUBLIC_KEY/INIT_PROJECT_SECRET_KEY/INIT_PROJECT_ID/SALT/NEXTAUTH_SECRET需要先生成。Langfuse 官方提供一键生成脚本也可在首次启动 Web 界面后手动创建项目并拿 key见第五节。2. 生成密钥# NEXTAUTH_SECRET openssl rand -base64 32 # SALT openssl rand -hex 163. 启动docker compose -f docker-compose.langfuse.yml up -d docker compose -f docker-compose.langfuse.yml logs -f langfuse启动成功后访问http://服务器IP:3000。四、客户端 Agent 接入 Langfuse1. 依赖项目requirements.txt中已包含 Langfuse 与 langchainlangfuse4.0 langchain1.0一次性安装# 本地 venv ./.venv/bin/pip install langfuse langchain # 或 Docker 构建时由 Dockerfile 自动安装2. 环境变量关键在agent/.envconfig.py 优先读取的那个而非根目录 .env中加入LANGFUSE_ENABLEDtrue LANGFUSE_SECRET_KEYsk-lf-xxxxx LANGFUSE_PUBLIC_KEYpk-lf-xxxxx LANGFUSE_BASE_URLhttp://192.168.1.7:3000⚠️改在哪个 .env 很关键本项目src/config.py用load_dotenv(BASE_DIR/.env)优先读取agent/.env。若只改根目录.envdocker 的env_file会被agent/.env里的旧值覆盖。3. 代码接入点已实现Langfuse 通过CallbackHandler挂载在两个 LLM 客户端上agent/src/llm/llm_client.py_build_callback_manager()→get_llm()使用。agent/src/agents/outline_agent.py直接 new 的ChatOpenAI同样挂载。# 核心逻辑llm_client.py def _build_callback_manager(): if not settings.langfuse_enabled or not settings.langfuse_public_key: return None from langfuse import Langfuse from langfuse.langchain import CallbackHandler Langfuse() # 用环境变量初始化客户端必须是单例先于 handler 创建 handler CallbackHandler() return CallbackManager([handler])易错点langfuse 4.x 的CallbackHandler不接受secret_key/host参数而是从环境变量读取。必须先Langfuse()注册客户端实例再CallbackHandler()否则会返回tracing_enabledFalse的空客户端表现为没追踪数据。4. 校验是否生效在agent目录下执行../.venv/bin/python -c from src.llm.llm_client import _build_callback_manager cm _build_callback_manager() c cm.handlers[0]._langfuse_client print(base_url, c._base_url, | tracing_enabled, c._tracing_enabled) 期望输出base_url http://192.168.1.7:3000 | tracing_enabled True。五、在 Langfuse Web 界面获取 Key访问http://服务器IP:3000。用初始管理员账号登录若未在镜像里配置初始项目会引导你创建。创建 / 进入一个Project项目。Project 右上角 / Public Key 处点开可复制Public Keypk-lf-...与Secret Keysk-lf-...。把这两个 key 服务器地址填入agent/.env的LANGFUSE_*。安全提醒SECRET_KEY只能完整查看一次。切勿提交进 git—— Agent 的.gitignore已忽略.env但历史上 .env 曾被提交过见文末「历史遗留问题」请务必确保 key 不落入版本库。六、服务器部署后的更新流程服务器上改了agent/.env后需重启容器才能生效Langfuse 客户端是进程级单例进程内不会重读环境变量docker compose restart app若同时更新了代码含前端需重新构建docker compose up -d --build app⚠️前后端不同步陷阱Docker 镜像里的前端是构建镜像时打包的dist。只更新源码不--build服务器跑的还是旧前端。本地上看的是最新源码dev所以会界面不一样——部署改动必须--build。七、常见问题排查现象原因 / 处理Web 界面看得到 trace但服务器流量不进去服务器的LANGFUSE_BASE_URL是内网 IP客户端连不上改成都可访问的地址或与 langfuse 同机用http://127.0.0.1:3000tracing_enabledFalse没有先Langfuse()再CallbackHandler()或环境变量没读对改错.env改了 .env 但没变化Langfuse 客户端是进程级缓存单例需要重启容器有 trace 但缺数据确认LANGFUSE_ENABLEDtrue且 public/secret key 与 Web 界面项目匹配Docker 前端跟不上源码部署时必须docker compose up -d --build否则还是旧 dist

相关新闻

GridView自动换行显示实战:用TaoToken统一Key打通AI辅助布局调试

GridView自动换行显示实战:用TaoToken统一Key打通AI辅助布局调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/26 16:12:30 阅读更多 →
AI Agent 可观测性实战:用 TaoToken 统一 Key 打通智能体监控链路

AI Agent 可观测性实战:用 TaoToken 统一 Key 打通智能体监控链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/26 16:12:30 阅读更多 →
长任务压缩不该失忆:Coding Agent 上下文工程实战——用 TaoToken 统一 Key 打通 Cline 配置

长任务压缩不该失忆:Coding Agent 上下文工程实战——用 TaoToken 统一 Key 打通 Cline 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/26 16:12:30 阅读更多 →

最新新闻

把 MCP Server 装进 SAP ABAP:TaoToken 统一 Key 打通 Agentic SDK 与 SAP ECC / S/4HANA 的配置骨架

把 MCP Server 装进 SAP ABAP:TaoToken 统一 Key 打通 Agentic SDK 与 SAP ECC / S/4HANA 的配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/27 17:47:39 阅读更多 →
2026最新8款个人AI编程工具实测:TaoToken统一Key接入Flask项目异常处理对比

2026最新8款个人AI编程工具实测:TaoToken统一Key接入Flask项目异常处理对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/27 17:47:39 阅读更多 →
购物网站设计会员管理模块对比评测

购物网站设计会员管理模块对比评测

不懂代码做购物站会员模块哪家好:3种方案实测对比 自己不会代码想做网站,选购物网站设计会员管理模块哪家好?这问题我太懂了。很多老板拿着几万块预算,想给商城加个会员系统,结果被各种技术名词绕晕,最后钱花了,站还没搭好。别急,今天不聊虚的,咱们…

2026/9/27 17:47:39 阅读更多 →
毕业论文选题毫无头绪?用TaoToken统一Key接入DeepSeek与豆包做AI论文写作工具选型

毕业论文选题毫无头绪?用TaoToken统一Key接入DeepSeek与豆包做AI论文写作工具选型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/27 17:47:39 阅读更多 →
wordpress知识库系统保姆级教程

wordpress知识库系统保姆级教程

找建站公司怕被坑高价?别急,先搞清楚wordpress知识库系统到底多少钱。 很多老板找外包团队,一听要建个内部资料库,对方张口就是三万五万起步,吓得直接跑。其实这事儿真没那么玄乎,核心在于你是否懂技术底线。今天我就从华东项目经理的实操视角…

2026/9/27 17:47:39 阅读更多 →
潍坊网站建设策划方案避坑指南:5个实战案例教你搞定流量

潍坊网站建设策划方案避坑指南:5个实战案例教你搞定流量

潍坊网站建设策划方案避坑指南:5个实战案例教你搞定流量 很多老板花大几万做个官网,上线后天天盯着后台数据发呆,心里直打鼓:网站做好了没人访问,钱是不是打水漂了?这种焦虑我太懂了。在潍坊做了十年网站开发,我见过太多因为前期策划方案没做好,导致…

2026/9/27 17:46:38 阅读更多 →

日新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/27 9:12:14 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/26 22:52:30 阅读更多 →