Skip to main content
混合部署选项需要 Enterprise 计划。获取演示 以了解更多信息。
混合 模型允许您在自己的云中运行数据平面(您的代理服务器部署和代理工作负载),而 LangChain 托管和管理控制平面(LangSmith UI 和编排)。此设置为您提供了自托管运行时环境的灵活性,同时兼具托管 LangSmith 实例的便利性。 以下步骤描述了如何将您的自托管数据平面连接到托管的 LangSmith 控制平面。

Kubernetes

先决条件

  1. 您的集群上已安装 KEDA
      helm repo add kedacore https://kedacore.github.io/charts
      helm install keda kedacore/keda --namespace keda --create-namespace
    
    KEDA 用于根据队列大小自动扩展部署系统。
  2. 您的集群上已安装有效的 Ingress 控制器。有关为您的部署配置入口的更多信息,请参阅为安装创建入口。我们强烈建议在生产设置中使用现代的 Gateway API
  3. 如果您计划让监听器监视多个命名空间,您必须使用 Gateway APIIstio Gateway,而不是标准入口资源。标准入口资源只能将流量路由到同一命名空间中的服务,而 Gateway 或 Istio Gateway 可以将流量路由到跨多个命名空间的服务。
  4. 您的集群中有足够的空间用于多个部署。建议使用 Cluster-Autoscaler 来自动配置新节点。
  5. 您需要启用到两个控制平面 URL 的出站流量。监听器会轮询这些端点以获取部署信息(请使用与您的 LangSmith 区域匹配的端点对——EU (GCP): eu.api.host / eu.api.smith;US (AWS): aws.api.host / aws.api.smith):

设置

  1. 向我们提供您的 LangSmith 组织 ID。您的 LangSmith 组织将被配置为在您的云中部署数据平面。
  2. 从 LangSmith UI 创建一个监听器。Listener 数据模型是为实际的”监听器”应用程序配置的。
    1. 在左侧导航中,选择 Deployments > Listeners
    2. 在页面右上角,选择 + Create Listener
    3. 为监听器输入一个唯一的 Compute IDCompute ID 是一个用户定义的标识符,应在当前 LangSmith 工作区的所有监听器中唯一。当最终用户创建新部署时,Compute ID 会显示给他们。确保 Compute ID 能为最终用户提供有关其代理服务器部署将部署到何处的上下文信息。例如,Compute ID 可以设置为 k8s-cluster-name-dev-01。在此示例中,Kubernetes 集群的名称是 k8s-cluster-namedev 表示该集群保留用于“开发”工作负载,01 是一个数字后缀,用于减少命名冲突。
    4. 输入一个或多个 Kubernetes 命名空间。稍后,“监听器”应用程序将被配置为部署到这些命名空间中的每一个。
    5. 在页面右上角,选择 Submit
    6. 监听器创建后,复制监听器 ID。您将在稍后在 Kubernetes 集群中安装实际的“监听器”应用程序时使用它(步骤 5)。
    重要提示 从 LangSmith UI 创建监听器并不会在 Kubernetes 集群中安装“监听器”应用程序。
  3. 提供了一个 Helm chart,用于在您的 Kubernetes 集群中安装必要的组件。
    • langgraph-dataplane-listener:这是一个服务,它监听 LangChain 的控制平面以获取部署的更改,并创建/更新下游的 CRD。这就是”监听器”应用程序
    • LangGraphPlatform CRD:用于 LangSmith 部署的 CRD。它包含管理 LangSmith 部署实例的规范。
    • langgraph-dataplane-operator:此操作符处理对您的 LangSmith CRD 的更改。
    • langgraph-dataplane-redislanggraph-dataplane-listener 使用一个 Redis 实例来管理各种任务(主要是创建和删除部署)。
  4. 配置您的 langgraph-dataplane-values.yaml 文件。
      config:
        langsmithApiKey: "" # 您工作区的 API 密钥
        langsmithWorkspaceId: "" # 工作区 ID
        hostBackendUrl: "https://api.host.langchain.com" # 为 EU (GCP) (`eu.api.host...`) 或 US (AWS) (`aws.api.host...`) 覆盖
        smithBackendUrl: "https://api.smith.langchain.com" # 为 EU (GCP) (`eu.api.smith...`) 或 US (AWS) (`aws.api.smith...`) 覆盖
        langgraphListenerId: "" # 来自步骤 2f 的监听器 ID
        watchNamespaces: "" # 逗号分隔的 Kubernetes 命名空间列表,监听器和操作符将部署到这些命名空间
        enableLGPDeploymentHealthCheck: true # 启用/禁用部署的健康检查步骤
    
      ingress:
        hostname: "" # 指定一个主机名,该主机名将为所有部署配置
    
      operator:
        enabled: true
        createCRDs: true # 如果 CRD 之前已在当前 Kubernetes 集群中安装,请将此项设置为 `false`
    
    • config.langsmithApiKeylanggraph-listener 部署使用 langsmithApiKey 向 LangChain 的 LangGraph 控制平面 API 进行身份验证。
    • config.langsmithWorkspaceIdlanggraph-listener 部署与 LangSmith 工作区中的代理服务器部署相关联。换句话说,langgraph-listener 部署只能管理指定 LangSmith 工作区 ID 中的代理服务器部署。
    • config.langgraphListenerId:除了与 LangSmith 工作区关联外,langgraph-listener 部署还与一个监听器关联。当创建新的代理服务器部署时,它会自动与一个 langgraphListenerId 关联。指定 langgraphListenerId 可确保 langgraph-listener 部署只能管理与 langgraphListenerId 关联的代理服务器部署。
    • config.watchNamespaceslanggraph-listener 部署将部署到的 Kubernetes 命名空间的逗号分隔列表。此列表应与步骤 2d 中指定的命名空间列表匹配。
    • config.enableLGPDeploymentHealthCheck:要禁用代理服务器健康检查,请将此项设置为 false
    • ingress.hostname:作为部署工作流的一部分,langgraph-listener 部署会尝试调用代理服务器健康检查端点(GET /ok)以验证应用程序是否已正确启动。典型的设置涉及为代理服务器部署创建共享的 DNS 记录或域名。这不由 LangSmith 管理。创建后,将 ingress.hostname 设置为该域名,该域名将用于完成健康检查。
    • operator.createCRDs:如果 Kubernetes 集群中已安装 LangGraphPlatform CRD,请将此值设置为 false。在安装过程中,如果 CRD 已安装,将会发生错误。如果多个监听器部署在同一 Kubernetes 集群上,可能会发生这种情况。
  5. 部署 langgraph-dataplane Helm chart。
      helm repo add langchain https://langchain-ai.github.io/helm/
      helm repo update
      helm upgrade -i langgraph-dataplane langchain/langgraph-dataplane --values langgraph-dataplane-values.yaml --wait --debug
    
  6. 如果成功,您将在命名空间中看到三个服务启动。
      NAME                                            READY   STATUS              RESTARTS   AGE
      langgraph-dataplane-listener-6dd4749445-zjmr4   0/1     ContainerCreating   0          26s
      langgraph-dataplane-operator-6b88879f9b-t76gk   1/1     Running             0          26s
      langgraph-dataplane-redis-0                     1/1     Running             0          25s
    
    您的混合基础设施现在已准备好创建部署。

在同一集群中配置其他数据平面

要在同一集群的不同命名空间中创建数据平面,请重复上述步骤,并向 helm upgrade 传递 -n 选项以指定不同的命名空间。 在同一集群中安装多个数据平面时,务必遵守以下规则:
  1. config.watchNamespaces 列表绝不应与其他安装的 config.watchNamespaces 相交。例如,如果安装 A 正在监视命名空间 foo,bar,则安装 B 不能监视 foobar。多个操作符或监听器监视同一命名空间将导致意外行为。这意味着多个 LangSmith 工作区不能部署到同一命名空间!请查看集群组织部分以更好地理解这一点。
  2. 必须使用 Gateway APIIstio Gateway。依赖标准入口资源可能会与同一集群中其他数据平面创建的 Ingress 对象发生冲突。因为这些情况下的行为取决于具体的入口控制器,这可能导致不可预测或不期望的结果。

后续步骤

基础设施设置完成后,您就可以部署应用程序了。有关构建和部署应用程序的说明,请参阅部署选项卡中的部署指南。