以编程方式使用文档

本页面介绍如何在 **LangSmith** (可观测性、追踪和评估)中设置。您将使用 Helm 来安装 LangSmith 及其依赖项。

完成本页面后,您将拥有:

  • LangSmith UI 和 API:用于 可观测性、追踪和 评估.
  • 后端服务:(队列、playground、ACE)。
  • 数据存储:(PostgreSQL、Redis、ClickHouse、可选的 blob 存储)。

对于 代理部署:要添加部署功能,请先完成本指南,然后按照 启用 LangSmith 部署、Fleet、Insights 和 Chat.

LangChain 已成功在以下 Kubernetes 发行版上测试了 LangSmith:

  • - Google Kubernetes Engine (GKE)
  • - Amazon Elastic Kubernetes Service (EKS):如需架构模式和最佳实践,请参阅 在 AWS 上自托管.
  • - Azure Kubernetes Service (AKS):如需架构模式和最佳实践,请参阅 在 AKS 上自托管.
  • - OpenShift (4.14+)
  • - Minikube 和 Kind(用于开发目的)

前提条件

Ensure you have the following tools/items ready. Some items are marked optional:

  1. LangSmith 许可证密钥
  1. 您可以从您的 LangChain 代表处获取此密钥。 联系我们的销售团队 了解更多详情。
  1. Api Key Salt
  1. 这是您可以生成的密钥。它应该是一个随机的字符字符串。
  2. 您可以使用以下命令生成它:
   openssl rand -base64 32
   
  1. JWT Secret(可选,但用于基本身份验证)
  1. 这是您可以生成的密钥。它应该是一个随机的字符字符串。
  2. 您可以使用以下命令生成此内容:
   openssl rand -base64 32
   

数据库

LangSmith 使用 PostgreSQL 数据库、Redis 缓存和 ClickHouse 数据库来存储跟踪记录。默认情况下,这些服务安装在您的 Kubernetes 集群内部。但是,我们强烈建议使用外部数据库。对于 PostgreSQL 和 Redis,最佳选择是您云提供商的托管服务。

更多信息,请参阅以下外部服务设置指南:

有关每个数据存储的最低支持版本,请参阅 自托管依赖项的最低版本.

Kubernetes 集群要求

  1. 您需要一个可访问的工作 Kubernetes 集群 kubectl您的集群应满足以下最低要求:
  1. 推荐:至少 16 个 vCPU、64GB 可用内存
  • * You may need to tune resource requests/limits for all of our different services based off of organization size/usage. You can find our recommendations in the 自托管扩缩容指南.
  • * We recommend using a cluster autoscaler to handle scaling up/down of nodes based on resource usage.
  • * 我们建议设置 metrics 服务器,以便开启自动扩缩容功能。
  • * 如果您在集群内运行 ClickHouse,则必须有一个至少具有 4 个 vCPU 和 16GB 内存的节点 **可分配** 因为 ClickHouse 默认会请求此数量的资源。
  1. 集群上有有效的动态 PV provisioner 或可用的 PV(仅在集群内运行数据库时需要)
  • * 为了启用持久化,我们将尝试为集群内运行的任何数据库配置卷。
  • * 如果在集群中使用 PV,我们强烈建议在生产环境中设置备份。
  • * **We strongly encourage using a storage class backed by SSDs for better performance. We recommend 7000 IOPS and 1000 MiB/s throughput.**
  • * 在 EKS 上,您可能需要确保已安装 ebs-csi-driver 并为动态配置进行了配置。请参阅 EBS CSI Driver 文档 获取更多信息。

您可以通过运行以下命令进行验证:

      kubectl get storageclass
      

输出应至少显示一个具有支持动态配置的 provisioner 的存储类。例如:

      NAME            PROVISIONER                 RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
      gp2 (default)   ebs.csi.eks.amazonaws.com   Delete          WaitForFirstConsumer   true                   161d
      

请参阅 Kubernetes 文档 了解更多关于存储类的信息。

  1. Helm
  1. 要安装 helm 请参阅 Helm 文档
  1. https://beacon.langchain.com 的出站流量(如果不是离线模式运行)
  1. LangSmith 需要访问 https://beacon.langchain.com 进行许可证验证和使用情况报告。这是 LangSmith 正常运行所必需的。您可以在 出站流量 section.

配置您的 Helm 图表:

  1. 创建一个名为 langsmith_config.yaml 的新文件,其中包含上一步中的配置选项。
  2. 您可以在 langsmith_config.yaml 文件。您可以在以下位置找到有关特定配置选项的更多信息 配置 section.
  3. 如果您是 Kubernetes 或 Helm 的新手,我们建议从 Helm Chart 仓库中 examples 目录下的示例配置开始: LangSmith helm chart 示例.
  4. 您可以在以下位置的 Helm Chart 仓库中查看完整的配置选项列表 values.yaml 文件 LangSmith Helm Chart
  1. 至少,您需要设置以下配置选项(使用基本身份验证):

   config:
     langsmithLicenseKey: "<your license key>"
     apiKeySalt: "<your api key salt>"
     authType: mixed
     initialOrgAdminEmail: "admin@langchain.dev" # Change this to your admin email address
     basicAuth:
       enabled: true
       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

