成功部署 LangChain 应用,不仅限于构建功能性的链和代理。向生产环境的过渡需要有效的机制来了解应用行为、诊断问题并确保性能一致。鉴于大型语言模型的变动性以及 LangChain 应用中常见的复杂性(涉及 LLM、检索器、工具和解析器等多个组成部分),传统的日志记录和监控方法通常不足。在此背景下,LangSmith 成为操作工具集中不可缺少的一部分。LangSmith 是一个专为应对开发、部署和维护 LLM 驱动应用的全生命周期挑战而设计的平台,特别是那些使用 LangChain 构建的应用。它提供集成的工具,用于追踪、监控、调试、测试、评估和收集反馈,能够清晰查看您的链和代理的内部运作情况。可以将其视为 LangChain 应用脱离本地受控环境后的一个控制中心。生产环境的核心功能LangSmith 提供了几项集成功能,在生产环境中运行 LangChain 应用时尤为有价值:执行追踪: 其核心是,LangSmith 自动捕获每次执行运行的详细追踪信息。当调用链或代理时,LangSmith 会记录每个步骤:LLM 调用的输入和输出、检索器的查询和结果、工具调用以及解析器操作。这会生成整个过程的全面、分层视图。例如,RAG 查询的追踪信息可能会显示初始用户输入、查询转换步骤、向量数据库查找、检索到的文档、发送给 LLM 的最终提示以及生成的响应。可视化这些追踪信息使开发人员和操作人员能够准确地跟踪数据流和控制流,这对于理解复杂交互非常有价值。digraph G { rankdir=TB; node [shape=box, style=rounded, fontname="sans-serif", color="#adb5bd", fontcolor="#495057"]; edge [color="#adb5bd"]; "用户输入" -> "链启动"; "链启动" -> "检索文档" [label=" 查询"]; "检索文档" -> "LLM 调用" [label=" 上下文"]; "链启动" -> "LLM 调用" [label=" 输入"]; "LLM 调用" -> "解析输出"; "解析输出" -> "最终响应"; }LangSmith 捕获的追踪流程简化图,显示了组件间的交互情况。调试与根本原因分析: 当出现故障或应用行为偏离预期时,LangSmith 追踪信息提供了第一道防线。您无需仅仅依赖应用日志,而是可以检查追踪中每个步骤的确切输入、输出和错误。这大大加快了根本原因分析的速度。LLM 是否产生了幻觉?检索器是否未能找到相关文档?解析 LLM 输出时是否出现错误?追踪信息通常包含答案,显示了在其他情况下难以捕获的中间状态。这种详细的洞察对于调试非确定性的 LLM 行为或复杂的代理决策过程尤为重要。监控与性能分析: 虽然单个追踪对于调试特定运行很有用,但 LangSmith 还能汇总多次运行的数据,提供高层级的监控仪表板。您可以追踪对生产健康状况很重要的指标:延迟: 监控端到端执行时间以及单个组件(例如 LLM 调用、工具使用)的延迟。成本/令牌使用: 追踪 LLM 调用消耗的令牌数量,有助于管理运营成本。错误率: 观察特定链或组件内的故障频率。反馈评分: 如果收集用户反馈,请监控用户满意度趋势(例如,点赞/点踩率)。这些汇总指标能清晰显示应用整体健康状况和随时间变化的性能趋势。{"data":[{"type": "scatter", "x": ["2024-07-01", "2024-07-02", "2024-07-03", "2024-07-04", "2024-07-05"], "y": [1.2, 1.5, 1.3, 1.6, 1.4], "mode": "lines+markers", "name": "P95 延迟 (秒)", "line": {"color": "#228be6"}}, {"type": "scatter", "x": ["2024-07-01", "2024-07-02", "2024-07-03", "2024-07-04", "2024-07-05"], "y": [2100, 2500, 2200, 2800, 2600], "mode": "lines+markers", "name": "平均令牌数", "yaxis": "y2", "line": {"color": "#fab005"}}], "layout": {"title": "应用性能指标随时间变化", "xaxis": {"title": "日期"}, "yaxis": {"title": "延迟 (秒)", "color": "#228be6"}, "yaxis2": {"title": "令牌数", "overlaying": "y", "side": "right", "color": "#fab005"}, "legend": {"x": 0.1, "y": 1.1, "orientation": "h"}, "margin": {"l": 50, "r": 50, "t": 50, "b": 50}, "font": {"family": "sans-serif"}}}示例图表,显示了可能在 LangSmith 监控仪表板中看到的延迟和令牌使用趋势。评估框架: LangSmith 集成了强大的工具来评估应用质量。您可以创建包含输入和预期输出(或参考标签)的数据集,然后用这些数据集运行您的 LangChain 应用。LangSmith 便于定义自定义评估器(用 Python 编写)或使用预置评估器,包括使用另一个 LLM 评估正确性、连贯性或有害性等标准的“LLM 作为评判者”评估器。评估结果与追踪信息关联,使您能够查看应用表现不佳的特定示例。这种系统评估是迭代优化提示、检索策略和整体应用逻辑的基础。反馈收集集成: 了解用户感知对于迭代改进很重要。LangSmith 提供直接的机制来记录用户反馈(例如,点赞/点踩、评分、文本评论),并自动将其与生成响应的特定执行追踪关联起来。这使您能够根据反馈评分过滤追踪信息,识别不满意响应中的模式,并优先处理需要改进的方面。将 LangSmith 集成到您的生产工作流程中开始使用 LangSmith 通常需要在您的应用部署环境中设置一些环境变量:LANGCHAIN_TRACING_V2=true:启用 LangSmith 追踪功能。LANGCHAIN_API_KEY:您从 LangSmith 网站获取的唯一 API 密钥。LANGCHAIN_PROJECT:将运行分配到 LangSmith 中的特定项目。强烈建议这样做,以便组织追踪信息,特别是当您管理多个应用或环境时(例如,my-app-prod、my-app-staging)。确保您的生产环境能够网络访问 LangSmith API 端点 (api.smith.langchain.com)。在运行中添加元数据或标签(通过 LangChain 调用或上下文管理器中的 tags 或 metadata 参数)也是一个好习惯,以便在 LangSmith UI 中进行过滤和分析。例如,使用部署环境(prod、dev)或应用版本标记运行,可以大大简化组织工作。虽然 LangSmith 也包含用于共享和版本化提示的 LangSmith Hub,但它在生产环境中的主要价值在于此处讨论的追踪、监控和评估功能。这些功能提供了操作 LangChain 应用所需的可视性和控制力,以实现大规模可靠运行。通过在开发过程早期集成 LangSmith 并将其贯穿到生产环境,您为可观测性奠定了一个基础,这大大简化了复杂 LLM 系统的运营管理。