跳到主要内容
自托管 LangSmith 是企业计划的附加功能,专为我们规模最大、最注重安全性的客户设计。有关更多详细信息,请参阅我们的定价页面,如果您想获得试用 LangSmith 的许可证密钥,请联系我们的销售团队
本页介绍如何在 Kubernetes 集群中设置 LangSmith(可观测性、追踪和评估)。您将使用 Helm 安装 LangSmith 及其依赖项。 完成本页后,您将拥有:
  • LangSmith UI 和 API:用于可观测性、追踪和评估
  • 后端服务:(队列、游乐场、ACE)。
  • 数据存储:(PostgreSQL、Redis、ClickHouse,可选 blob 存储)。
用于代理部署:要添加部署功能,请先完成本指南,然后按照启用 LangSmith 部署 LangChain 已成功在以下 Kubernetes 发行版上测试 LangSmith:
  • Google Kubernetes Engine (GKE)
  • Amazon Elastic Kubernetes Service (EKS)
  • Azure Kubernetes Service (AKS)
  • OpenShift (4.14+)
  • Minikube 和 Kind(用于开发目的)
LangChain 有几个 Terraform 模块可以帮助 LangSmith 的资源调配。您可以在 LangChain 公共 Terraform 仓库中找到这些模块。支持的云提供商包括:您可以点击上方链接查看每个模块的文档。这些模块旨在帮助您快速设置 LangSmith 所需的基础设施,包括 Kubernetes 集群、存储和网络。

先决条件

请确保您已准备好以下工具/项目。有些项目标记为可选。
  1. LangSmith 许可证密钥
    1. 您可以从您的 LangChain 代表处获取。请联系我们的销售团队以获取更多信息。
  2. API 密钥盐
    1. 这是一个您可以生成的密钥。它应该是一个随机的字符串。
    2. 您可以使用以下命令生成此密钥
    openssl rand -base64 32
    
  3. JWT 密钥(可选,但用于基本身份验证)
    1. 这是一个您可以生成的密钥。它应该是一个随机的字符串。
    2. 您可以使用以下命令生成此密钥
    openssl rand -base64 32
    

数据库

LangSmith 使用 PostgreSQL 数据库、Redis 缓存和 ClickHouse 数据库来存储跟踪数据。默认情况下,这些服务安装在您的 Kubernetes 集群中。但是,我们强烈建议使用外部数据库。对于 PostgreSQL 和 Redis,最佳选择是您的云提供商的托管服务。 有关更多信息,请参阅以下外部服务设置指南:

Kubernetes 集群要求

  1. 您将需要一个可以通过 kubectl 访问的正常工作的 Kubernetes 集群。您的集群应具有以下最低要求:
    1. 推荐:至少 16 个 vCPU,64GB 可用内存
      • 您可能需要根据组织规模/使用情况调整所有不同服务的资源请求/限制。我们的建议可以在此处找到。
      • 我们建议使用集群自动扩缩器来根据资源使用情况处理节点的扩缩。
      • 我们建议设置指标服务器,以便可以开启自动扩缩。
      • 如果您在集群内运行 Clickhouse,则必须有一个至少具有 4 个 vCPU 和 16GB 内存(可分配)的节点,因为 ClickHouse 默认将请求此量的资源。
    2. 集群上可用的有效动态 PV 供应程序或 PV(仅当您在集群内运行数据库时才需要)
      • 为了实现持久性,我们将尝试为任何在集群内运行的数据库配置卷。
      • 如果在集群中使用 PV,我们强烈建议在生产环境中设置备份。
      • 我们强烈建议使用由 SSD 提供支持的存储类,以获得更好的性能。我们建议 7000 IOPS 和 1000 MiB/s 吞吐量。
      • 在 EKS 上,您可能需要确保已安装并配置 ebs-csi-driver 以进行动态预配。有关更多信息,请参阅 EBS CSI 驱动程序文档
      您可以通过运行以下命令进行验证
      kubectl get storageclass
      
      输出应显示至少一个存储类,其供应程序支持动态预配。例如:
      NAME            PROVISIONER                 RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
      gp2 (default)   ebs.csi.eks.amazonaws.com   Delete          WaitForFirstConsumer   true                   161d
      
      我们强烈建议使用支持卷扩展的存储类。这是因为跟踪数据可能需要大量磁盘空间,并且您的卷可能需要随着时间推移进行大小调整。
      有关存储类的更多信息,请参阅Kubernetes 文档
  2. Helm
    1. 要安装 helm,请参阅 Helm 文档
  3. 出站到 https://beacon.langchain.com(如果未在离线模式下运行)
    1. LangSmith 需要出站到 https://beacon.langchain.com 进行许可证验证和使用情况报告。这是 LangSmith 正常运行所必需的。您可以在出站部分找到有关出站要求的更多信息。

配置您的 Helm Charts

  1. 创建一个名为 langsmith_config.yaml 的新文件,其中包含上一步中的配置选项。
    1. 您可以在 langsmith_config.yaml 文件中设置多个配置选项。有关特定配置选项的更多信息,请参阅配置部分。
    2. 如果您是 Kubernetes 或 Helm 的新手,我们建议您从 Helm Chart 存储库的 examples 目录中的示例配置之一开始:LangSmith Helm Chart 示例
    3. 您可以在 Helm Chart 存储库的 values.yaml 文件中查看完整的配置选项列表:LangSmith Helm Chart
  2. 至少,您需要设置以下配置选项(使用基本身份验证)
    config:
      langsmithLicenseKey: "<your license key>"
      apiKeySalt: "<your api key salt>"
      authType: mixed
      basicAuth:
        enabled: true
        initialOrgAdminEmail: "admin@langchain.dev" # Change this to your admin email address
        initialOrgAdminPassword: "secure-password" # Must be at least 12 characters long and have at least one lowercase, uppercase, and symbol
        jwtSecret: <your jwt salt> # A random string of characters used to sign JWT tokens for basic auth.
    
