Langfuse实战:从部署到评估,打造可观测的AI Agent项目
这次我们来看一个面向大模型面试和Agent项目落地的实战工具——Langfuse。对于正在准备大模型相关岗位面试或者需要在企业中落地Agent项目的开发者来说如何追踪、评估和观测AI应用的表现是一个必须掌握的核心技能。Langfuse作为一个开源的LLM应用可观测性平台正好解决了这个痛点。它不仅能帮你记录每一次LLM的调用、追踪复杂的Agent工作流还能评估生成内容的质量为项目迭代提供数据支撑。本文不会空谈概念而是直接切入实战。我们将重点拆解Langfuse的核心功能并通过代码演示带你一步步搭建一个可观测的Agent项目。你会了解到它的部署门槛、如何与主流框架如LangChain集成、如何自定义评估指标以及这些能力如何直接转化为你面试时的技术亮点和项目中的落地依据。无论你是想深入理解Agent的可观测性还是为“企业级落地”这个面试高频问题准备弹药这篇文章都值得你仔细阅读。1. 核心能力速览在深入细节之前我们先通过一个表格快速了解Langfuse能做什么以及它的技术特点。能力项说明项目类型开源LLM应用可观测性Observability与评估Evaluation平台核心功能1.追踪Tracing自动记录LLM调用、工具使用、用户反馈构建完整的执行轨迹。2.评估Evaluation支持自动化评估如代码执行、模型打分和人工评分量化输出质量。3.数据集与提示词管理管理测试数据集和不同版本的提示词Prompt便于A/B测试。4.数据分析与监控提供Dashboard分析延迟、成本、评分趋势并设置监控告警。部署方式支持云托管SaaS和本地/自托管Docker Compose或直接部署数据完全自主可控。集成难度低。提供Python/JS SDK几行代码即可接入现有LangChain、LlamaIndex应用或自定义LLM调用。是否支持API是。提供完整的API用于数据导出和集成同时SDK调用本身即基于API。主要适用场景1.开发与调试可视化Agent复杂工作流定位问题。2.实验与评估系统化评估不同模型、参数、提示词的效果。3.生产监控监控AI应用在生产环境的性能、成本和质量。4.面试与复盘为技术方案提供数据佐证展示项目迭代过程。数据存储使用PostgreSQL作为主数据库可选对象存储如S3用于附件。自托管需自行维护。2. 适用场景与使用边界Langfuse并非一个万能的AI应用框架它的定位非常清晰做AI应用背后的“眼睛”和“仪表盘”。理解它的适用边界能帮助你更好地在项目和面试中运用它。它非常适合以下场景复杂Agent项目调试当你的Agent涉及多步LLM调用、工具检索如函数调用、RAG检索时通过Tracing可以清晰看到每一步的输入、输出、耗时和错误极大提升调试效率。提示词工程与A/B测试你需要对比不同提示词版本对输出结果的影响。Langfuse可以帮你管理提示词变体并用同一批测试数据集进行评估用数据决定最佳方案。面向岗位的技术栈展示在面试中被问到“如何保证AI应用的质量”或“如何评估模型效果”时你能直接展示一个集成了可观测性平台的项目并谈论具体的评估指标如相关性、事实准确性、毒性分数这比空谈理论有力得多。生产环境监控与告警上线后的AI应用你需要关注其延迟是否增长、成本是否超标、用户反馈是否变差。Langfuse的Dashboard和监控功能可以帮你建立基线并发现异常。它的局限性或需要注意的方面不是AI模型本身Langfuse不提供大模型你需要接入OpenAI、Anthropic、本地部署的Ollama等模型服务。需要额外部署和维护选择自托管意味着你需要维护一套包含PostgreSQL、Langfuse Server等的服务考虑备份、升级和资源消耗。数据安全与合规所有LLM调用和生成的内容都会被记录。在自托管环境下你可以完全控制数据。如果涉及敏感信息必须确保部署环境的安全和合规性并遵守相关数据隐私法规。评估需要定义标准自动化评估如用GPT-4给回答打分本身也需要设计和提示词且会产生额外成本。人工评估则需投入人力。Langfuse提供了框架但“评估什么”和“如何评估”需要你根据业务来定义。3. 环境准备与前置条件为了完成后续的实战演示你需要准备好以下环境。我们以本地自托管Docker部署和Python SDK集成为例这是最通用且对面试项目最有说服力的方式。操作系统Linux (推荐Ubuntu 20.04)、macOS 或 Windows (需安装Docker Desktop)。本文命令以Linux/macOS bash为例。Docker与Docker Compose确保系统已安装Docker Engine和Docker Compose插件。这是运行Langfuse服务的最简单方式。# 检查安装 docker --version docker compose versionPython环境用于编写和运行集成了Langfuse SDK的AI应用。推荐Python 3.10。网络与端口Langfuse服务默认使用端口3000前端和9020后端接口。确保这些端口在本地未被占用或防火墙允许访问。可选LLM API密钥为了演示完整的AI应用你需要准备一个或多个LLM服务的API密钥例如OpenAI、Anthropic或本地Ollama的访问地址。4. 安装部署与启动方式我们将采用Docker Compose一键部署Langfuse服务。这是官方推荐的自托管方式能快速获得一个包含Web UI的完整环境。步骤1下载部署配置文件访问Langfuse官方GitHub仓库获取最新的docker-compose.yml文件。这里我们直接创建一个。# 创建一个项目目录 mkdir langfuse-selfhost cd langfuse-selfhost # 创建docker-compose.yml文件 cat docker-compose.yml EOF version: 3.8 services: postgres: image: postgres:15-alpine environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: ${POSTGRES_DB:-langfuse} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: [CMD-SHELL, pg_isready -U ${POSTGRES_USER:-postgres}] interval: 10s timeout: 5s retries: 5 langfuse: image: langfuse/langfuse:latest depends_on: postgres: condition: service_healthy environment: DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}postgres:5432/${POSTGRES_DB:-langfuse} NEXTAUTH_SECRET: ${NEXTAUTH_SECRET:-your-secret-key-change-in-production} SALT: ${SALT:-your-salt-change-in-production} LANGFUSE_SECRET_KEY: ${LANGFUSE_SECRET_KEY:-your-langfuse-secret-key-change-in-production} LANGFUSE_PUBLIC_KEY: ${LANGFUSE_PUBLIC_KEY:-your-langfuse-public-key-change-in-production} # 可选启用电子邮件登录用于首次创建用户 # EMAIL_FROM: ${EMAIL_FROM:-} # SMTP_HOST: ${SMTP_HOST:-} # SMTP_PORT: ${SMTP_PORT:-} # SMTP_USER: ${SMTP_USER:-} # SMTP_PASSWORD: ${SMTP_PASSWORD:-} ports: - 3000:3000 # Web UI - 9020:9020 # API/Ingestion Endpoint volumes: - uploads:/app/uploads # 如果需要文件上传功能 volumes: postgres_data: uploads: EOF步骤2配置环境变量可选但推荐创建.env文件来设置安全密钥避免使用默认值。cat .env EOF POSTGRES_PASSWORDyour_secure_db_password NEXTAUTH_SECRET$(openssl rand -hex 32) SALT$(openssl rand -hex 32) LANGFUSE_SECRET_KEY$(openssl rand -hex 32) LANGFUSE_PUBLIC_KEY$(openssl rand -hex 32) EOF注意openssl命令用于生成随机字符串。在Windows上你可能需要使用其他工具生成并手动填写。步骤3启动服务在包含docker-compose.yml和.env的目录下运行docker compose up -d-d参数表示在后台运行。首次启动会拉取镜像并初始化数据库可能需要1-2分钟。步骤4验证服务访问http://localhost:3000。如果服务启动成功你会看到Langfuse的注册/登录页面。首次访问需要创建一个管理员账户如果未配置SMTP可能会直接进入创建页面或使用默认凭证请参考启动日志。同时你可以检查服务状态docker compose logs -f langfuse # 查看日志-f 表示持续跟踪 docker compose ps # 查看容器状态至此一个本地可观测性平台就部署完成了。接下来我们将创建一个AI应用并接入它。5. 功能测试与效果验证构建一个可观测的RAG Agent我们将构建一个简单的“技术文档问答Agent”它使用RAG检索增强生成技术并集成Langfuse进行全链路追踪和评估。这个例子涵盖了从基础追踪到自定义评估的完整流程。5.1 项目初始化与SDK安装首先创建一个新的Python项目并安装依赖。mkdir observable-rag-agent cd observable-rag-agent python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install langfuse langchain-openai langchain-chroma tiktoken python-dotenvlangfuse: Langfuse的Python SDK。langchain-openai: 用于调用OpenAI模型也可替换为其他。langchain-chroma: 使用Chroma作为向量数据库。tiktoken: 用于Token计数。python-dotenv: 管理环境变量。创建.env文件存储密钥# Langfuse 配置指向我们刚部署的服务 LANGFUSE_SECRET_KEYsk-lf-... # 在Langfuse UI的Settings - API Keys中创建 LANGFUSE_PUBLIC_KEYpk-lf-... LANGFUSE_HOSThttp://localhost:9020 # 自托管后端地址 # OpenAI 配置或其他LLM OPENAI_API_KEYsk-...5.2 基础追踪记录一次LLM调用让我们先从一个最简单的例子开始看看Langfuse如何自动记录一次LLM调用。# basic_trace.py import os from dotenv import load_dotenv from langfuse import Langfuse from langchain_openai import ChatOpenAI load_dotenv() # 1. 初始化Langfuse客户端 langfuse Langfuse( secret_keyos.getenv(LANGFUSE_SECRET_KEY), public_keyos.getenv(LANGFUSE_PUBLIC_KEY), hostos.getenv(LANGFUSE_HOST) ) # 2. 创建一个Trace。Trace代表一个完整的会话或任务。 trace langfuse.trace(namesimple-qa-session) # 3. 在Trace中创建一个Generation生成Span并执行LLM调用 llm ChatOpenAI(modelgpt-3.5-turbo) response llm.invoke(用一句话解释什么是RAG。) # 4. 手动记录Generation如果LangChain未自动集成这是基础方式 # 在实际使用中更推荐用Langfuse的回调处理器自动记录见下文 generation trace.generation( nameexplain-rag, input用一句话解释什么是RAG。, outputresponse.content, modelgpt-3.5-turbo, metadata{temperature: 0.7} ) print(f回答{response.content}) print(fTrace已创建可在Langfuse UI中查看ID: {trace.id})运行此脚本后打开Langfuse UI (http://localhost:3000)在Traces页面你应该能看到一条名为simple-qa-session的记录。点击进入可以查看这次调用的详细信息包括输入、输出、模型、耗时等。5.3 高级追踪集成LangChain自动记录完整工作流手动记录很繁琐。Langfuse提供了与LangChain、LlamaIndex等框架的原生集成可以自动追踪整个链或Agent的执行过程。下面我们构建一个包含检索Retrieval和生成Generation的RAG链。# rag_chain_with_langfuse.py import os from dotenv import load_dotenv from langfuse.callback import CallbackHandler from langchain_openai import ChatOpenAI, OpenAIEmbeddings from langchain_chroma import Chroma from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_core.documents import Document from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_core.runnables import RunnablePassthrough load_dotenv() # 1. 准备一些示例文档并存入向量库 documents [ Document(page_contentLangfuse是一个开源的LLM应用可观测性平台提供追踪、评估和监控功能。), Document(page_contentRAG检索增强生成通过检索外部知识来增强大语言模型的生成能力减少幻觉。), Document(page_contentDocker Compose可用于一键部署多容器应用如Langfuse的后端、前端和数据库。), ] text_splitter RecursiveCharacterTextSplitter(chunk_size200, chunk_overlap50) split_docs text_splitter.split_documents(documents) embeddings OpenAIEmbeddings() vectorstore Chroma.from_documents(documentssplit_docs, embeddingembeddings) retriever vectorstore.as_retriever() # 2. 定义RAG提示词模板 template 基于以下上下文回答用户问题。如果你不知道答案就说不知道。 上下文 {context} 问题 {question} 请给出简洁、准确的回答 prompt ChatPromptTemplate.from_template(template) # 3. 定义LLM和输出解析器 llm ChatOpenAI(modelgpt-3.5-turbo) output_parser StrOutputParser() # 4. 组装RAG链 rag_chain ( {context: retriever, question: RunnablePassthrough()} | prompt | llm | output_parser ) # 5. 创建Langfuse回调处理器它将自动追踪整个链的执行 langfuse_handler CallbackHandler( secret_keyos.getenv(LANGFUSE_SECRET_KEY), public_keyos.getenv(LANGFUSE_PUBLIC_KEY), hostos.getenv(LANGFUSE_HOST), ) # 6. 使用回调处理器调用链 question Langfuse是做什么的 response rag_chain.invoke( question, config{callbacks: [langfuse_handler]} # 关键传入回调配置 ) print(f问题{question}) print(f回答{response}) print(f本次执行的Trace ID可通过handler获取或去UI查看最新记录。)运行这个脚本。然后进入Langfuse UI找到最新的Trace。这次你会看到一个层次化的追踪视图一个顶层的Trace代表这次问答会话。下面可能有一个Span代表整个RAG Chain。在RAG Chain内部你会看到子Span例如retriever: 检索步骤包含检索到的文档片段。ChatOpenAI: LLM调用步骤包含完整的输入提示词和模型输出。可能还有prompt组装等步骤。这种自动化的、细粒度的追踪对于调试复杂的多步Agent工作流至关重要。你可以清晰地看到是哪一步检索到了无关文档或者LLM的输入提示词是否被正确构建。5.4 评估功能实战为问答结果打分追踪记录了“发生了什么”评估则要回答“结果好不好”。Langfuse支持自动化和人工两种评估方式。我们演示如何用另一个LLM如GPT-4作为“裁判”对上述RAG的回答进行自动化评分。首先在Langfuse UI中创建一个数据集Dataset和提示词Prompt但更编程化的方式是通过SDK。# evaluation_with_sdk.py import os from dotenv import load_dotenv from langfuse import Langfuse from langchain_openai import ChatOpenAI import asyncio load_dotenv() langfuse Langfuse( secret_keyos.getenv(LANGFUSE_SECRET_KEY), public_keyos.getenv(LANGFUSE_PUBLIC_KEY), hostos.getenv(LANGFUSE_HOST) ) async def create_and_run_evaluation(): # 1. 创建一个数据集项Dataset Item dataset_item await langfuse.async_client.create_dataset_item( dataset_nametech-qa-test, input{question: Langfuse是做什么的}, expected_outputLangfuse是一个开源的LLM应用可观测性平台主要用于追踪、评估和监控大语言模型应用。 ) print(f创建数据集项: {dataset_item.id}) # 假设我们有一个之前运行RAG链得到的Trace ID # trace_id your-actual-trace-id-from-previous-run # 为了演示我们这里模拟一个已有的Trace你需要替换成真实的 # 我们先创建一个简单的Trace来模拟RAG的输出 trace langfuse.trace(nameeval-demo-trace) generation trace.generation( namerag-answer, inputLangfuse是做什么的, outputLangfuse是一个提供LLM应用追踪和评估功能的开源平台。, metadata{model: gpt-3.5-turbo} ) trace_id trace.id print(f用于评估的Trace ID: {trace_id}) # 2. 定义评估函数使用GPT-4判断答案的相关性 eval_llm ChatOpenAI(modelgpt-4, temperature0) eval_prompt 你是一个严格的评估员。请根据参考答案评估以下AI助手的回答是否相关和准确。 参考答案{expected_output} 用户问题{input_question} 助手回答{model_output} 请从0到1打分1表示完全相关且准确0表示完全不相关或错误。 只输出一个浮点数分数不要有其他文字。 # 3. 执行评估 score_response eval_llm.invoke(eval_prompt.format( expected_outputLangfuse是一个开源的LLM应用可观测性平台主要用于追踪、评估和监控大语言模型应用。, input_questionLangfuse是做什么的, model_outputLangfuse是一个提供LLM应用追踪和评估功能的开源平台。 )) try: score float(score_response.content.strip()) except ValueError: score 0.5 # 解析失败给中间分 # 4. 将评估结果提交到Langfuse并与对应的Trace关联 await langfuse.async_client.create_evaluation( namerelevance_score, trace_idtrace_id, dataset_item_iddataset_item.id, scorescore, commentf自动化评估得分: {score}, metadata{evaluator_model: gpt-4} ) print(f评估完成得分: {score}已关联到Trace {trace_id}) # 运行异步函数 asyncio.run(create_and_run_evaluation())完成评估后在Langfuse UI的Evaluations页面或对应Trace的详情页中你就能看到这次自动化评估的打分。你可以对同一个Trace运行多种评估如相关性、事实性、流畅度从而多维度量化输出质量。6. 接口API与批量任务Langfuse的所有功能都通过API暴露这意味着你可以将可观测性深度集成到你的CI/CD流水线或批量处理任务中。6.1 核心API调用示例除了使用SDK你也可以直接调用其Ingestion API和Public API进行数据的上传和查询。# api_demo.py import requests import json import os from dotenv import load_dotenv load_dotenv() LANGFUSE_HOST os.getenv(LANGFUSE_HOST, http://localhost:9020) SECRET_KEY os.getenv(LANGFUSE_SECRET_KEY) headers { Authorization: fBearer {SECRET_KEY}, Content-Type: application/json } # 1. 创建Trace (POST /api/public/traces) trace_payload { name: api-created-trace, userId: user_123, metadata: {source: batch_job} } resp requests.post(f{LANGFUSE_HOST}/api/public/traces, jsontrace_payload, headersheaders) trace_id resp.json().get(id) print(f创建的Trace ID: {trace_id}) # 2. 为该Trace创建一个Generation Span (POST /api/public/generations) generation_payload { traceId: trace_id, name: api-generation, input: {question: What is observability?}, output: {answer: Observability is the ability to understand the internal state of a system from its external outputs.}, model: gpt-3.5-turbo, metadata: {batch_id: job_001} } resp requests.post(f{LANGFUSE_HOST}/api/public/generations, jsongeneration_payload, headersheaders) print(fGeneration创建状态: {resp.status_code}) # 3. 可选查询Trace (GET /api/public/traces/{traceId}) resp requests.get(f{LANGFUSE_HOST}/api/public/traces/{trace_id}, headersheaders) print(fTrace详情: {json.dumps(resp.json(), indent2, ensure_asciiFalse)})6.2 批量任务集成模式在实际项目中你可能有离线批量处理大量文档或测试用例的需求。集成Langfuse的批量任务模式如下任务初始化为整个批量任务创建一个顶层Trace如batch-job-20240527。循环处理为每个处理项如每篇文档、每个问题创建一个子Trace或Span关联到顶层Trace。记录细节在每个子Trace中记录检索、生成、评估等所有步骤。汇总分析任务完成后利用Langfuse UI的过滤和分组功能分析整体性能平均延迟、成功率或评估分数分布。失败排查通过筛选出错的Trace快速定位是某个特定输入、模型调用还是工具使用导致的问题。这种模式使得批量任务不再是黑盒每个环节都有据可查极大方便了问题复盘和效果优化。7. 资源占用与性能观察对于自托管部署了解其资源消耗对生产规划很重要。服务启动资源使用上述Docker Compose配置初始启动后三个容器PostgreSQL, Langfuse Server, 可能还有前端总内存占用通常在1GB左右。随着追踪数据量的增长PostgreSQL数据库的存储和内存占用会成为主要部分。数据增长影响Langfuse会存储所有Trace、Span、Generation的详细数据输入、输出、元数据。如果你的应用QPS很高或生成的内容很长数据量会快速增长。需要定期监控磁盘使用情况并考虑设置数据保留策略目前可能需要手动清理或通过API清理。SDK性能开销Langfuse SDK采用异步批处理的方式将数据发送到后端服务器对主应用进程的性能影响极小网络I/O在后台线程处理。但在极端高并发下需注意调整SDK的队列大小和批量发送设置。监控自身你可以在Langfuse中监控Langfuse自身API的调用延迟和错误率实现“可观测性的可观测性”。观察方法Docker资源使用docker stats命令实时查看各容器的CPU、内存使用率。数据库大小进入PostgreSQL容器执行SQL查询数据库大小。Langfuse DashboardUI中的Analytics面板提供了请求量、延迟、错误率的趋势图是观察应用性能的第一现场。8. 常见问题与排查方法在部署和使用过程中你可能会遇到以下问题问题现象可能原因排查方式解决方案访问localhost:3000无法打开页面1. 容器未成功启动。2. 端口被占用。3. 防火墙/安全组限制。1.docker compose ps查看容器状态。2.docker compose logs langfuse查看应用日志。3.netstat -tulnp | grep :3000检查端口占用。1. 根据日志修复错误常见于环境变量缺失或数据库连接失败。2. 修改docker-compose.yml中的端口映射如8080:3000。3. 确保本地防火墙允许访问。SDK上报数据后在UI中看不到Trace1. API密钥或主机地址配置错误。2. SDK异步发送延迟。3. 网络不通。1. 检查.env文件中的LANGFUSE_SECRET_KEY/PUBLIC_KEY/HOST是否正确。2. 检查SDK初始化代码。3. 等待几秒后刷新UI或调用langfuse.flush()强制发送。4. 检查Python脚本是否有未处理的异常导致进程提前退出。1. 在Langfuse UI的Settings中重新生成并复制API Keys。2. 确保LANGFUSE_HOST指向正确的后端地址通常是:9020端口。3. 在脚本末尾添加time.sleep(5)或调用flush()。LangChain回调处理器没有记录任何信息1. 回调处理器未正确传入invoke/call方法。2. LangChain版本兼容性问题。1. 确认调用链时config{callbacks: [handler]}参数是否正确设置。2. 查看Langfuse日志是否有错误。1. 确保使用langfuse.callback.CallbackHandler。2. 参考Langfuse官方文档检查与当前LangChain版本的兼容性。数据库磁盘空间增长过快1. 应用QPS高数据产生快。2. 未清理历史数据。1. 在UI中查看数据量趋势。2. 连接PostgreSQL查询各表大小。1. 考虑只记录生产环境错误或抽样记录。2. 定期归档或清理旧数据需谨慎目前UI可能不支持需通过SQL或API操作。3. 评估升级存储方案。评估分数不准确或波动大1. 评估提示词Prompt设计不佳。2. 评估模型如GPT-4本身的不确定性。1. 检查评估用的提示词是否清晰、无歧义。2. 对同一输出多次评估观察分数分布。1. 迭代优化评估提示词使其指令更明确。2. 结合人工评估进行校准。3. 使用更稳定的评估模型或设置固定的temperature0。9. 最佳实践与使用建议为了在企业级项目中有效落地Langfuse遵循以下最佳实践可以事半功倍分环境部署为开发、测试、生产环境部署独立的Langfuse实例或使用云服务的不同项目。生产环境的数据敏感且重要必须隔离。结构化Trace精心设计Trace和Span的命名与层级。例如使用微服务名-功能模块作为Trace名称使日志更具可读性。利用metadata字段记录业务ID、用户ID、会话ID等关键信息便于后续筛选。敏感信息脱敏在将数据发送到Langfuse之前对输入/输出中的API密钥、个人身份信息PII、敏感商业数据进行脱敏或哈希处理。可以在SDK层或应用层实现此逻辑。定义核心评估指标在项目早期就与业务方确定1-3个核心评估指标如回答相关性、代码正确性、用户满意度。围绕这些指标设计自动化评估和人工评估流程让优化方向始终明确。将可观测性纳入开发流程在代码评审中检查新功能是否添加了必要的追踪点。将关键评估指标的波动纳入监控告警。定期如每周回顾Langfuse Dashboard分析性能瓶颈和质量趋势。用于面试项目如果你将使用Langfuse的项目作为面试作品重点展示你如何利用它来发现问题、定位根因、通过数据驱动决策进行迭代。例如“在V1版本中通过Langfuse发现当用户问题包含特定术语时检索准确率下降30%。我们通过分析错误的Trace优化了文档分块策略在V2版本中将该场景的准确率提升了45%。” 这样的叙述比单纯说“我用了Langfuse”要有力得多。10. 总结与下一步Langfuse将一个复杂的“企业级Agent可观测性”需求拆解成了可轻松上手的追踪、评估、监控功能。通过本文的实战演示你应该已经掌握了从本地部署、SDK集成、复杂工作流追踪到自动化评估的完整流程。最值得尝试的起点如果你有一个正在开发的LangChain或LlamaIndex项目最快在15分钟内通过添加一个CallbackHandler你就能获得一个可视化的、层次化的执行轨迹图。这能立即提升你的调试效率。最容易踩的坑初次部署时务必检查环境变量尤其是数据库连接字符串和密钥是否正确集成SDK时确保回调处理器被正确传递到了LangM链的调用中。下一步深入方向探索生产部署研究如何在Kubernetes或云服务器上高可用地部署Langfuse并配置持久化存储和备份。深度定制评估结合业务逻辑编写更复杂的评估函数例如调用代码执行器验证生成代码的正确性。告警集成将Langfuse的监控指标如错误率突增、延迟超标与Slack、PagerDuty等告警平台集成。数据导出与分析利用Langfuse的API将追踪数据导出到你的数仓如Snowflake, BigQuery进行更长期的趋势分析和模型效果归因。将可观测性内化为AI应用开发的一部分是通向稳健、可信、可迭代的智能系统的必经之路。Langfuse提供了强大的工具箱现在关键在于你如何将它运用到你的项目和职业成长中。建议收藏本文在下次构建或优化Agent时亲手实践一遍。

