以编程方式使用文档

LLM 应用的有效可观测性需要主动检测故障、性能下降和回归。LangSmith 的告警功能有助于识别以下关键问题:

  • - 模型提供商的 API 速率限制违规。
  • - 应用程序的延迟增加。
  • - 影响反馈分数的应用程序更改,反映最终用户体验。
  • - LLM 使用产生的意外成本飙升。

LangSmith 中的告警按项目范围划分,需要为每个受监控的项目单独配置。

请按照以下步骤配置告警。

步骤 1:导航到创建告警

UI中,导航到您想要配置告警的 Tracing 项目。点击页面右上角的 **告警** 图标可查看该项目的现有告警并设置新告警。

步骤 2:选择指标类型

LangSmith 提供以下指标的基于阈值的告警:

指标类型描述使用场景
**运行次数**跟踪 运行 在时间窗口内的总数。监控管道是否按预期数量产生运行,并在意外下降时发出告警。
**成本**跟踪时间窗口内运行的总成本。监控 LLM 支出,在成本超过预期阈值时发出告警。需要 成本跟踪 已配置。
**错误**跟踪具有错误状态的运行。对错误总数或错误百分比(错误运行占所有运行的比例)发出告警。监控应用程序中的故障,或在错误率超过可接受阈值时发出告警。
**反馈分数**测量平均反馈分数。跟踪 来自最终用户的反馈 or 在线评估结果 以在回归时发出告警。
**延迟**测量平均运行执行时间。跟踪应用程序的延迟,在峰值和性能瓶颈时发出告警。

此外,对于 **错误** 和 **延迟**,您可以使用过滤器构建器在以下字段上堆叠条件,例如 **状态**, **运行类型**, **标签**,以及 **错误**。例如,您可以将错误告警限定为满足以下条件的运行 **状态** is error, **运行类型** is llm, **标签** is support_agent,以及 **错误** 匹配 RateLimitExceeded.

步骤 3:定义告警条件

告警条件由以下几个部分组成:

  • 聚合方法:平均值、百分比或计数。
  • 比较运算符: >=, <=,或超过阈值。
  • 阈值:触发告警的数值。
  • 聚合窗口:指标计算的时间段(选择 5 或 15 分钟)。
  • 反馈键 (仅反馈分数告警):要监控的特定反馈指标。

!告警条件配置

Example: 屏幕截图中的配置会在过去 5 分钟内超过 5% 的运行出现错误时生成告警。

您可以在历史时间窗口内预览告警行为,以了解有多少数据点以及哪些数据点会在所选阈值(以红色标注)处触发告警。例如,为项目设置 60 秒的平均延迟阈值可让您直观看到潜在告警,如以下屏幕截图所示。

!告警指标

步骤 4:配置通知渠道

Slack

使用 LangSmith 的原生 Slack 集成直接将告警通知发送到 Slack 频道。无需自定义 webhook 或 Slack 应用配置。

前提条件

  • - 连接到您 LangSmith 组织的 Slack 工作区。如果尚未连接,LangSmith 会在您配置此通知类型时提示您进行连接。

1. 配置 Slack 通知

  1. 在 **通知设置** 部分中,选择 **Slack**.
  2. 点击频道选择器。如果尚未关联 Slack 工作区,请点击 **连接 Slack** 并完成 OAuth 流程以授权 LangSmith。
  3. @LangSmith 应用添加到您希望接收通知的频道。该应用必须是频道的成员——输入 /invite @LangSmith 在频道中添加。
  4. 从下拉菜单中选择工作区和频道。如果频道没有立即显示,请点击刷新图标。
  5. 点击 **保存** 以保存通知配置。

2. 测试集成

点击 **发送测试通知** 以验证 LangSmith 可以访问该频道。检查频道中是否有测试消息。

通知格式

当警报触发时,LangSmith 会发布一条结构化的 Slack 消息,其中包含:

