默认情况下,LangSmith 将运行的输入、输出、错误、清单、附加信息和事件存储在 ClickHouse 中。如果您愿意,可以改为将这些信息存储在 Blob 存储中,这有几个显著的优势。为了在生产部署中获得最佳效果,我们强烈建议使用 Blob 存储,它提供以下好处:
  1. 在高追踪环境中,输入、输出、错误、清单、附加信息和事件可能会使您的数据库大小急剧膨胀。
  2. 如果您使用的是 LangSmith 托管 ClickHouse,您可能希望将敏感信息存储在您环境内的 Blob 存储中。为了解决这个问题,LangSmith 支持将运行的输入、输出、错误、清单、附加信息、事件和附件存储在外部 Blob 存储系统中。
针对特定云平台的设置,请选择您的平台:有关完整的特定云平台设置和架构指南,请参阅 AWS、GCP 或 Azure。

要求

Azure Blob 存储在 Helm Chart 版本 0.8.9 及更高版本中可用。删除追踪项目 在 Azure 中从 Helm Chart 版本 0.10.43 开始支持。原生 GCS Blob 存储引擎支持(使用 engine: "GCS")在 Helm Chart 版本 0.13.29 及更高版本中可用。对于早期版本,GCS 通过 S3 兼容的 API 支持,需设置 engine: "S3" 并使用 HMAC 凭证。
  • 访问一个有效的 Blob 存储服务
  • Blob 存储中用于存储数据的桶/目录。我们强烈建议为 LangSmith 数据创建一个单独的桶/目录。
    • 如果您正在使用 TTL,您将需要设置生命周期策略来删除旧数据。有关更多信息,请参阅配置 TTL。这些策略应与您在 LangSmith 配置中设置的 TTL 相匹配,否则您可能会遇到数据丢失。请参阅 Blob 存储的 TTL 配置 了解如何设置生命周期规则。
  • 允许 LangSmith 服务访问桶/目录的凭证
    • 您需要为您的 LangSmith 实例提供访问桶/目录所需的凭证。请阅读下面的认证部分以获取更多信息。
  • 如果使用 S3 或 GCS,需要一个用于您的 Blob 存储服务的 API URL
    • 这将是 LangSmith 用于访问您的 Blob 存储系统的 URL
    • 对于 Amazon S3,这将是 S3 端点的 URL。类似于:https://s3.amazonaws.com 或 https://s3.us-west-1.amazonaws.com(如果使用区域端点)。
    • 对于 Google Cloud Storage,这将是 GCS 端点的 URL。类似于:https://storage.googleapis.com

认证

Amazon S3

要向 Amazon S3 进行认证,您需要创建一个 IAM 策略,授予以下对您桶的权限。
一旦您有了正确的策略,有三种方式可以向 Amazon S3 进行认证:
  1. IAM Roles for Service Accounts (IRSA)(推荐):您可以为您的 LangSmith 实例创建一个 IAM 角色并将该策略附加到该角色。这是在生产环境中向 Amazon S3 认证的推荐方式。
    1. 您需要创建一个附加了该策略的 IAM 角色。
    2. 您需要允许 LangSmith 服务账户承担该角色。langsmith-queue、langsmith-backend、langsmith-platform-backend 和 langsmith-ingest-queue 服务账户需要能够承担该角色。
      如果您使用自定义发布名称,服务账户名称会有所不同。您可以通过在集群中运行 kubectl get serviceaccounts 来找到服务账户名称。
    3. 您需要将角色 ARN 提供给 LangSmith。您可以通过在 Helm Chart 安装中为 queue、backend、platform-backend 和 ingest-queue 服务添加 eks.amazonaws.com/role-arn: "<role_arn>" 注释来实现。
  2. Access Key and Secret Key:您可以向 LangSmith 提供访问密钥和秘密密钥。这是向 Amazon S3 认证的最简单方式。但是,由于安全性较低,不建议在生产中使用。
    1. 您需要创建一个附加了该策略的用户。然后您可以为该用户配置访问密钥和秘密密钥。
  3. VPC Endpoint Access:您可以通过 VPC 端点启用对 S3 桶的访问,这允许流量安全地从您的 VPC 流向您的 S3 桶。
    1. 您需要配置一个 VPC 端点并将其设置为允许访问您的 S3 桶。
    2. 您可以参考我们的公共 Terraform 模块获取配置指导和示例。

KMS 加密头支持

从 LangSmith Helm Chart 版本 0.11.24 开始,您可以通过提供其 ARN 来传递 KMS 加密密钥头并强制写入时使用特定的 KMS 密钥。要启用此功能,请在您的 Helm Chart 中设置以下值:

CH 搜索

默认情况下,LangSmith 仍将用于搜索的 token 存储在 ClickHouse 中。如果您使用的是 LangSmith 托管 ClickHouse,您可能希望禁用此功能,以避免将潜在敏感信息发送到 ClickHouse。您可以在 Blob 存储配置中执行此操作。

配置

创建桶并获取必要的凭证后,您可以配置 LangSmith 以使用您的 Blob 存储系统。
Helm
如果使用访问密钥和秘密,您也可以提供一个包含认证信息的现有 Kubernetes 密钥。建议这样做,而不是在配置中直接提供访问密钥和秘密密钥。有关预期的密钥名称,请参阅生成的密钥模板。

TTL 配置

如果将 TTL 功能与 LangSmith 一起使用,您还需要为您的 Blob 存储配置 TTL 规则。存储在 Blob 存储上的追踪信息存储在特定的前缀路径下,该路径决定了数据的 TTL。当一个追踪的保留期被延长时,其相应的 Blob 存储路径会改变,以确保它与新的延长保留期匹配。 使用以下 TTL 前缀:
  • ttl_s/:短期(基础)TTL,配置为 14 天。
  • ttl_l/:长期(扩展)TTL,默认配置为 400 天。

自定义工作区级别保留前缀

如果您使用工作区级别扩展保留,LangSmith 会将 Blob 数据写入格式为 ttl_XXd/ 的前缀,其中 XX 是为该工作区配置的天数。例如,如果一个工作区配置了 90 天的扩展保留,则该工作区的 Blob 数据将写入 ttl_90d/ 前缀。 您必须为跨工作区配置的每个自定义保留期限创建一个生命周期规则。常见示例:
  • ttl_90d/ — 90 天保留
  • ttl_180d/ — 180 天保留
  • ttl_365d/ — 365 天保留
如果缺少某个已配置保留期限的生命周期规则,则该前缀下的 Blob 数据将永远不会被自动删除。每当您配置新的工作区保留期限时,请确保添加匹配的生命周期规则。
例如,如果您配置了 90 天和 180 天扩展保留的工作区,则需要在默认的 ttl_s 和 ttl_l 规则之外添加以下生命周期规则:
如果您已在 LangSmith 配置中自定义了 TTL,则需要调整 Blob 存储配置中的 TTL 以匹配。

Amazon S3 生命周期规则

如果使用 S3 作为您的 Blob 存储,您需要设置一个匹配上述前缀的过滤器生命周期配置。您可以在亚马逊文档中找到相关信息。例如,如果您使用 Terraform 来管理您的 S3 桶,您需要这样设置: