以编程方式使用文档

langsmith-codex-plugins 市场提供了一个追踪插件,可发送 OpenAI Codex 会话数据至 LangSmith。使用它检查代理轮次、模型元数据、令牌使用量、工具调用以及 Codex 工作流中的子代理线程。

前提条件

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

安装并启用插件

使用 Codex CLI 添加市场:

codex plugin marketplace add langchain-ai/langsmith-codex-plugins

~/.codex/config.toml中全局启用插件钩子和追踪插件,或仅在特定项目中启用 .codex/config.toml:

[features]
plugin_hooks = true

[plugins."tracing@langsmith-codex-plugins"]
enabled = true

配置追踪

追踪在 TRACE_TO_LANGSMITH is "true" or enabled is true 中配置前处于禁用状态。使用环境变量、JSON 配置文件或两者结合来配置凭据。

环境变量

插件首先读取 Codex 特定变量,然后回退到通用 LangSmith SDK 变量。

变量必填默认描述
TRACE_TO_LANGSMITH-设为 "true" 以启用追踪。
LANGSMITH_CODEX_API_KEY条件性-LangSmith API 密钥。回退到 LANGSMITH_API_KEY。除非每个副本都提供自己的 API 密钥,否则必填。
LANGSMITH_CODEX_ENDPOINTNohttps://api.smith.langchain.comLangSmith API URL。回退到 LANGSMITH_ENDPOINT.
LANGSMITH_CODEX_PROJECTNocodexLangSmith 项目名称。回退到 LANGSMITH_PROJECT.
LANGSMITH_CODEX_METADATA-合并到根追踪元数据的 JSON 对象。回退到 LANGSMITH_METADATA.
LANGSMITH_CODEX_RUNS_ENDPOINTS-副本目标的 JSON 数组。回退到 LANGSMITH_RUNS_ENDPOINTS.

将变量添加到您的 shell 配置文件(~/.zshrc, ~/.bashrc, or ~/.bash_profile):

配置文件

使用 <project>/.codex/langsmith.json 进行项目级设置,使用 ~/.codex/langsmith.json 进行全局默认值。全局文件先加载,项目文件覆盖它,匹配的环境变量优先于两者。

{
  "enabled": true,
  "api_key": "<your-langsmith-api-key>",
  "api_url": "https://api.smith.langchain.com",
  "project": "codex",
  "metadata": {
    "team": "agents",
    "environment": "dev"
  }
}
字段环境变量默认描述
enabledTRACE_TO_LANGSMITHfalse设为 true 以启用追踪。
api_keyLANGSMITH_CODEX_API_KEY, LANGSMITH_API_KEY-LangSmith API 密钥。
api_urlLANGSMITH_CODEX_ENDPOINT, LANGSMITH_ENDPOINTLangSmith 默认值LangSmith API URL。
projectLANGSMITH_CODEX_PROJECT, LANGSMITH_PROJECTcodexLangSmith 项目名称。
metadataLANGSMITH_CODEX_METADATA, LANGSMITH_METADATA-合并到根追踪元数据的对象。
replicasLANGSMITH_CODEX_RUNS_ENDPOINTS, LANGSMITH_RUNS_ENDPOINTS-复制追踪的目标 LangSmith 目的地。

将包含 API 密钥的配置文件排除在版本控制之外。

追踪到多个目的地

设置 replicas in langsmith.json or LANGSMITH_CODEX_RUNS_ENDPOINTS 以将相同的追踪数据发送到其他 LangSmith 工作区或项目。设置后,副本列表会覆盖其他客户端设置。

追踪到多个 副本 适用于:

  • - 将追踪同时发送到生产项目和暂存项目。
  • - 使用不同的 API 密钥追踪多个工作区。
  • - 为特定副本目标添加额外的元数据。

Config file (recommended)

In <project>/.codex/langsmith.json or ~/.codex/langsmith.json:

{
  "enabled": true,
  "replicas": [
    {
      "apiUrl": "https://api.smith.langchain.com",
      "apiKey": "lsv2_pt_workspace_a",
      "projectName": "project-prod"
    },
    {
      "apiUrl": "https://api.smith.langchain.com",
      "apiKey": "lsv2_pt_workspace_b",
      "projectName": "project-staging",
      "updates": { "metadata": { "environment": "staging" } }
    }
  ]
}

Shell environment variable

要生成转义的 JSON 字符串,请使用:

echo '[{"apiUrl":"...","apiKey":"...","projectName":"..."}]' | jq -c .

每个副本对象支持以下字段:

字段必填描述
apiUrlLangSmith API URL(通常为 https://api.smith.langchain.com).
apiKey目标工作区的 API 密钥。
projectName目标工作区中的项目名称。
updates可选字段,用于覆盖复制运行时的字段,如额外的元数据。

追踪内容

每次 LLM 运行包括:

  • 输入:累积的对话消息。
  • 输出:助手响应内容。
  • 元数据:模型提供商、模型名称、停止原因和令牌使用情况。

工具调用(函数调用、Shell 调用、计算机调用、文件读取、网络搜索)会包含其输入和输出。子代理线程会被解析并作为嵌套子运行上传到父轮次下。

用户在中途取消的中断轮次会在会话完成后仍然上传。

在 LangSmith 中查看追踪

打开配置的 LangSmith 项目并完成一个 Codex 轮次。默认情况下追踪会显示在 codex 项目中。插件会上传完成的 Codex 转录数据,包括消息、工具调用的输入和输出、模型元数据、令牌使用情况和子代理线程结构。

故障排除

如果追踪未出现在 LangSmith 中:

  • - 确认 plugin_hooks = true 且追踪插件已在 config.toml.
  • - 中启用 TRACE_TO_LANGSMITH=true 对 Codex 进程可见。
  • - 确认 LANGSMITH_CODEX_API_KEY or LANGSMITH_API_KEY 已设置且有效。
  • - 如果运行进入了错误的项目,请设置 LANGSMITH_CODEX_PROJECTproject 配置键。
  • - 如果未使用自定义端点,请设置 LANGSMITH_CODEX_ENDPOINTapi_url 配置键。