- **标题**:警报名称和您的 LangSmith 工作区名称。 - **详情行**:指标属性、触发值、比较运算符、配置的阈值、聚合方法和时间窗口——例如: Total Cost: $12.50 ≥ $5.00 · avg · 30 min. - **操作按钮**: **查看警报** (链接到 LangSmith 中的警报预览)和 **查看运行** (链接到触发警报的已筛选运行)。

PagerDuty

使用 PagerDuty 的 Events API v2将 PagerDuty 配置为通知频道。此集成允许关键的 LLM 应用程序问题触发 PagerDuty 事件,从而通过您现有的事件管理工作流程实现快速响应。

前提条件

  • - 拥有管理员访问权限的有效 PagerDuty 账户
  • - PagerDuty 中适当的服务级权限

如果是 LangSmith 的自定义部署,请确保没有防火墙设置阻止 LangSmith 服务的出口流量。

1. 在 PagerDuty 中创建服务

1. 登录您的 PagerDuty 账户 2. 导航到 **服务 → 服务目录** 3. 点击 **+ 新建服务** 4. 填写以下字段: - **名称**:提供一个描述性名称(例如"LangSmith 监控") - **描述**:添加有关被监控应用程序的详细信息 - **升级策略**:选择适当的团队升级策略 - **集成类型**:选择"Events API V2" 5. 点击 **添加服务** 以创建服务

2. 获取集成密钥

创建服务后,获取集成密钥:

  1. 从 **服务目录**中,找到并点击您新创建的服务
  2. 选择 **集成** 标签页
  3. 找到 "Events API V2" 集成
  4. 复制 **集成密钥** (32个字符的字母数字字符串)

!PagerDuty 集成密钥位置

3. 使用 PagerDuty 配置 LangSmith 警报

!PagerDuty 设置

1. 在 LangSmith 的警报设置的通知部分中,选择 **PagerDuty** 2. 点击密钥图标将集成密钥保存为工作区密钥,或选择现有工作区密钥。作为最佳实践,我们建议将集成密钥保存为工作区密钥,而不是直接添加。这将使您能够在工作区的多个警报中重复使用同一密钥。 3. 配置其他通知选项: - **严重程度**:映射到 PagerDuty 事件优先级 4. 通过点击发送测试警报 **发送测试警报** 5. 验证事件由 PagerDuty 触发并包含相关的 LangSmith 警报信息

故障排除

如果 PagerDuty 中未创建事件:

  • - 验证集成密钥在 LangSmith 中正确输入
  • - 确保 PagerDuty 服务处于活跃状态且不在维护模式
  • - 检查您的 PagerDuty 账户是否启用了 Events API v2
  • - 如果 PagerDuty 中缺少警报触发器,请检查预期的触发器是否在同一警报规则的上一次触发后一小时内发生,以及上一次警报创建的事件是否仍然处于活跃状态。
  • - 如果 LangSmith 实例位于防火墙后面,请检查网络连接

附加资源

- PagerDuty Events API v2 文档 - PagerDuty 集成指南

Dynatrace

使用 Dynatrace 的 Events API v2将 Dynatrace 配置为通知渠道。此集成将 LangSmith 警报事件发送到您的 Dynatrace 环境,从而能够与更广泛的基础设施监控进行关联。

前提条件

  • - 一个活跃的 Dynatrace 环境(SaaS 或托管)。
  • - 一个具有以下权限的 Dynatrace API 访问令牌 events.ingest scope.

如果您正在使用自定义 部署 的 LangSmith,请确保没有防火墙设置阻止从 LangSmith 服务的出口流量。

1. 在 Dynatrace 中创建 API 令牌

  1. 登录到您的 Dynatrace 环境。
  2. 导航到 **访问令牌**.
  3. 点击 **生成新令牌**.
  4. 提供描述性名称(例如,"LangSmith 警报")。
  5. 在...下 **范围**,搜索并启用 events.ingest (摄取事件)。
  6. 点击 **生成令牌**.
  7. 复制生成的令牌并妥善保管。该令牌仅会显示一次。

2. 获取您的 Dynatrace 环境 URL

您的 Dynatrace 环境 URL 遵循以下格式:

    https://{your-environment-id}.live.dynatrace.com
    

您可以在登录 Dynatrace 时的浏览器 URL 栏中找到您的环境 ID。

3. 配置 LangSmith 警报与 Dynatrace

1. 在 **通知设置** 中对于 LangSmith 中的警报设置,选择 **Dynatrace**. 1. 输入您的 Dynatrace 环境 URL。 1. 点击密钥图标将 API 令牌保存为工作区密钥,或选择现有的工作区密钥。作为最佳实践,建议将 API 令牌保存为工作区密钥,而非直接添加。这样您可以在工作区的多个警报中重复使用同一令牌。 1. 配置其他通知选项: - **事件类型**:选择 Dynatrace 事件类型(例如, CUSTOM_ALERT, ERROR_EVENT) 1. 点击发送测试警报 **发送测试通知**. 1. 验证该事件是否出现在您的 Dynatrace 环境中。

故障排除

如果事件未出现在 Dynatrace 中:

  • - 验证 API 令牌具有 events.ingest 权限且未过期。
  • - 确保环境 URL 正确且包含您的环境 ID。
  • - 确认 Authorization 标头格式使用 Api-Token (而不是 Bearer).
  • - 确保您的 Dynatrace 环境处于活动状态且可访问。
  • - 如果您的 LangSmith 实例在防火墙后面,请检查网络连接。

其他资源

- Dynatrace Events API v2 文档 - Dynatrace 访问令牌

Webhook

Webhook 通过在触发警报条件时发送 HTTP POST 请求来实现与自定义服务和第三方平台的集成。使用 Webhook 将警报数据转发到工单系统、聊天应用程序或自定义监控解决方案。

前提条件

  • - 一个可以接收 HTTP POST 请求的端点
  • - 接收服务的适当身份验证凭据(如果需要)

1. 准备您的接收端点

在 LangSmith 中配置 Webhook 之前,请确保您的接收端点:

  • - 接受 HTTP POST 请求
  • - 可以处理 JSON 负载
  • - 可从外部服务访问
  • - 具有适当的身份验证机制(如果需要)

如果使用 LangSmith 的自定义部署,请确保没有防火墙设置阻止 LangSmith 服务的出站流量。

2. 配置 Webhook 参数

在 **监控** 部分的 LangSmith UI 在 **警报** 标签页,点击 **+ 警报** 创建一个新警报

在 **通知设置** 部分,完成 webhook 配置,参数如下:

必填字段

  • URL:接收端点的完整 URL
  • - Example: https://api.example.com/incident-webhook

可选字段

  • 请求头:随 webhook 请求发送的 JSON 键值对
  • - 常用请求头包括:
  • - Authorization:用于认证令牌
  • - Content-Type:通常设置为 application/json (默认)
  • - X-Source:用于将来源标识为 LangSmith
  • - 如果没有请求头,使用 {}
  • 请求体模板:自定义发送到端点的 JSON 数据
  • - 默认:LangSmith 发送定义的负载,并将以下附加键值对追加到负载中:
  • - project_name:触发的警报名称
  • - alert_rule_id:用于识别 LangSmith 警报的 UUID。可用作 webhook 服务中的去重密钥。
  • - alert_rule_name:警报规则的名称。
  • - alert_rule_type: The type of alert (as of 04/01/2025 all alerts are of type threshold).
  • - alert_rule_attribute:与警报规则关联的属性 - error_count, feedback_score, latency, or cost.
  • - triggered_metric_value:触发阈值时的指标值。
  • - triggered_threshold:触发警报的阈值。
  • - timestamp:触发警报的时间戳。

3. 测试 webhook

点击 **发送测试警报** 发送 webhook 通知以确保通知按预期工作。

故障排除

如果 webhook 通知未送达:

  • - 验证 webhook URL 正确且可访问
  • - 确保所有认证请求头格式正确
  • - 检查你的接收端点是否接受 POST 请求
  • - 检查你的端点日志中是否有收到但被拒绝的请求
  • - 验证你的自定义负载模板是有效的 JSON 格式

安全注意事项

  • - 为你的 webhook 端点使用 HTTPS
  • - 为你的 webhook 端点实现身份验证
  • - 考虑在请求头中添加共享密钥以验证 webhook 来源
  • - 在处理传入的 webhook 请求之前先进行验证

示例配方

Configure Slack notifications via webhook

以下是通过 chat.postMessage API.

前提条件

  • - 访问 Slack 工作区的权限。
  • - 一个用于设置告警的 LangSmith 项目。
  • - 创建 Slack 应用程序的权限。

步骤 1:创建 Slack 应用

  1. 访问 Slack API 应用程序页面.
  2. 点击 **创建新应用**.
  3. 选择 **从头开始**.
  4. 提供 **应用名称** (例如 "LangSmith 告警")。
  5. 选择要安装应用的工作区。
  6. 点击 **创建应用**.

步骤 2:配置机器人权限

1. 在 Slack 应用配置的左侧边栏中,点击 **OAuth 与权限**. 2. 向下滚动到 **机器人令牌范围** 在 **范围** 下,点击 **添加 OAuth 范围**. 3. 添加以下范围: - chat:write (以应用身份发送消息)。 - chat:write.public (向应用不在的频道发送消息)。 - channels:read (查看基本频道信息)。

步骤 3:将应用安装到您的工作区

  1. 向上滚动到页面顶部的 **OAuth 与权限** page.
  2. 点击 **安装到工作区**.
  3. 查看权限并点击 **允许**.
  4. 复制出现的 **机器人用户 OAuth 令牌** (以 xoxb-).

步骤 4:将机器人添加到 Slack 频道

将机器人添加到您想要接收告警的特定频道。您可以通过在消息字段中 @ 机器人来将其添加到 Slack 频道(例如, @botname).

您还需要频道 ID 来在 LangSmith 中配置 webhook 告警。您可以通过打开频道详情 > 关于来找到频道 ID。

步骤 5:在 LangSmith 中配置 webhook 告警

  1. 在 LangSmith 中,导航到您的项目。
  2. 选择 **告警 → 创建告警**.
  3. 定义您的告警指标和条件。
  4. 在通知部分,选择 **Webhook**.
  5. 使用以下设置配置 webhook:

Webhook URL

      https://slack.com/api/chat.postMessage
      

请求头 <aside class="callout"><strong>提示</strong> 替换 xoxb-your-token-here 替换为您的机器人的用户 OAuth 令牌 </aside>

      {
        "Content-Type": "application/json",
        "Authorization": "Bearer xoxb-your-token-here"
      }
      

请求体模板 <aside class="callout"><strong>提示</strong> 必须填写 {channel_id} 的值(第 4 步中找到的值)。 <br /><br />其余字段: alert_name, project_nameproject_url 可选:向警报消息添加其他上下文。您可以在 project_url 中找到您的项目 ID。复制浏览器地址栏中 URL 的项目 ID 部分,不包括查询参数。 </aside>

      {
        "channel": "{channel_id}",
        "text": "{alert_name} triggered for {project_name}",
        "blocks": [
          {
            "type": "section",
            "text": {
              "type": "mrkdwn",
              "text": "🚨{alert_name} has been triggered"
            }
          },
          {
            "type": "section",
            "text": {
              "type": "mrkdwn",
              "text": "Please check the following link for more information:"
            }
          },
          {
            "type": "section",
            "text": {
              "type": "mrkdwn",
              "text": "<{project-url}|View in LangSmith>"
            }
          }
        ]
      }
      
  1. 点击 **保存** 以激活 webhook 配置。

第 6 步:测试集成

  1. 在 LangSmith 警报配置中,点击 **测试警报**.
  2. 检查您指定的 Slack 频道是否收到测试通知。
  3. 验证消息是否包含预期的警报信息。

(可选)第 7 步:在请求体中链接到警报预览

创建警报后,您可以选择在 webhook 请求体中链接其预览。

!警报预览窗格

配置方法:

1. 保存您的警报。 2. 在警报表中找到您保存的警报并点击它。 3. 复制显示的 URL。 4. 点击"编辑警报"。 5. 将现有项目 URL 替换为复制的警报预览 URL。

Configure Microsoft Teams notifications via webhook

以下是一个配置示例,说明如何使用 Workflows 应用 (Power Automate)将 LangSmith 警报配置为向 Microsoft Teams 频道发送通知。此方法推荐使用,因为它在流程内提取传入 JSON 中的字段,因此自动填充的 LangSmith 警报字段可以在 Teams 消息中正确呈现。

前提条件

  • - 拥有 Microsoft Teams 工作区的访问权限,且有添加 Workflows 的权限。
  • - 一个用于设置警报的 LangSmith 项目。

第 1 步:在 Teams 中创建 Workflow

  1. 在 Microsoft Teams 中,导航到您希望接收警报的频道。
  2. 点击频道名称旁边的 **...** (更多选项)菜单。
  3. 选择 **Workflows**.
  4. 搜索并选择 **收到 webhook 请求时发布到频道** template.
  5. 登录以确认连接,然后点击 **下一步**.
  6. 确认要发布警报的团队和频道,然后点击 **添加 workflow**.
  7. 复制生成的 **HTTP POST URL**—在 LangSmith 中使用此 URL。

步骤 2:在 Power Automate 中自定义消息(可选)

默认工作流会将原始 JSON 正文作为卡片发布。要格式化警报详情,请在 Power Automate 中编辑流程:

  1. 打开 Power Automate 门户 并编辑您创建的工作流。
  2. 点击 **在聊天或频道中发布卡片** action.
  3. 在 **自适应卡片** 字段中,使用 triggerOutputs()?['body/alert_rule_name'], triggerOutputs()?['body/project_name'], triggerOutputs()?['body/triggered_metric_value'], triggerOutputs()?['body/triggered_threshold'], triggerOutputs()?['body/timestamp']triggerOutputs()?['body/alert_rule_url'].
  4. 保存流程。

步骤 3:在 LangSmith 中配置 Webhook 警报

  1. 在 LangSmith 中,导航到您的项目。
  2. 选择 **警报 → 创建警报**.
  3. 定义您的警报指标和条件。
  4. 在通知部分,选择 **Webhook**.
  5. 使用以下设置配置 Webhook:

Webhook URL

粘贴 Teams 工作流中的 HTTP POST URL:

      https://prod-XX.westus.logic.azure.com:443/workflows/.../triggers/manual/paths/invoke?...
      

请求头

      {
        "Content-Type": "application/json"
      }
      

请求正文模板

LangSmith 会自动合并自动填充的警报字段(alert_rule_name, project_name, triggered_metric_value, triggered_threshold, timestamp, alert_rule_url及其他)到请求正文中作为顶级 JSON 键。Power Automate 直接从传入的有效负载中读取这些字段,因此空正文就足够了:

      {}
      
  1. 点击 **保存** 以激活 Webhook 配置。

步骤 4:测试集成

  1. 在 LangSmith 警报配置中,点击 **发送测试警报**.
  2. 检查您指定的 Teams 频道中的测试通知。
  3. 验证卡片包含预期的警报信息。

参考实现

