Visual Studio Code Copilot Chat 可以将追踪数据导出到 OpenTelemetry (OTel)。LangSmith 直接摄入 OTLP,因此您可以将 Copilot Chat 指向 LangSmith 并与 LLM 追踪一起检查代理轮次、模型元数据、工具调用和 Token 使用情况。
本指南基于 Copilot 的 使用 OpenTelemetry 监控代理使用情况 reference.
前提条件
在设置追踪之前,请确保您已具备:
- - 最新版本的 Visual Studio Code 已安装并登录 GitHub Copilot Chat。
- - A LangSmith API 密钥.
配置追踪
当设置了以下任一条件时,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_PROTOCOL | OTLP 协议。使用 http 指向 LangSmith 的 HTTP OTLP 接收端点。 |
COPILOT_OTEL_ENDPOINT | LangSmith OTLP 端点。优先于 OTEL_EXPORTER_OTLP_ENDPOINT. |
COPILOT_OTEL_CAPTURE_CONTENT | 在跨度上捕获完整提示、响应、工具参数和工具结果。默认关闭。 |
OTEL_EXPORTER_OTLP_HEADERS | OTLP 导出器的身份验证标头。使用 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>inOTEL_EXPORTER_OTLP_HEADERS。如果未设置,跟踪将进入工作区的defaultproject. - 缺少提示和响应。 内容捕获是可选的。设置
COPILOT_OTEL_CAPTURE_CONTENT=true(或启用github.copilot.chat.otel.captureContent设置)。