您还需要为正在使用的任何外部数据库指定连接详细信息。

部署到 Kubernetes

  1. 验证您是否可以连接到 Kubernetes 集群(注意:我们强烈建议安装到空命名空间中)
    1. 运行 kubectl get pods 输出应如下所示:
      kubectl get pods langsmith-eks-2vauP7wf 21:07:46No resources found in default namespace.
      
    如果您使用的命名空间不是默认命名空间,则需要在 helmkubectl 命令中使用 -n <namespace> 标志指定命名空间。
  2. 确保已添加 LangChain Helm 仓库。(如果您正在使用本地 Chart,请跳过此步骤)
    helm repo add langchain https://github.langchain.ac.cn/helm/"langchain" has been added to your repositories
    
  3. 查找 Chart 的最新版本。您可以在 Helm Chart 仓库中找到可用版本。
    • 我们通常建议使用最新版本。
    • 您也可以运行 helm search repo langchain/langsmith --versions 查看可用版本。输出将如下所示:
    langchain/langsmith     0.10.14         0.10.32         Helm chart to deploy the langsmith application ...
    langchain/langsmith     0.10.13         0.10.32         Helm chart to deploy the langsmith application ...
    langchain/langsmith     0.10.12         0.10.32         Helm chart to deploy the langsmith application ...
    langchain/langsmith     0.10.11         0.10.29         Helm chart to deploy the langsmith application ...
    langchain/langsmith     0.10.10         0.10.29         Helm chart to deploy the langsmith application ...
    
  4. 运行 helm upgrade -i langsmith langchain/langsmith --values langsmith_config.yaml --version <version> -n <namespace> --wait --debug
    • <namespace> 替换为您要部署 LangSmith 的命名空间。
    • <version> 替换为上一步中要安装的 LangSmith 版本。大多数用户应安装可用的最新版本。
    一旦 helm install 命令成功运行并完成,您应该会看到类似以下的输出:
    NAME: langsmith
    LAST DEPLOYED: Fri Sep 17 21:08:47 2021
    NAMESPACE: langsmith
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
    这可能需要几分钟才能完成,因为它将创建多个 Kubernetes 资源并运行多个作业以初始化数据库和其他服务。
  5. 运行 kubectl get pods 输出现在应该看起来像这样(注意,确切的 pod 名称可能因您使用的版本和配置而异)
    langsmith-backend-6ff46c99c4-wz22d       1/1     Running   0          3h2m
    langsmith-frontend-6bbb94c5df-8xrlr      1/1     Running   0          3h2m
    langsmith-hub-backend-5cc68c888c-vppjj   1/1     Running   0          3h2m
    langsmith-playground-6d95fd8dc6-x2d9b    1/1     Running   0          3h2m
    langsmith-postgres-0                     1/1     Running   0          9h
    langsmith-queue-5898b9d566-tv6q8         1/1     Running   0          3h2m
    langsmith-redis-0                        1/1     Running   0          9h
    

验证您的部署

  1. 运行 kubectl get services 输出应如下所示:
    NAME                    TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)        AGE
    langsmith-backend       ClusterIP      172.20.140.77    <none>                                                                    1984/TCP       35h
    langsmith-frontend      LoadBalancer   172.20.253.251   <external ip>                                                             80:31591/TCP   35h
    langsmith-hub-backend   ClusterIP      172.20.112.234   <none>                                                                    1985/TCP       35h
    langsmith-playground    ClusterIP      172.20.153.194   <none>                                                                    3001/TCP       9h
    langsmith-postgres      ClusterIP      172.20.244.82    <none>                                                                    5432/TCP       35h
    langsmith-redis         ClusterIP      172.20.81.217    <none>                                                                    6379/TCP       35h
    
  2. Curl langsmith-frontend 服务的外部 IP
    curl <external ip>/api/tenants
    
    预期输出
    [{"id":"00000000-0000-0000-0000-000000000000","has_waitlist_access":true,"created_at":"2023-09-13T18:25:10.488407","display_name":"Personal","config":{"is_personal":true,"max_identities":1},"tenant_handle":"default"}]
    
  3. 在浏览器中访问 langsmith-frontend 服务的外部 IP LangSmith UI 应该可见/可操作

使用 LangSmith

LangSmith 现在已运行,您可以开始使用它来追踪您的代码。您可以在自托管使用指南中找到有关如何使用自托管 LangSmith 的更多信息。 您的 LangSmith 实例现在正在运行,但可能尚未完全设置。 如果您使用了其中一个基本配置,则会为您创建一个默认的管理员用户帐户。您可以使用在 langsmith_config.yaml 文件中指定的电子邮件地址和密码登录。 下一步,强烈建议您与您的基础设施管理员合作,以:
  • 为您的 LangSmith 实例设置 DNS 以便更轻松地访问
  • 配置 SSL 以确保提交给 LangSmith 的跟踪数据的传输加密
  • 使用单点登录配置 LangSmith 以保护您的 LangSmith 实例
  • 将 LangSmith 连接到外部 Postgres 和 Redis 实例
  • 设置Blob 存储以存储大文件
查阅我们的配置部分,了解如何配置这些选项的更多信息。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.