有关将 LangSmith Webhook 负载(阈值警报、运行规则和通用事件)转换为格式化的 Teams 自适应卡片的完整示例,请参阅 langsmith-teams-webhook 示例仓库。该示例作为一个小型的 Python 服务运行在 Teams 工作流 URL 前面,这样就无需自定义 Power Automate 流程本身。

Configure email notifications via webhook

以下是一个示例,介绍如何配置 LangSmith 警报以使用 SendGrid 的邮件发送 API发送电子邮件通知。您可以使用任何公开 HTTP API 的事务性邮件服务商(例如 Mailgun、Amazon SES、Postmark)。

前提条件

  • - 一个已验证发件人身份的 SendGrid 账户。
  • - 一个具有 **邮件发送** permissions.
  • - 权限的 SendGrid API 密钥。

步骤 1:创建 SendGrid API 密钥

  1. 登录您的 SendGrid 控制台.
  2. 导航到 **设置 → API 密钥**.
  3. 点击 **创建 API 密钥**.
  4. 选择 **受限访问** 并启用 **邮件发送 → 完全访问**.
  5. 点击 **创建并查看**,复制密钥,并安全存储。

步骤 2:验证您的发件人邮箱

  1. 在 SendGrid 中,导航至 **设置 → 发件人身份验证**.
  2. 完成以下任一操作 **域名身份验证** (推荐)或 **单发件人验证** 用于您要发送的地址。

步骤 3:在 LangSmith 中配置 Webhook 警报

  1. 在 LangSmith 中,导航至您的项目。
  2. 选择 **警报 → 创建警报**.
  3. 定义您的警报指标和条件。
  4. 在通知部分,选择 **Webhook**.
  5. 使用以下设置配置 Webhook:

Webhook URL

      https://api.sendgrid.com/v3/mail/send
      

请求头

      {
        "Content-Type": "application/json",
        "Authorization": "Bearer SG.your-api-key-here"
      }
      

请求正文模板

      {
        "personalizations": [
          {
            "to": [
              {
                "email": "oncall@your-company.com"
              }
            ],
            "subject": "LangSmith alert triggered"
          }
        ],
        "from": {
          "email": "alerts@your-company.com",
          "name": "LangSmith Alerts"
        },
        "content": [
          {
            "type": "text/plain",
            "value": "A LangSmith alert was triggered. Open your LangSmith workspace to view the alert details, including the project, metric value, threshold, and timestamp."
          }
        ]
      }
      
  1. 点击 **保存** 以激活 Webhook 配置。

步骤 4:测试集成

  1. 在 LangSmith 警报配置中,点击 **发送测试警报**.
  2. 检查收件人收件箱中的测试通知。
  3. 验证电子邮件包含预期的警报信息。

使用其他电子邮件提供商

相同的模式适用于其他接受静态身份验证标头的交易电子邮件 API。更改 **Webhook URL** 和 **请求头** 以匹配您的提供商:

提供商Webhook URL身份验证标头格式
Mailgunhttps://api.mailgun.net/v3/{your-domain}/messagesAuthorization: Basic <base64(api:<key>)>
Postmarkhttps://api.postmarkapp.com/emailX-Postmark-Server-Token: <token>

调整 **请求正文模板** 以匹配每个提供商的预期负载格式。Amazon SES 不直接兼容,因为 SES API 需要对每个请求进行 AWS SigV4 签名,而这无法表示为静态标头。要使用 SES,请通过中间件路由(例如,带有 HTTP 触发器的 Lambda 函数)。

其他资源

- Slack chat.postMessage API 文档 - Slack Block Kit Builder - 使用 Microsoft Teams 工作流创建传入 Webhook - Power Automate 文档 - langsmith-teams-webhook 示例仓库 - SendGrid Mail Send API 文档

最佳实践

  • - 根据应用关键程度调整敏感度
  • - 从更宽泛的阈值开始,并根据观察到的模式进行优化
  • - 确保告警路由能够触达相应的值班人员