输出应该类似于:

        langsmith-eks-2vauP7wf 21:07:46 No resources found in default namespace.
      

  1. 确保您已添加 LangChain Helm 仓库。(如果您使用本地 charts 则跳过此步骤)
   helm repo add langchain https://langchain-ai.github.io/helm
   
  1. 查找 chart 的最新版本。您可以在以下位置找到可用版本 Helm Chart 仓库.
  • * 我们通常建议使用最新版本。
  • * 您也可以运行 helm search repo langchain/langsmith --versions 来查看可用版本。输出将类似于:
    langchain/langsmith              	0.13.0      	0.13.1    	Helm chart to deploy the langsmith application ...
    langchain/langsmith              	0.12.34      	0.12.73    	Helm chart to deploy the langsmith application ...
    langchain/langsmith              	0.12.33      	0.12.72    	Helm chart to deploy the langsmith application ...
    langchain/langsmith              	0.12.32      	0.12.70    	Helm chart to deploy the langsmith application ...
    langchain/langsmith              	0.12.31      	0.12.69    	Helm chart to deploy the langsmith application ...
   
  1. 运行 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 资源并运行多个作业来初始化数据库和其他服务。

  1. 运行 kubectl get pods 现在输出应该类似于(请注意,确切的 pod 名称可能因您使用的版本和配置而异):
    langsmith-ace-backend-98fbd468c-x9gjl         1/1     Running   0
    langsmith-backend-84999bbcb7-dfhml            1/1     Running   0
    langsmith-clickhouse-0                        1/1     Running   0
    langsmith-frontend-79bdcbccc6-r7pt7           1/1     Running   0
    langsmith-ingest-queue-cbb67748-8rl8x         1/1     Running   0
    langsmith-platform-backend-586bd9d97c-2g5mv   1/1     Running   0
    langsmith-playground-859d44b46c-fjqjh         1/1     Running   0
    langsmith-postgres-0                          1/1     Running   0
    langsmith-queue-7bd6cb8b9b-bmvxm              1/1     Running   0
    langsmith-redis-0                             1/1     Running   0
   

验证您的部署:

  1. 运行 kubectl get services

输出应该类似于:

    NAME                         TYPE           CLUSTER-IP       EXTERNAL-IP                                                                   PORT(S)                      AGE
    langsmith-ace-backend        ClusterIP      172.20.92.210    <none>                                                                        1987/TCP                     1m
    langsmith-backend            ClusterIP      172.20.156.146   <none>                                                                        1984/TCP                     1m
    langsmith-clickhouse         ClusterIP      172.20.250.160   <none>                                                                        8123/TCP,9000/TCP,9363/TCP   1m
    langsmith-frontend           LoadBalancer   172.20.18.173    <external-ip>                                                                 80:30879/TCP,443:31364/TCP   1m
    langsmith-platform-backend   ClusterIP      172.20.95.187    <none>                                                                        1986/TCP                     1m
    langsmith-playground         ClusterIP      172.20.142.121   <none>                                                                        1988/TCP                     1m
    langsmith-postgres           ClusterIP      172.20.226.128   <none>                                                                        5432/TCP                     1m
    langsmith-redis              ClusterIP      172.20.57.248    <none>                                                                        6379/TCP                     1m
   
  1. 获取外部 IP langsmith-frontend service:
   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"}]
   

  1. 访问 langsmith-frontend 服务的外部 IP

The LangSmith UI should be visible/operational

!LangSmith UI

使用 LangSmith

现在 LangSmith 正在运行,您可以开始使用它来追踪您的代码。您可以在 自托管使用指南.

您的 LangSmith 实例现在正在运行,但可能尚未完全设置。

如果您使用了基本配置之一,将为您创建一个默认的管理员用户账户。您可以使用在 langsmith_config.yaml file.

下一步,强烈建议您与基础设施管理员合作:

  • * 为您的 LangSmith 实例设置 DNS 以便于访问
  • * 配置 SSL 以确保传输到 LangSmith 的追踪数据的加密
  • * 使用 单点登录 配置 LangSmith 来保护您的实例安全
  • * 将 LangSmith 连接到外部 Postgres 和 Redis 实例
  • * 设置 Blob 存储 来存储大文件

查看我们的 配置部分 获取有关如何配置这些选项的更多信息。

启用 LangSmith 部署、Fleet、洞察和聊天

要超越可观测性、追踪和评估,您可以在自托管实例上启用以下功能:

  • - **LangSmith 部署**:通过 LangSmith UI 部署、扩展和管理代理。
  • - **Fleet**:无需编写代码即可创建和管理 AI 代理。
  • - **洞察**:获取对追踪和应用程序数据的 AI 支持分析。
  • - **聊天**:跨 LangSmith 的工作区内聊天体验,帮助您分析追踪、线程、提示和实验结果。

按照 启用 LangSmith 部署、Fleet、洞察和聊天 指南来设置这些组件。