Langfuse-开源AI观测分析平台,结合dify工作流
Langfuse-开源AI观测分析平台结合dify工作流引言为什么需要AI观测分析平台在AI应用开发中尤其是基于大语言模型LLM构建的智能工作流开发者常常面临“黑箱”问题模型输出了什么为什么会这样输出调用成本是多少如何调试异常Langfuse 是一款开源的可观测性平台专门为LLM应用设计。它提供追踪、日志、监控和调试功能帮助开发者理解AI模型的运行行为。而 Dify 则是一个低代码AI工作流平台允许用户通过拖拽方式构建复杂的AI应用。将两者结合可以显著提升AI应用的透明度和可维护性。本文将循序渐进地讲解Langfuse的核心概念并通过代码示例展示如何与Dify工作流集成。## 基础概念Langfuse的核心组件Langfuse 的核心思想是“追踪Tracing”它记录LLM调用的完整生命周期。主要概念包括-Trace追踪代表一次完整的请求链路例如一次用户对话或一个工作流执行。-Span跨度Trace中的子任务比如一次LLM调用、一个数据库查询或一个函数执行。-Observation观测Span内部的具体数据如输入输出、延迟、Token用量、成本等。-Session会话多个Trace的集合用于分析用户交互模式。Langfuse 支持通过SDKPython/JavaScript手动埋点或通过OpenTelemetry协议自动收集数据。## 环境搭建安装与初始化首先我们需要安装Langfuse的Python客户端。推荐使用虚拟环境隔离项目依赖。bashpip install langfuse然后获取Langfuse的项目密钥Project Key和秘密密钥Secret Key。在Langfuse控制台创建一个新项目后会生成这些凭据。初始化客户端python# 1_init_langfuse.pyfrom langfuse import Langfuse# 初始化Langfuse客户端langfuse Langfuse( secret_keyyour-secret-key, # 替换为实际密钥 public_keyyour-public-key, hosthttps://cloud.langfuse.com # 或自托管地址)# 测试连接print(Langfuse 初始化成功)## 中级用法手动追踪LLM调用现在我们模拟一个简单的LLM调用并记录追踪信息。假设我们使用OpenAI的GPT模型。python# 2_track_llm_call.pyimport openaifrom langfuse.decorators import observe, langfuse_context# 设置OpenAI API密钥openai.api_key your-openai-api-keyobserve() # 自动追踪函数执行def ask_gpt(prompt: str) - str: 调用GPT模型并返回响应 response openai.ChatCompletion.create( modelgpt-3.5-turbo, messages[ {role: user, content: prompt} ] ) # 记录关键指标 langfuse_context.update_current_observation( inputprompt, outputresponse.choices[0].message.content, usage{prompt_tokens: response.usage.prompt_tokens, completion_tokens: response.usage.completion_tokens} ) return response.choices[0].message.content# 执行追踪result ask_gpt(用一句话解释什么是Langfuse)print(f模型回答{result})代码解析-observe()装饰器会自动创建一个Span记录函数的执行时间、输入输出。-langfuse_context.update_current_observation()手动补充Token用量和成本数据。- 运行后前往Langfuse控制台即可看到完整的追踪记录。## 高级应用与Dify工作流集成Dify工作流通常包含多个节点如LLM调用、知识库检索、条件判断等。我们可以通过Langfuse的API将整个工作流的执行过程记录为一个Trace。假设我们有一个Dify工作流用于回答用户关于产品文档的问题。工作流包含以下步骤1. 接收用户问题2. 调用知识库检索相关文档片段3. 将片段作为上下文调用LLM生成答案我们可以在每个步骤中手动创建Span并关联到同一个Trace。python# 3_integrate_with_dify.pyfrom langfuse import Langfuseimport uuidlangfuse Langfuse(secret_key..., public_key..., host...)def dify_workflow(user_question: str) - str: 模拟Dify工作流并记录追踪 # 创建一个新的Trace代表整个工作流 trace langfuse.trace( namedify_workflow, idstr(uuid.uuid4()), metadata{user_question: user_question} ) # 步骤1知识库检索模拟 with trace.span(nameknowledge_search) as span1: # 模拟检索耗时 import time time.sleep(0.5) # 假设检索到相关片段 context Langfuse是一个开源的可观测性平台... span1.update(inputuser_question, outputcontext) span1.end() # 步骤2LLM调用模拟 with trace.span(namellm_call) as span2: # 模拟调用GPT prompt f根据上下文回答{context}\n问题{user_question} response Langfuse可以帮助你追踪AI模型的调用... span2.update(inputprompt, outputresponse, levelDEFAULT, metadata{model: gpt-3.5-turbo}) span2.end() # 步骤3后处理模拟 with trace.span(namepost_process) as span3: final_answer f答案{response} span3.update(inputresponse, outputfinal_answer) span3.end() # 结束Trace trace.update(outputfinal_answer) return final_answer# 测试工作流result dify_workflow(Langfuse有什么功能)print(result)关键点- 使用trace.span()创建子任务自动管理开始/结束时间。-trace.update()可以设置整个追踪的最终输出。- 所有Span都会关联到同一个Trace ID便于在Langfuse平台上查看完整工作流。## 进阶技巧自动批量上报在实际生产环境中频繁网络请求可能影响性能。Langfuse支持批量上报将多个观测数据打包后一次性发送。python# 4_batch_report.pyfrom langfuse import Langfuselangfuse Langfuse( secret_key..., public_key..., host..., # 启用批量模式 flush_at20, # 积累20条观测后自动发送 flush_interval10 # 或每10秒检查一次)# 连续记录多个追踪for i in range(30): trace langfuse.trace(namefbatch_trace_{i}) trace.update(outputfresult_{i}) trace.end()# 强制刷新缓存langfuse.flush()print(批量上报完成)配置说明-flush_at缓存中观测数达到此值时触发上报。-flush_interval定时检查缓存避免长时间不触发。- 合理配置可减少API调用次数提升系统吞吐量。## 总结Langfuse 作为开源AI观测分析平台为LLM应用提供了强大的可观测性能力。通过本文的渐进式学习你已掌握1.基础概念Trace、Span、Observation的核心定义。2.环境搭建如何初始化Langfuse客户端。3.手动追踪使用装饰器或上下文管理器记录LLM调用。4.工作流集成将Dify工作流的每个步骤映射为Span形成完整追踪链。5.性能优化批量上报减少网络开销。将Langfuse与Dify结合你不仅能看到工作流的执行结果还能深入分析每个节点的性能、成本和异常从而优化AI应用的准确性和效率。建议在实际项目中持续集成Langfuse让AI从“黑箱”变为“透明”。

