主题
常见问题
可观测性
我无法在 UI 中创建 API 密钥或管理用户,怎么回事?
- 你可能是在没有设置 SSO 的情况下部署了 LangSmith。LangSmith 需要 SSO 才能管理用户和 API 密钥。你可以在配置一节找到关于设置 SSO 的更多信息。
负载均衡/ingress 如何工作?
- 你需要把前端容器/服务暴露给你的应用/用户。它会处理到所有下游服务的路由。
- 你需要在 ingress 层终止 SSL。我们推荐使用像 AWS ALB、GCP Load Balancer 或 Nginx 这样的托管服务。
我们如何对应用进行身份验证?
- 目前,我们的自托管解决方案支持以 OAuth2.0 和 OIDC 作为身份验证方案的 SSO。注意,我们提供一个无需身份验证的方案,但强烈建议在进入生产前设置 oauth。
你可以在配置一节找到关于设置 SSO 的更多信息。
我能使用外部存储服务吗?
- 你可以配置 LangSmith 使用所有存储服务的外部版本。在生产环境中,我们强烈建议使用外部存储服务。查阅配置一节了解更多信息。
我的应用需要出口才能正常运作吗?
我们的部署只在少数几件事上需要出口(其中大多数可以驻留在你的 VPC 内):
获取镜像(如果你镜像你的镜像,这可能不需要)
与任何 LLM 端点通信
与你可能配置的任何外部存储服务通信
获取 OAuth 信息
订阅指标与运维元数据(如果不在离线模式下运行)
- 需要到
https://beacon.langchain.com的出口 - 更多信息参阅出口
- 需要到
你的 VPC 可以设置规则来限制任何其他访问。注意:我们要求允许 X-Organization-Id 和 X-Tenant-Id 标头透传到后端服务。它们用于确定请求是针对哪个组织和工作区(以前称为"tenant")。
应用的资源需求?
- 在 kubernetes 中,我们推荐一个最小 helm 配置,你可以在中等规模示例中看到。对于 docker,我们推荐至少 16GB 内存和 4 个 CPU。
- 对于 Postgres,我们推荐至少 8GB 内存和 2 个 CPU。
- 对于 Redis,我们推荐 4GB 内存和 2 个 CPU。
- 对于 Clickhouse,我们推荐 32GB 内存和 8 个 CPU。
SAML SSO 常见问题
我如何更改一个 SAML SSO 用户的邮箱地址?
一些身份提供者在邮箱变更时保留原来的 User ID,而另一些则不然,因此我们建议你遵循以下步骤,以避免在 LangSmith 中出现重复用户:
- 从组织中移除该用户(参阅管理用户)
- 在 IdP 中更改他们的邮箱地址
- 让他们通过 SAML SSO 重新登录 LangSmith - 这会以他们的新邮箱地址触发常规的即时 (JIT) 预配流程
对于有多个关联登录方式的用户,目前不支持通过 SCIM 或其他方式更改邮箱地址。会显示此错误消息:email update not supported with linked login methods。例如,如果一个用户先前通过邮箱/密码或 Google 社交登录,然后以同一邮箱地址通过 SSO 被添加,则不支持更改其邮箱地址。这同时适用于自托管和云。
我能更换身份提供者吗?
关于迁移的支持,请通过我们的门户 https://support.langchain.com 联系 LangChain 支持团队。
我如何修复"405 method not allowed"?
确保你使用正确的 ACS URL:https://auth.langchain.com/auth/v1/sso/saml/acs
SCIM 常见问题
我能不使用 SAML SSO 而使用 SCIM 吗?
- 云:不能,云部署中 SCIM 需要 SAML SSO
- 自托管:能,SCIM 适用于以 Client Secret 认证模式的 OAuth
如果我同时启用 JIT 预配和 SCIM 会怎样?
JIT 预配和 SCIM 可能彼此冲突。我们建议在启用 SCIM 之前禁用 JIT 预配,以确保持续一致的用户预配行为。
我如何更改用户的角色或工作区访问?
在你的 IdP 中更新用户的群组成员身份。这些更改会根据角色优先级规则同步到 LangSmith。
当用户被从所有群组移除时会怎样?
该用户会根据你 IdP 的撤除预配设置,从你的 LangSmith 组织中被撤除预配。
我能使用自定义群组名吗?
能。如果你的身份提供者支持把备用字段同步到 displayName 群组属性,你可以使用一个备用属性(例如 description)作为 LangSmith 中的 displayName,并保留对身份提供者群组名的完全自定义能力。否则,群组必须遵循群组命名约定一节中描述的具体命名约定,才能正确映射到 LangSmith 角色和工作区。
你还可以配置自定义分隔符(例如 -、_、&)而非默认的冒号(:),以适应对群组名字符有限制的身份提供者。
为什么我的 Okta 集成不工作?
参阅 Okta 的故障排除指南:https://help.okta.com/en-us/content/topics/users-groups-profiles/usgp-group-push-troubleshoot.htm。
支持降级吗?
不支持正式降级。LangSmith 升级可能包含数据库迁移和其他不向后兼容的更改。如果你需要回滚到一个先前版本,请通过支持门户联系技术支持以获取指导。
部署
我需要使用 LangChain 才能使用 LangGraph 吗?有什么区别?
不需要。LangGraph 是一个用于复杂 agent 系统的编排框架,比 LangChain agent 更底层、更可控。LangChain 提供一个与模型和其他组件交互的标准接口,适用于直接的链和检索流。
LangGraph 与其他 agent 框架有何不同?
其他 agent 框架能处理简单的、通用的任务,但在处理公司所需的定制复杂任务时力不从心。LangGraph 提供一个更具表达力的框架来处理公司独特的任务,而不把用户限制在单一的黑盒认知架构上。
LangGraph 会影响我应用的性能吗?
LangGraph 不会给你的代码增加任何开销,并且是专为流式工作流设计的。
LangGraph 是开源的吗?它免费吗?
是的。LangGraph 是一个 MIT 许可的开源库,可免费使用。
LangGraph 和 LangSmith 有何不同?
LangGraph 是一个有状态的编排框架,为 agent 工作流带来额外的控制。LangSmith 是一个用于部署和扩展 agent 应用的服务,带一个有主见的 API 用于构建 agent UX,外加一个集成的开发者 UI。
| 特性 | LangGraph(开源) | LangSmith |
|---|---|---|
| 描述 | 用于 agent 应用的有状态编排框架 | 用于部署 LangGraph 应用的可扩展基础设施 |
| SDK | Python 和 JavaScript | Python 和 JavaScript |
| HTTP API | 无 | 有 - 用于检索和更新状态或长期记忆、或创建一个可配置助手很有用 |
| 流式 | 基本 | 为逐 token 消息专门的模式 |
| 检查点器 | 社区贡献 | 开箱即用地支持 |
| 持久层 | 自管理 | 带高效存储的托管 Postgres |
| 部署 | 自管理 | • 云 • 免费自托管 • 企业(付费自托管) |
| 可扩展性 | 自管理 | 任务队列和服务的自动伸缩 |
| 容错 | 自管理 | 自动重试 |
| 并发控制 | 简单线程 | 支持双重输入 |
| 调度 | 无 | Cron 调度 |
| 监控 | 无 | 与 LangSmith 集成以实现可观测性 |
| IDE 集成 | Studio | Studio |
LangSmith 是开源的吗?
不是。LangSmith 是专有软件。
更多信息,参阅我们的 LangSmith 定价页。
LangGraph 能与不支持工具调用的 LLM 配合工作吗?
能!你可以把 LangGraph 与任何 LLM 一起使用。我们使用支持工具调用的 LLM 的主要原因是,这通常是让 LLM 决定该做什么的最便捷方式。如果你的 LLM 不支持工具调用,你仍然可以使用它——只需编写一点逻辑,把原始 LLM 字符串响应转换为一个关于该做什么的决定。
LangGraph 能与开源 LLM 配合工作吗?
能!LangGraph 对底层使用什么 LLM 完全无所谓。我们在大多数教程中使用闭源 LLM 的主要原因是它们无缝支持工具调用,而开源 LLM 往往不支持。但工具调用并非必需(参阅 LangGraph 能与不支持工具调用的 LLM 配合工作吗?),所以你完全可以与开源 LLM 一起使用 LangGraph。
我能不登录 LangSmith 而使用 Studio 吗?
能!你可以使用开发版 Agent Server在本地运行后端。 它会连接到作为 LangSmith 一部分托管的 Studio 前端。 如果你设置一个环境变量 LANGSMITH_TRACING=false,那么不会有追踪被发送到 LangSmith。
什么是部署运行(Deployment Run)?
一次部署运行是通过 LangSmith Deployment 部署的一个 LangGraph agent 的一次端到端调用。节点和子图不单独计费。对其他 LangGraph agent 的调用(通过 RemoteGraph 或 LangGraph SDK 或直接经 API)单独计费,计费给托管被调用 agent 的那个部署。一个用于人在回路的 interrupt 在恢复时会创建一次单独的部署运行。