LangSmith Helm 图表提供了两种将环境变量注入服务的方式:commonEnv 和 extraEnv。理解它们之间的区别有助于您正确配置部署并避免运行时错误。

commonEnv

commonEnv 是 values.yaml 中的一个顶级字段,它适用于 除了 playground 和 aceBackend 服务之外的所有部署和有状态集,这些服务是沙盒化的,不会接收 commonEnv 的值。 当一个变量需要同时供大多数服务使用时,应使用 commonEnv,例如自定义 CA 证书路径、代理设置或影响整个平台的功能标志。

接收 commonEnv 的服务

以下服务接收 commonEnv:
  • backend
  • platformBackend
  • queue
  • ingestQueue
  • frontend
  • hostBackend

不接收 commonEnv 的服务

以下服务是沙盒化的,不接收 commonEnv:
  • playground
  • aceBackend
要为这些服务设置环境变量,请直接使用它们各自的 extraEnv:

extraEnv

extraEnv 是一个按服务划分的字段,它仅向特定服务添加环境变量。每个支持 extraEnv 的服务都将其暴露在 <service>.deployment.extraEnv 路径下。 当一个变量仅适用于某个服务,或者当您需要为 playground 或 aceBackend 设置 commonEnv 无法到达的变量时,应使用 extraEnv。

不允许重复变量名

该图表使用一个 detectDuplicates 辅助函数来验证每个服务的环境变量名。如果同一个变量名出现在某个服务的合并变量列表(包括从 commonEnv、extraEnv 添加的变量以及图表管理的变量)中超过一次,Helm 在模板渲染期间将失败,并显示类似以下的错误:
要解决此问题,请从 commonEnv 或服务的 extraEnv 中删除重复项,确保每个变量名在每个服务中只出现一次。
图表管理的变量(由 Helm 图表内部设置)也计入重复检测。如果图表已经管理了某个变量,请勿将该变量名添加到 commonEnv 或 extraEnv 中。请查看 图表值文件 以了解图表默认设置了哪些变量。

示例:为大多数服务设置变量,但为某个服务覆盖它

要为大多数服务使用一个通用值,同时为特定服务覆盖它,可以在 commonEnv 中设置它,并将覆盖值添加到该服务的 extraEnv 中。因为 playground 和 aceBackend 不接收 commonEnv,您必须始终通过它们各自的 extraEnv 为这些服务设置变量。

常用功能标志

减少批量运行持久化日志

默认情况下,LangSmith 会为其通过基于 Go 的提取队列持久化的每批运行记录一条成功消息。在处理大量跟踪的部署上,这可能会产生过多的日志噪声。 FF_PERSIST_BATCHED_RUNS_SUCCESS_LOGGING 默认为 true,并且当 ingestQueue.enabled 为 true(默认值)时,会通过 commonEnv 注入到所有服务中。要禁用这些成功日志消息,请在 commonEnv 中覆盖它:
将此标志设置为 false 仅会抑制每个批次的成功消息。错误仍然会被记录。

相关页面