LangSmith 支持从 monorepo 设置部署代理,其中您的代理代码可能依赖于位于存储库其他位置的共享包。本指南展示如何构建您的 monorepo 并配置您的 langgraph.json 文件以使用共享依赖。

存储库结构

有关完整的工作示例,请参阅:

LangGraph.json 配置

将 langgraph.json 文件放置在您的代理目录中(而非 monorepo 根目录)。确保文件遵循所需的结构:
Python 实现通过以下方式自动处理父目录中的包:
  • 检测以 "." 开头的相对路径。
  • 根据需要将父目录添加到 Docker 构建上下文中。
  • 支持真正的包(带有 pyproject.toml/setup.py)和简单的 Python 模块。
对于 JavaScript monorepo:
  • 共享的工作区依赖项由您的包管理器自动解析。
  • 您的 package.json 应使用工作区语法引用共享包。
代理目录中 package.json 的示例:

构建应用程序

运行 langgraph build:
Python 构建过程:
  1. 自动检测相对依赖路径。
  2. 将共享包复制到 Docker 构建上下文中。
  3. 按正确顺序安装所有依赖。
  4. 无需特殊标志或命令。
JavaScript 构建过程:
  1. 使用您调用 langgraph build 的目录(在本例中是 monorepo 根目录)作为构建上下文。
  2. 自动检测您的包管理器(yarn、npm、pnpm、bun)。
  3. 根据您的项目配置运行适当的安装流程。
  4. 使用包含 langgraph.json 的目录来定位要构建的应用程序。

技巧与最佳实践

  1. 将代理配置放在代理目录中:将 langgraph.json 文件放置在特定的代理目录中,而不是 monorepo 根目录。这使您可以在同一个 monorepo 中支持多个代理,而无需将它们全部部署在同一个 LangSmith 部署中。
  2. 为 Python 使用相对路径:对于 Python monorepo,请在 dependencies 数组中使用相对路径,例如 "../../shared-package"。
  3. 为 JS 利用工作区特性:对于 JavaScript/TypeScript,请使用您的包管理器的工作区特性来管理包之间的依赖关系。
  4. 先本地测试:在部署之前,始终在本地测试您的构建,以确保所有依赖都已正确解析。
  5. 环境变量:将环境文件(.env)保留在您的代理目录中,用于环境特定的配置。