相关新闻

光传输网络AI故障根因分析(华为/中兴/诺基亚实测对比):传统告警压缩率提升至1:127的关键突破

光传输网络AI故障根因分析(华为/中兴/诺基亚实测对比):传统告警压缩率提升至1:127的关键突破

更多请点击: https://intelliparadigm.com 第一章:光传输网络AI故障根因分析(华为/中兴/诺基亚实测对比):传统告警压缩率提升至1:127的关键突破 光传输网络(OTN)在超大规模骨干网中面临海量告警…

2026/10/10 19:37:51 阅读更多 →
3个技巧解决无损音频存储难题:FLAC实战指南

3个技巧解决无损音频存储难题:FLAC实战指南

3个技巧解决无损音频存储难题:FLAC实战指南 【免费下载链接】flac Free Lossless Audio Codec 项目地址: https://gitcode.com/gh_mirrors/fl/flac 你是否曾为音乐收藏占用大量硬盘空间而烦恼?或者担心音频转码会损失音质?这正是许多音…

2026/9/30 16:58:08 阅读更多 →
C# WinForms FlowLayoutPanel 控件深度解析:从原理到高级应用实战

C# WinForms FlowLayoutPanel 控件深度解析:从原理到高级应用实战

1. 项目概述:为什么你需要深入了解FlowLayoutPanel? 如果你在C# WinForms开发中,曾经为了一堆按钮、文本框或者自定义控件的动态排列而头疼,手动计算位置、处理滚动条、响应窗口大小变化,那么 FlowLayoutPanel 这个控…

2026/10/8 9:29:06 阅读更多 →

最新新闻

独立开发APP技术栈选型实战:从Flutter到自建后端的完整决策链

独立开发APP技术栈选型实战:从Flutter到自建后端的完整决策链

1. 技术栈选型:从零到发布,为什么这一步决定了后面80%的坑做独立开发最怕什么?不是代码写不出来,而是写到一半发现选错了技术栈,推倒重来的成本高到让人想放弃。我见过太多人,第一行代码还没敲,…

2026/10/13 7:06:56 阅读更多 →
NCCL EP v0.1 发布解析:MoE 专家并行通信扩展的能力边界、已知限制与验证方法

NCCL EP v0.1 发布解析:MoE 专家并行通信扩展的能力边界、已知限制与验证方法

高性能计算通信深度学习分布式训练 【免费下载链接】nccl Optimized primitives for collective multi-GPU communication 项目地址: https://gitcode.com/gh_mirrors/nc/nccl 点击查看 免费下载 本篇技术文章基于 NCCL 仓库中的 contrib/nccl_ep/RELEASE.md 发布说…

2026/10/13 7:06:56 阅读更多 →
数字孪生智能工厂:打通MES与ERP的实时数据闭环

数字孪生智能工厂:打通MES与ERP的实时数据闭环

简介:本资源是一份面向智能制造领域从业者、工业信息化项目规划人员及高校相关专业师生的数字孪生智能工厂建设方案PPT,聚焦总体结构设计、技术架构演进与MESERP系统集成落地路径。内容涵盖建设背景(中国制造2025与工业4.0政策驱动&#xff0…

2026/10/13 7:06:56 阅读更多 →
Kubernetes GPU 资源管理与调度实战:Device Plugin、DRA 与推理网关

Kubernetes GPU 资源管理与调度实战:Device Plugin、DRA 与推理网关

云原生教程 【免费下载链接】kubernetes-handbook Kubernetes Handbook (Kubernetes指南) https://kubernetes.feisky.xyz 项目地址: https://gitcode.com/gh_mirrors/kub/kubernetes-handbook 点击查看 免费下载 本指南以 Kubernetes Handb…

2026/10/13 7:06:56 阅读更多 →
基于机器学习的MBTI人格预测系统:从文本分类到工程落地

基于机器学习的MBTI人格预测系统:从文本分类到工程落地

简介:基于机器学习的MBTI人格预测系统项目是一套完整工程,面向人格分析、自然语言处理与模型部署感兴趣的开发者。项目覆盖数据清洗、特征分析、模型构建、参数调优与评估,并实现用户界面与模型集成,形成从数据处理到前端展示的闭…

2026/10/13 7:06:56 阅读更多 →
AI做PPT终于不丑了!开源gpt-image2-ppt-skills让你自动生成PPT

AI做PPT终于不丑了!开源gpt-image2-ppt-skills让你自动生成PPT

AI做PPT终于不丑了!开源gpt-image2-ppt-skills让你自动生成PPT 大家好,我是星哥。 最近后台有不少朋友跟我吐槽:“星哥,现在市面上的 AI 做 PPT 工具,怎么做出来的东西都那么‘AI味’啊?” 说实话&#…

2026/10/13 7:05:56 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式: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/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/12 18:11:17 阅读更多 →