相关新闻

三步让暗黑破坏神2重获新生:D2DX高清补丁终极指南

三步让暗黑破坏神2重获新生:D2DX高清补丁终极指南

三步让暗黑破坏神2重获新生:D2DX高清补丁终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 还在为经典暗黑…

2026/8/7 6:19:41 阅读更多 →
如何快速配置HS2-HF Patch:面向Honey Select 2玩家的完整增强指南

如何快速配置HS2-HF Patch:面向Honey Select 2玩家的完整增强指南

如何快速配置HS2-HF Patch:面向Honey Select 2玩家的完整增强指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾经因为语言障碍而无法充分…

2026/8/7 6:19:41 阅读更多 →
Qwen3.8 Max上线OpenRouter:从云API调用到本地部署的完整实践指南

Qwen3.8 Max上线OpenRouter:从云API调用到本地部署的完整实践指南

在实际 AI 模型应用和部署的生态中,模型权重的获取、分发与推理服务的便捷性,一直是开发者和研究者面临的核心挑战。一方面,我们希望获得性能强大、经过充分验证的模型权重文件;另一方面,我们也需要一个稳定、高效且易…

2026/8/7 6:19:41 阅读更多 →

最新新闻

环形链表检测:哈希表与快慢指针算法详解

环形链表检测:哈希表与快慢指针算法详解

