OpenRouter 安全与可观测

OpenRouter 安全与可观测

LangSmith

1 分钟阅读

LangSmith

将追踪发送到 LangSmith

LangSmith 是 LangChain 用于调试、测试、评估和监控 LLM 应用的平台。

第 1 步:获取 LangSmith API 密钥和项目名称

在 LangSmith 中,前往 设置 > API 密钥(Settings > API Keys) 创建新的 API 密钥。然后前往你的项目或新建一个项目以获取项目名称。

第 2 步:在 OpenRouter 中启用广播

前往 设置 > 可观测性(Settings > Observability),打开 启用广播(Enable Broadcast) 开关。

启用广播

第 3 步:配置 LangSmith

点击 LangSmith 旁的编辑图标,并填写:

  • Api Key:你的 LangSmith API 密钥(以 lsv2_pt_... 开头)
  • Project:你的 LangSmith 项目名称
  • Endpoint(可选):默认为 https://api.smith.langchain.com。自托管实例请自行修改

第 4 步:测试并保存

点击 测试连接(Test Connection) 验证配置。仅当测试通过时才会保存配置。

第 5 步:发送测试追踪

通过 OpenRouter 发出一次 API 请求,然后在 LangSmith 中查看该追踪。追踪会出现在指定项目中,并包含完整详情:

  • 输入和输出消息
  • Token 用量(提示词、补全和 Token 总量)
  • 费用信息
  • 模型和模型服务提供商信息
  • 时间与延迟指标

发送哪些数据

OpenRouter 使用 OpenTelemetry(OTEL)协议向 LangSmith 发送追踪,并包含以下属性:

  • GenAI 语义约定:模型名称、Token 计数、费用和请求参数
  • LangSmith 特定属性:追踪名称、Span 类型、用户 ID 和自定义元数据
  • 错误处理:请求失败时带有错误类型和消息的异常事件

LangSmith 使用 /otel/v1/traces 上的 OTEL 端点接收追踪数据。这可确保与 LangSmith 原生追踪基础设施兼容。

自定义元数据

LangSmith 支持追踪层次结构、标签和自定义元数据,便于组织和分析 LLM 调用。

支持的元数据键

LangSmith 映射说明
trace_idTrace ID将多次运行归入同一条追踪
trace_nameRun Name在 LangSmith 追踪列表中显示的自定义名称
span_nameRun Name中间 chain/tool 运行的名称
generation_nameRun NameLLM 运行的名称
parent_span_idParent Run ID关联到追踪层次结构中已有的运行

标签

元数据中传入的字符串数组可用作标签。LangSmith 中的标签是逗号分隔的值,用于筛选和组织追踪。

示例

{
  "model": "openai/gpt-4o",
  "messages": [{ "role": "user", "content": "Analyze this text..." }],
  "user": "user_12345",
  "session_id": "session_abc",
  "trace": {
    "trace_id": "analysis_workflow_123",
    "trace_name": "Text Analysis Pipeline",
    "span_name": "Sentiment Analysis",
    "generation_name": "Extract Sentiment",
    "environment": "production",
    "team": "nlp-team"
  }
}

运行类型

OpenRouter 将观测类型映射到 LangSmith 运行类型:

  • GENERATIONllm 运行类型
  • SPANchain 运行类型
  • EVENTtool 运行类型

补充说明

  • user 字段会映射到 LangSmith 的 User ID
  • session_id 字段会映射到 LangSmith 的 Session ID,用于对话跟踪
  • 自定义元数据键会作为 Span 属性传递,可在运行详情中查看

隐私模式

当该目标端启用 隐私模式 时,追踪中会排除提示词和补全内容。其余追踪数据——Token 用量、费用、时间信息、模型信息以及自定义元数据——仍会正常发送。详情见 隐私模式