以编程方式使用文档

LangSmith 支持从 monorepo 环境中部署智能体,您的智能体代码可能依赖于位于仓库其他位置的共享包。本指南展示了如何构建 monorepo 结构并配置您的 langgraph.json 文件以使用共享依赖项。

仓库结构

完整的可运行示例,请参阅: - Python monorepo 示例 - JS monorepo 示例

my-monorepo/
├── shared-utils/           # Shared Python package
│   ├── __init__.py
│   ├── common.py
│   └── pyproject.toml      # Or setup.py
├── agents/
│   └── customer-support/   # Agent directory
│       ├── agent/
│       │   ├── __init__.py
│       │   └── graph.py
│       ├── langgraph.json  # Config file in agent directory
│       ├── .env
│       └── pyproject.toml  # Agent dependencies
└── other-service/
    └── ...
my-monorepo/
├── package.json            # Root package.json with workspaces
├── shared-utils/           # Shared TypeScript package
│   ├── package.json
│   ├── src/
│   │   └── index.ts
│   └── tsconfig.json
├── agents/
│   └── customer-support/   # Agent directory
│       ├── src/
│       │   └── agent.ts
│       ├── langgraph.json  # Config file in agent directory
│       ├── package.json    # Agent dependencies
│       ├── .env
│       └── tsconfig.json
└── other-service/
    └── ...

LangGraph.json 配置

将 langgraph.json 文件放在您的智能体目录中(而不是 monorepo 根目录)。确保文件遵循所需的结构:

{
  "dependencies": [
    ".",                    # Current agent package
    "../../shared-utils"    # Relative path to shared package
  ],
  "graphs": {
    "customer_support": "./agent/graph.py:graph"
  },
  "env": ".env"
}
{
  "node_version": "20",
  "graphs": {
    "customer_support": "./src/agent.ts:graph"
  },
  "env": ".env"
}

Python 实现通过以下方式自动处理父目录中的包: - 检测以 ".". - 开头的相对路径,根据需要将父目录添加到 Docker 构建上下文中。 - 支持真正的包(带有 pyproject.toml/setup.py)和简单的 Python 模块。

对于 JavaScript monorepo: - 共享工作区依赖项由您的包管理器自动解析。 - 您的 package.json 应使用工作区语法引用共享包。

示例 package.json 在智能体目录中:

{
  "name": "customer-support-agent",
  "dependencies": {
    "@company/shared-utils": "workspace:*",
    "@langchain/langgraph": "^0.2.0"
  }
}

构建应用程序

运行 langgraph build:

cd agents/customer-support
langgraph build -t my-customer-support-agent
# Run from the root of the monorepo
langgraph build -t my-customer-support-agent -c agents/customer-support/langgraph.json --build-command "yarn run turbo build" --install-command "yarn install"

Python 构建流程: 1. 自动检测相对依赖路径。 2. 将共享包复制到 Docker 构建上下文中。 3. 按正确顺序安装所有依赖项。 4. 无需特殊标志或命令。

JavaScript 构建过程: 1. 使用你调用的目录 langgraph build (本例中为 monorepo 根目录)作为构建上下文。 2. 自动检测你的包管理器(yarn、npm、pnpm、bun) 3. 运行适当的安装命令。 - If you have one or both of a custom build/install command it will run from the directory you called langgraph build from. - 否则,它将从 langgraph.json 文件所在的目录运行。 4. 可选地从文件所在目录运行自定义构建命令(仅当你传递 langgraph.json 标志时)。 --build-command

提示和最佳实践

  1. **将智能体配置保留在智能体目录中**:将 langgraph.json 文件放在特定的智能体目录中,而不是 monorepo 根目录。这样你可以在同一个 monorepo 中支持多个智能体,而无需将它们全部部署在同一个 LangSmith 部署中。
  1. **对 Python 使用相对路径**:对于 Python monorepo,使用类似 "../../shared-package" 的路径,在 dependencies array.
  1. **利用 JS 的工作区功能**: For JavaScript/TypeScript, use your package manager's workspace features to manage dependencies between packages.
  1. **先在本地测试**:在部署前始终在本地测试你的构建,以确保所有依赖项都被正确解析。
  1. **环境变量**:请将环境文件 (.env) 保留在您的代理目录中,用于环境特定配置。