主题
重要提示 混合部署选项需要 企业版 计划。
混合 模式允许您在自有云中运行 数据平面——您的 Agent Server 部署和代理工作负载——同时由 LangChain 托管和管理 控制平面(LangSmith UI 和编排服务)。这种设置为您提供了在自有运行时环境中进行自托管的灵活性,同时又能享受托管 LangSmith 实例的便利性。
以下步骤描述了如何将您自托管的数据平面连接到托管的 LangSmith 控制平面。
Kubernetes
先决条件
- 在您的集群上安装
KEDA。
bash
helm repo add kedacore https://kedacore.github.io/charts
helm install keda kedacore/keda --namespace keda --create-namespaceKEDA 用于根据队列大小自动扩缩容部署系统。
- 在您的集群上安装有效的
Ingress控制器。有关为部署配置入口的更多信息,请参阅 为安装创建入口。我们强烈建议在生产设置中使用现代的 Gateway API。 - 如果您计划让监听器(listener)监视多个命名空间,则必须使用 Gateway API 或 Istio Gateway,而不是 标准入口 资源。标准入口资源只能将流量路由到同一命名空间中的服务,而 Gateway 或 Istio Gateway 可以将流量路由到跨多个命名空间的服务。
- 您的集群中有足够的空间用于多个部署。建议使用
Cluster-Autoscaler来自动配置新节点。 - 您需要允许出口流量访问两个控制平面 URL。监听器会轮询这些端点以获取部署信息:
设置
- 向我们提供您的 LangSmith 组织 ID。您的 LangSmith 组织将被配置为在您的云中部署数据平面。
- 从 LangSmith UI 创建一个监听器。
Listener数据模型是为实际的 "监听器" 应用程序 配置的。- 在左侧导航栏中,选择
Deployments>Listeners。 - 在页面右上角,选择
+ Create Listener。 - 为监听器输入一个唯一的
Compute ID。Compute ID是一个用户定义的标识符,在当前 LangSmith 工作空间的所有监听器中应该是唯一的。当最终用户创建新部署时,会显示Compute ID。请确保Compute ID能为最终用户提供关于其 Agent Server 部署将部署到何处的上下文信息。例如,Compute ID可以设置为k8s-cluster-name-dev-01。在这个例子中,Kubernetes 集群的名称是k8s-cluster-name,dev表示该集群专用于 "开发" 工作负载,01是一个数字后缀,用于减少命名冲突。 - 输入一个或多个 Kubernetes 命名空间。稍后,"监听器" 应用程序将被配置为部署到这些命名空间中的每一个。
- 在页面右上角,选择
Submit。 - 监听器创建后,复制监听器 ID。稍后在 Kubernetes 集群中安装实际的 "监听器" 应用程序时(步骤 5)会用到它。
- 在左侧导航栏中,选择
重要提示 从 LangSmith UI 创建监听器并不会在 Kubernetes 集群中安装 "监听器" 应用程序。
- 提供了一个 Helm chart 用于在您的 Kubernetes 集群中安装必要的组件。
langgraph-dataplane-listener:这是一个服务,用于监听 LangChain 的 控制平面 以获取部署变更,并创建/更新下游的 CRD。这就是 "监听器" 应用程序。LangGraphPlatform CRD:用于 LangSmith 部署的 CRD。它包含管理 LangSmith 部署实例的规范。langgraph-dataplane-operator:此 Operator 处理您的 LangSmith CRD 的变更。langgraph-dataplane-redis:一个 Redis 实例,由langgraph-dataplane-listener用于管理各种任务(主要是创建和删除部署)。
- 配置您的
langgraph-dataplane-values.yaml文件。
bash
config:
langsmithApiKey: "" # 您工作空间的 API 密钥
langsmithWorkspaceId: "" # 工作空间 ID
hostBackendUrl: "https://api.host.langchain.com" # 仅在 EU 区域时覆盖此值
smithBackendUrl: "https://api.smith.langchain.com" # 仅在 EU 区域时覆盖此值
langgraphListenerId: "" # 来自步骤 2f 的监听器 ID
watchNamespaces: "" # 监听器和 Operator 将部署到的 Kubernetes 命名空间列表,以逗号分隔
enableLGPDeploymentHealthCheck: true # 启用/禁用部署的健康检查步骤
ingress:
hostname: "" # 指定一个将为所有部署配置的主机名
operator:
enabled: true
createCRDs: true # 如果 CRD 已安装在当前 Kubernetes 集群中,请将此设置为 `false`- `config.langsmithApiKey`:`langgraph-listener` 部署使用 `langsmithApiKey` 与 LangChain 的 LangGraph 控制平面 API 进行身份验证。
- `config.langsmithWorkspaceId`:`langgraph-listener` 部署与 LangSmith 工作空间中的 Agent Server 部署相关联。换句话说,`langgraph-listener` 部署只能管理指定 LangSmith 工作空间 ID 中的 Agent Server 部署。
- `config.langgraphListenerId`:除了与 LangSmith 工作空间关联外,`langgraph-listener` 部署还与一个监听器关联。当创建新的 Agent Server 部署时,它会自动与一个 `langgraphListenerId` 关联。指定 `langgraphListenerId` 可确保 `langgraph-listener` 部署只能管理与 `langgraphListenerId` 关联的 Agent Server 部署。
- `config.watchNamespaces`:`langgraph-listener` 部署将部署到的 Kubernetes 命名空间列表,以逗号分隔。此列表应与步骤 2d 中指定的命名空间列表匹配。
- `config.enableLGPDeploymentHealthCheck`:要禁用 Agent Server 健康检查,请将此设置为 `false`。
- `ingress.hostname`:作为部署工作流的一部分,`langgraph-listener` 部署会尝试调用 Agent Server 健康检查端点 (`GET /ok`) 以验证应用程序是否已正确启动。典型的设置涉及为 Agent Server 部署创建一个共享的 DNS 记录或域。这不是由 LangSmith 管理的。创建后,将 `ingress.hostname` 设置为该域,该域将用于完成健康检查。
- `operator.createCRDs`:如果 Kubernetes 集群已安装 `LangGraphPlatform CRD`,请将此值设置为 `false`。如果 CRD 已安装,安装过程中会出现错误。如果在同一 Kubernetes 集群上部署了多个监听器,则可能会出现这种情况。
- 部署
langgraph-dataplaneHelm chart。
bash
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- 如果成功,您将在您的命名空间中看到三个服务启动。
bash
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 选项以指定不同的命名空间。
在同一集群中安装多个数据平面时,遵循以下规则非常重要:
config.watchNamespaces列表绝不能与其他安装的config.watchNamespaces列表相交。例如,如果安装 A 监视命名空间foo,bar,则安装 B 不能监视foo或bar。多个 Operator 或监听器监视同一命名空间将导致意外行为。这意味着多个 LangSmith 工作空间不能部署到同一命名空间!请查看 集群组织 部分以更好地理解这一点。- 必须使用 Gateway API 或 Istio Gateway。依赖 标准入口 资源可能会导致与同一集群中其他数据平面创建的 Ingress 对象发生冲突。由于这些情况下的行为取决于特定的入口控制器,因此可能导致不可预测或不良的结果。
后续步骤
一旦您的基础设施设置完成,就可以开始部署应用程序了。有关构建和部署应用程序的说明,请参阅 部署选项卡 中的部署指南。