Langfuse:解锁LLM工程平台的潜力
Langfuse是一款开源的LLM工程平台,帮助团队协同开发、监控、评估和调试AI应用。通过Langfuse,您可以实现LLM应用的可观察性、提示管理、评估和数据集管理。这个教程将指导您如何安装、使用和定制Langfuse,解决您在LLM应用开发中的痛点。
1. 还在手写LLM代码?Langfuse帮你简化开发流程
我们先来了解一下Langfuse是什么,以及它能帮助我们解决什么问题。Langfuse是一个开源的LLM工程平台,它可以帮助团队协同开发、监控、评估和调试AI应用。通过使用Langfuse,我们可以简化开发流程,提高效率。
要开始使用Langfuse,我们需要先部署它。Langfuse提供了几种部署方式,包括Langfuse Cloud、Self-Host等。我们可以根据自己的需要选择合适的部署方式。
如果我们选择Self-Host方式,我们可以使用Docker Compose在自己的机器上运行Langfuse。首先,我们需要克隆Langfuse的仓库:
git clone --depth=1 https://github.com/langfuse/langfuse.git
cd langfuse然后,我们可以使用以下命令运行Langfuse:
docker compose up这将启动Langfuse的容器,并使其在我们的机器上运行。
预期结果是,我们可以在浏览器中访问Langfuse的界面,并开始使用其功能。
如果我们遇到问题,可以检查Docker Compose的日志来排查错误。我们也可以参考Langfuse的文档来获取更多的帮助。
完成后你已经得到了一个运行在自己机器上的Langfuse实例,你可以开始使用它来开发和调试你的LLM应用。
本章小结
- 了解了Langfuse的基本概念和功能
- 学习了如何使用Docker Compose部署Langfuse
- 知道了如何启动Langfuse容器并访问其界面
- 了解了如何排查错误和获取帮助
2. 快速上手Langfuse:从零开始到部署
我们要从零开始部署 Langfuse,目标是快速上手 Langfuse 并将其部署到我们的环境中。为了开始这一过程,我们需要确保自己具备基本的 Docker 和 Git 知识,并且有一个可用的 Docker 环境。
首先,我们需要获取 Langfuse 的最新代码仓库。我们可以通过 Git 克隆 Langfuse 的仓库到我们的本地机器上。打开终端,输入以下命令:
git clone --depth=1 https://github.com/langfuse/langfuse.git这将下载 Langfuse 仓库的最新版本到我们的本地机器上。接着,我们需要切换到刚刚克隆的仓库目录:
cd langfuse现在,我们可以使用 Docker Compose 来启动 Langfuse。输入以下命令:
docker compose up这个命令将启动 Langfuse 的 Docker 容器,并使其在我们的本地机器上运行。启动过程可能需要几分钟时间,具体取决于我们的网络速度和机器配置。
如果我们遇到任何问题或错误,可以查看 Langfuse 的自托管文档,了解更多关于架构和配置选项的信息。另外,我们也可以查看 Langfuse 的 GitHub 讨论区,获取社区的支持和帮助。
完成后你已经得到了一个运行在本地机器上的 Langfuse 实例,可以开始探索 Langfuse 的功能和特性。
本章小结
- 我们学习了如何从零开始部署 Langfuse。
- 我们使用 Git 克隆了 Langfuse 的仓库,并使用 Docker Compose 启动了 Langfuse。
- 我们了解了如何查看 Langfuse 的自托管文档和 GitHub 讨论区,以获取更多帮助和支持。
3. LLM应用可观察性:如何使用Langfuse进行监控和调试
本章我们要解决的问题是如何使用Langfuse进行LLM应用的监控和调试。通过Langfuse,我们可以实现LLM应用的可观察性,实时监控LLM调用和其他相关逻辑,并且可以对复杂的日志和用户会话进行调试。
在开始之前,我们需要确保已经完成了Langfuse的部署,可以是Langfuse Cloud或者自托管的Langfuse。同时,我们需要有一个LLM应用已经部署并运行。
首先,我们需要instrument我们的LLM应用,这样我们就可以将LLM调用和其他相关逻辑的信息发送到Langfuse。我们可以使用Langfuse提供的API来实现这一点。例如,我们可以使用以下代码来instrument我们的LLM应用:
import langfuse
# 初始化Langfuse客户端
client = langfuse.Client()
# 定义LLM应用的instrument函数
def instrument_llm_app(llm_app):
#instrument LLM应用
llm_app.instrument(client)
# 创建LLM应用
llm_app = LLMApp()
# instrument LLM应用
instrument_llm_app(llm_app)instrument我们的LLM应用后,我们就可以将LLM调用和其他相关逻辑的信息发送到Langfuse。我们可以使用Langfuse提供的API来查询这些信息。例如,我们可以使用以下代码来查询LLM调用信息:
import langfuse
# 初始化Langfuse客户端
client = langfuse.Client()
# 查询LLM调用信息
llm_calls = client.get_llm_calls()
# 打印LLM调用信息
for call in llm_calls:
print(call)通过这些信息,我们可以实时监控LLM应用的运行情况,并且可以对复杂的日志和用户会话进行调试。
如果你遇到任何问题,可以参考Langfuse的文档和API文档来解决问题。
本章小结
- 通过Langfuse,我们可以实现LLM应用的可观察性,实时监控LLM调用和其他相关逻辑。
- 我们需要instrument我们的LLM应用,这样我们就可以将LLM调用和其他相关逻辑的信息发送到Langfuse。
- 我们可以使用Langfuse提供的API来查询LLM调用信息和其他相关信息。
- 通过这些信息,我们可以实时监控LLM应用的运行情况,并且可以对复杂的日志和用户会话进行调试。
4. 提示管理:如何使用Langfuse实现提示版本控制和协同迭代
本章要解决的问题是如何使用Langfuse实现提示版本控制和协同迭代。我们需要了解Langfuse的提示管理功能,并学习如何使用它来管理和版本控制我们的提示。
在开始之前,我们需要确保已经安装和配置了Langfuse。如果你还没有安装Langfuse,可以参考自托管Langfuse文档来安装和配置Langfuse。
我们先来了解Langfuse的提示管理功能。Langfuse提供了一个集中式的提示管理系统,允许你创建、编辑和管理你的提示。我们可以通过Langfuse的API或SDK来访问和管理提示。
接下来,我们来学习如何使用Langfuse的提示管理功能。我们可以使用以下步骤来创建和管理提示:
- 创建一个新的提示:我们可以使用Langfuse的API或SDK来创建一个新的提示。例如,我们可以使用以下Python代码来创建一个新的提示:
import langfuse
# 创建一个新的提示
prompt = langfuse.Prompt(name="我的提示", content="这是一个示例提示")
prompt.save()- 编辑一个提示:我们可以使用Langfuse的API或SDK来编辑一个已经存在的提示。例如,我们可以使用以下Python代码来编辑一个提示:
import langfuse
# 获取一个已经存在的提示
prompt = langfuse.Prompt.get(name="我的提示")
# 编辑提示内容
prompt.content = "这是一个更新的示例提示"
prompt.save()- 管理提示版本:我们可以使用Langfuse的API或SDK来管理提示版本。例如,我们可以使用以下Python代码来获取一个提示的所有版本:
import langfuse
# 获取一个提示的所有版本
prompt = langfuse.Prompt.get(name="我的提示")
versions = prompt.versions
# 打印所有版本
for version in versions:
print(version.content)如果你遇到任何问题,可以参考Langfuse文档来获取更多信息。
完成后你已经得到了一个基本的提示管理系统,可以使用Langfuse的API或SDK来创建、编辑和管理你的提示。
本章小结
- 了解了Langfuse的提示管理功能
- 学习了如何使用Langfuse的API或SDK来创建、编辑和管理提示
- 了解了如何管理提示版本
- 参考了Langfuse文档来获取更多信息
5. 评估和数据集管理:如何使用Langfuse进行LLM应用评估和测试
本章要解决的问题是如何使用Langfuse进行LLM应用评估和测试。通过Langfuse,我们可以轻松地管理和评估LLM应用的性能,确保其达到预期的效果。
在开始之前,我们需要确保已经安装和配置好了Langfuse。如果你还没有安装Langfuse,可以参考之前章节的内容进行安装和配置。
首先,我们需要了解Langfuse中的评估和数据集管理功能。Langfuse提供了评估(Evaluations)和数据集(Datasets)两个主要功能来支持LLM应用的评估和测试。评估功能允许我们使用LLM-as-a-judge、Code evaluators、用户反馈收集、手动标注和自定义评估管道等方式来评估LLM应用的性能。数据集功能则允许我们创建和管理测试集和基准集,以便评估LLM应用的性能。
下面,我们来一步步地操作Langfuse的评估和数据集管理功能。
步骤1:创建评估任务
我们可以使用Langfuse的API或SDK来创建评估任务。例如,我们可以使用Python SDK来创建一个评估任务:
import langfuse
# 创建一个评估任务
evaluation = langfuse.Evaluation(
name="my_evaluation",
description="This is my evaluation task",
llm="my_llm",
dataset="my_dataset"
)
# 提交评估任务
evaluation.submit()预期结果:评估任务被成功创建并提交。
步骤2:创建数据集
我们可以使用Langfuse的API或SDK来创建数据集。例如,我们可以使用Python SDK来创建一个数据集:
import langfuse
# 创建一个数据集
dataset = langfuse.Dataset(
name="my_dataset",
description="This is my dataset",
data=["example1", "example2", "example3"]
)
# 提交数据集
dataset.submit()预期结果:数据集被成功创建并提交。
步骤3:运行评估任务
我们可以使用Langfuse的API或SDK来运行评估任务。例如,我们可以使用Python SDK来运行一个评估任务:
import langfuse
# 获取评估任务
evaluation = langfuse.Evaluation.get("my_evaluation")
# 运行评估任务
evaluation.run()预期结果:评估任务被成功运行。
如果你遇到任何问题,可以参考Langfuse的文档和API参考来排查错误。
本章小结
- 了解了Langfuse中的评估和数据集管理功能
- 学会了如何使用Langfuse的API或SDK来创建评估任务和数据集
- 学会了如何运行评估任务
- 了解了如何排查错误和使用Langfuse的文档和API参考
完成后你已经得到了Langfuse评估和数据集管理功能的基本使用方法,可以开始使用Langfuse来评估和测试你的LLM应用了。
6. Langfuse与其他工具的集成:如何扩展Langfuse的功能
本章我们要解决的问题是如何将 Langfuse 与其他工具进行集成,以扩展其功能。通过集成,开发者可以利用 Langfuse 的强大功能,同时也能利用其他工具的优势,实现更高效的 LLM 应用开发和部署。
在开始集成之前,需要确保已经具备以下条件:
- 已经安装并运行了 Langfuse,了解其基本功能和操作。
- 熟悉 Docker 和 Kubernetes 的基本概念,了解如何使用 Helm 进行部署。
- 拥有一个 GitHub 账号,并了解如何使用 GitHub Discussions。
首先,我们来了解一下 Langfuse 提供的集成方式。Langfuse 支持多种集成方式,包括使用 API、SDK,以及与其他工具的直接集成。例如,Langfuse 提供了 Python 和 JavaScript 的 SDK,开发者可以使用这些 SDK 来实现自定义的功能。
接下来,我们来看一下如何使用 Langfuse 的 API 来实现集成。Langfuse 提供了一个全面性的 API 文档,开发者可以通过这个文档来了解如何使用 API 来实现不同的功能。例如,开发者可以使用 API 来创建和管理提示、评估和数据集等。
# 获取 Langfuse API 文档
curl https://langfuse.com/docs/api如果你遇到问题,可以通过 GitHub Discussions 来寻求帮助。Langfuse 的开发团队和社区会在那里提供支持和回答问题。
# 访问 GitHub Discussions
https://github.com/orgs/langfuse/discussions此外,Langfuse 还支持与其他工具的直接集成,例如 LangChain 和 LlamaIndex。开发者可以通过这些集成来扩展 Langfuse 的功能,实现更高效的 LLM 应用开发和部署。
# 示例:使用 Langfuse SDK 来实现提示管理
import langfuse
# 创建一个 Langfuse 客户端
client = langfuse.Client()
# 创建一个新的提示
prompt = client.create_prompt("我的提示")
# 打印提示的 ID
print(prompt.id)完成后你已经得到了:
- 了解了 Langfuse 的集成方式和支持的工具。
- 学会了如何使用 Langfuse 的 API 和 SDK 来实现自定义的功能。
- 知道了如何通过 GitHub Discussions 来寻求帮助和支持。
本章小结
- Langfuse 支持多种集成方式,包括使用 API、SDK,以及与其他工具的直接集成。
- 开发者可以使用 Langfuse 的 API 和 SDK 来实现自定义的功能,例如提示管理和评估。
- 通过与其他工具的集成,开发者可以扩展 Langfuse 的功能,实现更高效的 LLM 应用开发和部署。
7. 自定义Langfuse:如何使用API和SDK进行定制开发
本章我们要解决的问题是如何使用 Langfuse 的 API 和 SDK 进行定制开发。通过这一章,你将能够使用 Langfuse 的 API 和 SDK 来扩展其功能,实现自己的定制需求。
在开始之前,你需要确保已经安装了 Langfuse,并且有一个基本的了解 Langfuse 的功能和特性。如果你还没有安装 Langfuse,可以参考 Langfuse 的自托管文档来安装。
首先,我们需要了解 Langfuse 的 API。Langfuse 提供了一个综合的 API,可以用来进行各种操作,包括创建、读取、更新和删除(CRUD)LLM 应用、提示、评估和数据集等。我们可以通过 API 来获取 Langfuse 的数据和功能。
# 获取 Langfuse API 文档
curl https://langfuse.com/docs/api接下来,我们需要了解 Langfuse 的 SDK。Langfuse 提供了 Python 和 JavaScript/TypeScript 的 SDK,可以用来简化 API 的调用。我们可以通过 SDK 来进行 Langfuse 的操作。
# 安装 Langfuse Python SDK
pip install langfuse-python-sdk
# 导入 Langfuse Python SDK
import langfuse// 安装 Langfuse JavaScript SDK
npm install langfuse-js-sdk
// 导入 Langfuse JavaScript SDK
const langfuse = require('langfuse-js-sdk');现在,我们可以开始使用 Langfuse 的 API 和 SDK 来进行定制开发。例如,我们可以使用 API 来创建一个新的 LLM 应用。
# 创建一个新的 LLM 应用
app = langfuse.App(name='my_app', description='my app')
app.create()// 创建一个新的 LLM 应用
const app = new langfuse.App({ name: 'my_app', description: 'my app' });
app.create();如果你遇到错误,可以检查 API 文档和 SDK 文档来了解错误的原因和解决方法。
本章小结
- 了解 Langfuse 的 API 和 SDK
- 安装和导入 Langfuse 的 SDK
- 使用 Langfuse 的 API 和 SDK 来进行定制开发
- 创建一个新的 LLM 应用使用 Langfuse 的 API 和 SDK
完成后你已经得到了使用 Langfuse 的 API 和 SDK 进行定制开发的基本能力,可以开始扩展 Langfuse 的功能,实现自己的定制需求。
8. Langfuse最佳实践:如何在实际项目中应用Langfuse
本章要解决的问题是如何在实际项目中应用Langfuse,实现LLM应用的开发、监控、评估和调试。我们希望通过本章的学习,能够将Langfuse融入到自己的项目中,提高开发效率和应用质量。
在开始之前,我们需要确保已经安装了Langfuse,并且有一个基本的LLM应用项目。我们可以通过Langfuse Cloud或Self-Host Langfuse来部署Langfuse。如果你还没有部署Langfuse,可以参考Langfuse的文档来完成部署。
接着,我们需要了解Langfuse的核心功能,包括LLM应用可观察性、提示管理、评估和数据集管理、LLM Playground和综合API。我们可以通过Langfuse的文档和demo来了解这些功能的使用方法。
现在,我们来看一个实际的例子。假设我们有一个LLM应用项目,需要开发一个聊天机器人。我们可以使用Langfuse的LLM Playground来测试和迭代我们的提示和模型配置。然后,我们可以使用Langfuse的评估功能来评估我们的聊天机器人的性能。同时,我们可以使用Langfuse的数据集管理功能来管理我们的测试数据集。
在使用Langfuse时,我们需要注意一些常见的报错和排查方法。例如,如果我们遇到提示管理的版本控制问题,可以检查我们的提示版本是否正确。如果我们遇到评估功能的错误,可以检查我们的评估配置是否正确。
完成后你已经得到了一个基本的LLM应用项目,并且能够使用Langfuse的核心功能来开发、监控、评估和调试我们的应用。
本章小结
- 了解Langfuse的核心功能,包括LLM应用可观察性、提示管理、评估和数据集管理、LLM Playground和综合API
- 学会使用Langfuse的LLM Playground来测试和迭代提示和模型配置
- 学会使用Langfuse的评估功能来评估LLM应用的性能
- 学会使用Langfuse的数据集管理功能来管理测试数据集
- 了解常见的报错和排查方法,能够独立排查和解决问题
9. Langfuse性能优化:如何提高Langfuse的运行效率
要提高Langfuse的运行效率,我们需要从多个方面入手。首先,我们需要了解Langfuse的系统架构和部署方式。Langfuse可以自行部署在本地、虚拟机或Kubernetes集群中,也可以使用Langfuse Cloud的托管服务。了解这些信息有助于我们选择最适合自己的部署方式并进行优化。
在开始优化之前,我们需要确保已经安装并运行了Langfuse。如果你还没有安装Langfuse,可以通过以下命令快速部署:
# 获取Langfuse仓库的最新副本
git clone --depth=1 https://github.com/langfuse/langfuse.git
cd langfuse
# 运行Langfuse的docker compose
docker compose up完成后你已经得到了一个基本运行的Langfuse环境。
接着,我们需要监控Langfuse的性能。Langfuse提供了多种监控工具,包括LLM应用可观察性、评估和数据集管理等。这些工具可以帮助我们了解Langfuse的运行状态和瓶颈所在。我们可以通过Langfuse的控制台或API来监控这些指标。
如果你遇到性能问题,首先需要检查的是Langfuse的配置文件。配置文件中包含了许多可以调整的参数,例如缓存大小、线程数等。调整这些参数可以帮助提高Langfuse的运行效率。例如,你可以增加缓存大小来减少数据库查询次数:
# 示例配置文件
config = {
'cache_size': 1024, # 增加缓存大小
'thread_num': 8, # 增加线程数
}完成后你已经对Langfuse的配置文件进行了调整。
此外,Langfuse还提供了许多集成工具,包括Kubernetes、Terraform等。这些工具可以帮助我们自动化Langfuse的部署和管理,从而提高运行效率。我们可以通过这些工具来自动化Langfuse的部署、升级和监控。
最后,Langfuse的社区和文档也是非常重要的资源。Langfuse的社区提供了许多最佳实践和教程,帮助我们更好地使用和优化Langfuse。同时,Langfuse的文档也提供了详细的API和配置参考,帮助我们深入了解Langfuse的内部机制。
本章小结
- 了解Langfuse的系统架构和部署方式
- 监控Langfuse的性能并调整配置文件
- 使用Langfuse的集成工具来自动化部署和管理
- 参考Langfuse的社区和文档来获取最佳实践和教程 完成后你已经掌握了提高Langfuse运行效率的方法和技巧。
常见问题
问题:如何解决Langfuse安装过程中的报错问题?
Langfuse安装过程中的报错问题通常与环境依赖或配置有关。首先,请检查是否正确安装了所需的依赖项,如Docker Compose。然后,检查配置文件是否正确设置,特别是环境变量和端口映射。如仍然遇到问题,请参考Langfuse的自托管文档或在GitHub Discussions中寻求帮助。
问题:Langfuse支持哪些环境和依赖?
Langfuse支持多种环境和依赖,包括Docker Compose、Kubernetes(使用Helm)和虚拟机。它还提供了Terraform模板以便在AWS、Azure和GCP上部署。此外,Langfuse集成了多个SDK和框架,如OpenTelemetry、LangChain、OpenAI SDK、LiteLLM等。
问题:如何配置Langfuse以满足我的特定需求?
配置Langfuse需要根据你的具体需求进行设置。首先,参考Langfuse的自托管文档了解不同部署方式的配置步骤。然后,根据需要配置环境变量、端口映射和其他设置。对于更复杂的需求,如自定义评估流水线,可以使用Langfuse提供的API/SDK进行扩展。
问题:Langfuse的LLM应用观测功能如何使用?
Langfuse的LLM应用观测功能允许你跟踪LLM调用和其他应用逻辑。首先,需要在你的应用中instrument相应的代码,以便向Langfuse发送跟踪数据。然后,通过Langfuse的界面或API来查看和分析这些数据,帮助你调试和优化LLM应用。
问题:与其他同类平台相比,Langfuse有什么优势?
Langfuse相比其他同类平台具有多项优势,包括开源、易于自托管、功能丰富(如LLM应用观测、提示管理、评估等)以及与多个流行框架和SDK的集成。此外,Langfuse提供了一个强大的API,允许用户根据自己的需求进行扩展和定制。
问题:如何使用Langfuse的提示管理功能?
Langfuse的提示管理功能允许你集中管理、版本控制和协同迭代你的提示。首先,需要在Langfuse中创建提示管理项目,然后可以添加、编辑和版本控制你的提示。Langfuse的强缓存机制确保了提示的更新不会增加应用的延迟。
问题:Langfuse的评估功能如何使用?
Langfuse的评估功能支持多种评估方式,包括LLM作为评判、代码评估器、用户反馈收集、手动标注和自定义评估流水线。首先,需要配置评估设置,包括选择评估类型和设置评估标准。然后,可以使用Langfuse的API或界面来执行评估并查看结果。
问题:如何在Langfuse中使用数据集进行LLM应用的评估和测试?
Langfuse的数据集功能允许你为LLM应用创建测试集和基准,以便进行评估和测试。首先,需要在Langfuse中创建数据集项目,然后可以添加和管理你的数据集。Langfuse支持连续改进、预部署测试、结构化实验、灵活评估和与LangChain和LlamaIndex等框架的无缝集成。