Introducing End-to-End OpenTelemetry Support in LangSmith

隆重推出 LangSmith 对 OpenTelemetry 的端到端支持

LangSmith 现在为基于 LangChain 和/或 LangGraph 构建的应用程序提供端到端的 OpenTelemetry (OTel) 支持。

3 分钟阅读

可观测性对于调试和优化 LLM 应用至关重要——但直到现在,要全面了解你的系统意味着需要使用多种工具和格式。现在,LangSmith 为基于 LangChain 和/或 LangGraph 构建的应用提供了完整的端到端 OpenTelemetry 支持。 

通过我们的 OpenTelemetry (OTel) 集成,你可以标准化整个堆栈的追踪,并将追踪发送到 LangSmith(我们用于代理生命周期的测试和可观测性平台)或其他可观测性平台。 

此前,LangSmith 仅支持 OpenTelemetry 作为后端追踪摄入格式。此次更新,我们通过直接在 LangSmith SDK 中添加原生 OpenTelemetry 支持,完成了这一功能。

为什么 LLM 应用需要 OpenTelemetry?

OpenTelemetry (OTel) 是一个开源的可观测性框架,它标准化了遥测数据的收集、导出和分析方式。随着应用程序变得越来越复杂和分布式,OpenTelemetry 提供了一种一致的方式来跟踪性能、理解系统行为和排除故障。

对于 LLM 应用,可观测性带来了独特的挑战。传统的应用监控侧重于错误和对预期行为的遵循——然而,LLM 的可观测性需要理解多步工作流程,并监控具有复杂评估指标的动态、随机输出,这超越了简单的错误率。

OpenTelemetry 通过提供一种统一的、厂商中立的标准来实现跨不同语言、框架和后端运行的仪器化,从而应对了这些挑战。

我们的 OpenTelemetry 流水线如何工作

通过此次更新,LangSmith 现在为 LLM 应用提供了一个完整的 OpenTelemetry 流水线。

  • LangChain 仪器化:自动从你的 LangChain 或 LangGraph 应用生成详细的追踪。
  • LangSmith SDK:使用 OpenTelemetry 的标准化格式,通过我们的 SDK 转换和传输这些追踪。
  • LangSmith 平台:在一个强大的、针对 LLM 的可观测性仪表板中摄入和可视化追踪。

这种端到端的集成带来了几个关键优势:

  • 统一的可观测性:在一个单一、连贯的视图中查看你的整个应用程序堆栈——从 LangChain 组件到底层基础设施。
  • 分布式追踪:跟踪请求在你的微服务架构中的移动路径,通过上下文传播确保相关的跨度链接到同一个追踪。
  • 互操作性:通过 OpenTelemetry 标准,将 LangSmith 与你现有的可观测性工具和基础设施连接起来,包括 Datadog、Grafana 和 Jaeger 等平台。

通过此集成,你可以追踪 LLM 应用的完整执行路径,从初始提示到最终响应,并对每个步骤都有详细的可见性。

开始使用 LangSmith 中的 OpenTelemetry

1. 安装

安装支持 OpenTelemetry 的 LangSmith 包。

pip install "langsmith[otel]"
pip install langchain

2. 启用 OpenTelemetry 集成

你可以通过设置 LANGSMITH_OTEL_ENABLED 环境变量来启用 OpenTelemetry 集成。

LANGSMITH_OTEL_ENABLED=true
LANGSMITH_TRACING=true
LANGSMITH_ENDPOINT=https://api.smith.langchain.com
LANGSMITH_API_KEY=<your_langsmith_api_key>

3. 创建一个带有追踪功能的 LangChain 应用

下面是一个展示如何将 OpenTelemetry 集成与 LangChain 一起使用的简单示例。

import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate


# LangChain will automatically use OpenTelemetry to send traces to LangSmith
# because the LANGSMITH_OTEL_ENABLED environment variable is set


# Create a chain
prompt = ChatPromptTemplate.from_template("Tell me a joke about {topic}")
model = ChatOpenAI()
chain = prompt | model


# Run the chain
result = chain.invoke({"topic": "programming"})
print(result.content)

4. 在 LangSmith 中查看追踪

运行你的应用程序后,你将在 LangSmith 仪表板中看到追踪,就像这个一样

性能考量

虽然我们完整的 OpenTelemetry 支持提供了最大的灵活性和互操作性,但与 LangSmith 的原生追踪格式相比,它的开销会略高。 

对于仅将 LangSmith 作为其可观测性平台的用户,我们仍然建议使用我们的原生追踪格式以获得最佳性能。它提供实时的追踪和待处理的运行,更快的摄入速度,以及 SDK 内存开销的减少。

原生 LangSmith 追踪格式是专门为 LLM 应用设计的,并提供了几个关键优势。与更通用的 OpenTelemetry 格式相比,它具有显著降低的开销,更低的计算和内存占用。我们的原生格式也是为 LLM 应用中独特的d 数据模式和数据量量身定制的。

立即尝试

准备好开始使用 OpenTelemetry 追踪你的 LangChain 和 LangGraph 应用了吗?查看我们的完整文档以获取更多详细信息和示例——如果你还没有注册,请免费试用 LangSmith

© . This site is unofficial and not affiliated with LangChain, Inc.