1. 题目背景与核心需求环形链表 II(LeetCode #142)是数据结构与算法领域的经典面试题,主要考察对链表结构的理解和双指针技巧的掌握。题目要求给定一个链表的头节点,返回链表开始入环的第一个节点。如果链表无环,则返回…

2026/8/7 7:12:10 阅读更多 →
Workbuddy智能工作台:从本地部署到自定义指令的AI效率革命

Workbuddy智能工作台:从本地部署到自定义指令的AI效率革命

1. 项目概述:从工具到伙伴的认知跃迁如果你和我一样,长期在技术、内容创作或项目管理领域摸爬滚打,那么对“效率工具”这个词一定既爱又恨。爱的是它们承诺的解放生产力,恨的是大多数工具最终都沦为需要你花时间“伺候”的另一个负…

2026/8/7 7:12:10 阅读更多 →
Claude Code平替对比:TRAE Work在混合办公场景下的能力边界分析

Claude Code平替对比:TRAE Work在混合办公场景下的能力边界分析

在AI辅助开发与日常办公深度融合的今天,不少开发者和团队都在寻找适合自身场景的AI助手方案。Claude Code作为Anthropic推出的AI编程助手,在代码理解、长上下文处理方面建立了认知,但对于需要同时处理办公、文档、数据和偶发开发任务的用户来…

2026/8/7 7:12:10 阅读更多 →
Claude Code类似的企业Agent推荐:企业级AI编程助手选型指南

Claude Code类似的企业Agent推荐:企业级AI编程助手选型指南

随着AI辅助开发普及,越来越多企业开始寻找适合团队协作的AI编程Agent。Claude Code凭借大上下文窗口和代码理解能力获得开发者认可,但在国内企业使用条件、权限管控、生态协作等方面仍存在局限。本文从企业实际开发场景出发,对比几款主流的企…

2026/8/7 7:12:10 阅读更多 →
Agent 上下文压缩:从「背不动」到「拎得清」

Agent 上下文压缩:从「背不动」到「拎得清」

Agent 上下文压缩:从「背不动」到「拎得清」 > 一句话导读:你的 Agent 越跑越慢、越跑越蠢?大概率不是模型变菜了,而是它「背了太多不该背的东西」。本文用三张图,讲清楚为什么需要压缩、怎么压缩、什么时候用什么招…

2026/8/7 7:12:10 阅读更多 →
特征工程:从维度管理到深度学习的核心概念与实践

特征工程:从维度管理到深度学习的核心概念与实践

1. 从“特征”说起:为什么它是一切智能系统的基石聊到机器学习、数据分析或者任何跟“智能”沾边的项目,你几乎无法绕开一个词——特征。它听起来平平无奇,甚至有些抽象,但却是整个大厦的基石。你可以把特征理解为,我们…

2026/8/7 7:11:09 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →