| 编辑推荐: |
本文主要介绍了LLM大模型应用监控---LangFuse使用指南相关内容。希望对你的学习有帮助。
本文来自于CSDN,由火龙果软件Alice编辑推荐。 |
|
什么是LangFuse
LangFuse是一个开源的大模型工程平台,致力于跟踪、评估、指标和提示词管理等功能,用于调试和改进你的大语言模型应用程序
对标LangSmith,它最大的优势是开源!
核心功能
调用跟踪
大语言模型(LLM)应用程序使用越来越复杂的抽象概念,例如链、配备工具的智能体以及高级提示。嵌套跟踪在Langfuse中有助于理解正在发生的事情并确定问题的根本原因。
- Trace 跟踪功能可让你追踪应用程序中的每一次大语言模型调用以及其他相关逻辑
- Session 会话允许跟踪多步骤对话或智能体工作流程
- Timeline 通过查看时间轴视图来调试延迟问题。
- Dashboard 在仪表板中查看质量、成本和延迟指标,以监控您的大语言模型应用程序。
- Agent graphs 大语言模型智能体可以可视化为一个图形,以展示复杂的智能体工作流程。
- Users 添加你自己的 userId 以监控每个用户的成本和使用情况。你也可以选择在你的系统中为此视图创建一个深度链接。
大语言模型评估
评估是开发和部署大语言模型(LLM)应用程序的一个关键方面。通常,团队会根据用例和开发过程的阶段,使用多种不同的评估方法来衡量其人工智能应用程序的性能。
- Analytics 在Langfuse仪表盘中绘制评估结果
- User feedback 收集用户反馈。可以通过我们的浏览器软件开发工具包(SDK)在前端收集,也可以通过SDK或应用程序编程接口(API)在服务器端收集。视频中包含示例应用程序
- LLM as a judge 对生产或开发跟踪数据运行完全托管的大语言模型即裁判(LLM-as-a-judge)评估。可应用于应用程序内的任何步骤,以进行逐步评估。
指标
Langfuse分析从生产跟踪数据中得出可行的见解
数据集与实验
通过Langfuse数据集,你可以创建测试集和基准,以评估你的大语言模型应用程序的性能。
- 持续改进: 从生产中的边缘案例创建数据集,以改进你的应用程序
- 预部署测试: 在部署到生产环境之前对新版本进行基准测试
- 结构化测试: 对输入和预期输出的集合进行实验
- 灵活评估: 添加自定义评估指标或使用大语言模型作为评判者
- 良好的集成性: 可与LangChain和LlamaIndex等流行框架协同工作
提示词管理
什么是提示词管理?
提示词管理是一种在大语言模型应用中存储、版本控制和检索提示词的系统方法。
提示词管理的关键方面包括版本控制、将提示词与代码解耦、监控、记录和优化提示词,以及将提示词与应用程序的其他部分和工具堆栈集成。
为什么要使用提示词管理?
我难道不能直接在应用程序中对提示词进行硬编码,并通过Git进行跟踪吗?嗯,是的……你可以这么做,而且我们所有人都这么做过。
|
使用内容管理系统(CMS)的典型好处在此同样适用:
- 解耦:无需重新部署应用程序即可部署新提示。
- 非技术用户可以通过Langfuse控制台创建和更新提示。
- 快速回滚到提示词的上一个版本。
- 并排比较不同的提示版本。
使用Langfuse有效地管理和版本化您的提示词。Langfuse提示词管理是一种提示词内容管理系统(内容管理系统)
LangFuse如何管理提示词:
通过用户界面、应用程序编程接口或软件开发工具包,以协作方式对提示词进行版本控制和编辑。
通过标签将提示词部署到生产环境或任何环境,无需进行任何代码更改。
比较不同版本提示词的延迟、成本和评估指标。
在演示场中即时测试你的提示词。
将提示与跟踪信息关联起来,以了解它们在你的大语言模型应用程序环境中的表现。
跟踪提示的变化,以了解它们如何随时间演变。
你可以在你的提示词中使用简单的标签格式引用其他文本提示词。
快速接入LangFuse
LangFuse支持多达几十种框架技术的接入
上一篇文章在介绍LangSmith提到过如果你的agent是使用java
Sping AI框架开发则无法接入,而LangFuse可以支持Spring AI接入,那么我们这里使用一个Spring
AI框架搭建的项目作为示例接入LangFuse
注册LangFuse账号进入控制台
LangFuse
支持多种方式的本地部署,这点比较友好,适合私密性较强的项目,这里我们先使用云环境接入,后期有时间再整理一篇本地搭建指南
|
创建项目
1.创建组织
2.邀请成员
3.创建项目
4.创建api-key
项目工程配置
引入sdk依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-instrumentation-bom</artifactId>
<version>2.13.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>1.0.0-M6</version>
</dependency>
<!-- Spring AI needs a reactive web server to run for some reason-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-spring-boot-starter</artifactId>
</dependency>
<!-- Spring Boot Actuator for observability support -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Micrometer Observation -> OpenTelemetry bridge -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-otel</artifactId>
</dependency>
<!-- OpenTelemetry OTLP exporter for traces -->
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-otlp</artifactId>
</dependency>
</dependencies>
|
注意,如果你的工程中有jdbc数据源,那么需要额外增加依赖
|
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-instrumentation-api-incubator</artifactId>
</dependency>
|
spring 启动配置
开启追踪,采样率100%
spring.ai.chat.observations.include-prompt=true
spring.ai.chat.observations.include-completion=true
management.tracing.sampling.probability=1.0
management.observations.annotations.enabled=true
|
环境变量配置
OTEL_EXPORTER_OTLP_ENDPOINT=https://cloud.langfuse.com/api/public/otel
OTEL_EXPORTER_OTLP_HEADERS=Authorization=Basic cGstbGYtNzQ1MjFkMmMtNzMwMC00NDhmL TgwMSDKFWLWKWZDc2OnNrLWxmLTY1MjJhOTEyLTU0OWItNDNhYS1iYTM2LTI2OGE5ZjNkYzFkNw==
|
OTEL_EXPORTER_OTLP_ENDPOINT 指向Langfuse环境,这里是官方的云环境,如果是自己部署的需要将域名前缀替换掉
OTEL_EXPORTER_OTLP_HEADERS是一个基于base64加密后的鉴权,需要将前面生成的api-key的public公钥和secret密钥以public:secret方式加密,例如:
接入效果
重新执行问答后,在langfuse的工作台就可以看到追踪数据了
dashboard
总结
LangFuse可以支持同LangSmith相当的大模型应用监控功能,且扩展功能更全,代码开源更加友好,适合敏感度较高的项目私有化部署,后面会继续深入研究一些进阶功能以及本地部署方式 |