以编程方式使用文档

Visual Studio Code Copilot Chat 可以将追踪数据导出到 OpenTelemetry (OTel)。LangSmith 直接摄入 OTLP,因此您可以将 Copilot Chat 指向 LangSmith 并与 LLM 追踪一起检查代理轮次、模型元数据、工具调用和 Token 使用情况。

本指南基于 Copilot 的 使用 OpenTelemetry 监控代理使用情况 reference.

前提条件

在设置追踪之前,请确保您已具备:

配置追踪

当设置了以下任一条件时,Copilot Chat 会启用 OTel 发送 COPILOT_OTEL_ENABLED, OTEL_EXPORTER_OTLP_ENDPOINT,或设置了 github.copilot.chat.otel.enabled 设置时。将 Copilot Chat 追踪发送到 LangSmith 的最简单方法是在启动 VS Code 前导出以下环境变量:

变量描述
COPILOT_OTEL_ENABLED设置为 true 以启用 Copilot Chat OTel 导出。
COPILOT_OTEL_PROTOCOLOTLP 协议。使用 http 指向 LangSmith 的 HTTP OTLP 接收端点。
COPILOT_OTEL_ENDPOINTLangSmith OTLP 端点。优先于 OTEL_EXPORTER_OTLP_ENDPOINT.
COPILOT_OTEL_CAPTURE_CONTENT在跨度上捕获完整提示、响应、工具参数和工具结果。默认关闭。
OTEL_EXPORTER_OTLP_HEADERSOTLP 导出器的身份验证标头。使用 x-api-key=<your_langsmith_api_key> 和可选 Langsmith-Project=<project> 将追踪路由到特定 LangSmith 项目.

VS Code 必须继承这些环境变量,因此请在启动 VS Code 的 shell 会话中导出它们(例如,通过将它们添加到 ~/.zshrc, ~/.bashrc或 shell 配置文件中),然后再启动编辑器。

替代方案:VS Code 设置

如果您不想设置环境变量,可以从 VS Code 设置中启用 OTel。打开 **设置** (⌘, / Ctrl+,),搜索 copilot otel,并配置:

{
  "github.copilot.chat.otel.enabled": true,
  "github.copilot.chat.otel.exporterType": "otlp-http",
  "github.copilot.chat.otel.otlpEndpoint": "https://api.smith.langchain.com/otel",
  "github.copilot.chat.otel.captureContent": true
}

身份验证标头仍必须通过 OTEL_EXPORTER_OTLP_HEADERS 环境变量提供——VS Code 设置不暴露标头字段。当两者都设置时,环境变量也优先于 VS Code 设置。

在 LangSmith 中查看追踪

启动 Copilot Chat 会话并发送请求。打开您的 LangSmith 项目 以查看生成的跟踪。每个代理交互都会产生一个遵循以下规范的分层跨度树 OTel GenAI 语义约定:

  • - invoke_agent 跨度封装了完整的代理编排,包括代理名称、对话 ID、轮次计数和总 token 使用量。
  • - chat 跨度捕获单个 LLM API 调用,包括模型、token 计数、响应时间和完成原因。
  • - execute_tool 跨度捕获工具调用,包括工具名称、类型、持续时间和成功状态。

当代理调用子代理时,Copilot Chat 会自动传播跟踪上下文,因此子代理的 invoke_agent 跨度在 LangSmith 中显示为父级的 execute_tool 子跨度。

故障排除

  • LangSmith 中没有显示跟踪。 确认 COPILOT_OTEL_ENABLED=true 并且 VS Code 是从导出变量的 shell 中启动的。验证 OTEL_EXPORTER_OTLP_HEADERS 包含 x-api-key=<your_langsmith_api_key> 并且 API 密钥属于您要跟踪到的工作区。更改环境变量后重启 VS Code。
  • 跟踪进入错误的项目。 设置 Langsmith-Project=<your_project_name> in OTEL_EXPORTER_OTLP_HEADERS。如果未设置,跟踪将进入工作区的 default project.
  • 缺少提示和响应。 内容捕获是可选的。设置 COPILOT_OTEL_CAPTURE_CONTENT=true (或启用 github.copilot.chat.otel.captureContent 设置)。

相关资源