LangSmith는 에이전트 코드가 저장소의 다른 위치에 있는 공유 패키지에 의존할 수 있는 monorepo 설정에서 에이전트 배포를 지원합니다. 이 가이드는 monorepo를 구조화하고 공유 종속성과 함께 작동하도록 langgraph.json 파일을 구성하는 방법을 보여줍니다.

Repository 구조

완전한 작동 예제는 다음을 참조하세요:
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/
    └── ...

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"
}
Python 구현은 다음과 같이 상위 디렉토리의 패키지를 자동으로 처리합니다:
  • "."으로 시작하는 상대 경로를 감지합니다.
  • 필요에 따라 상위 디렉토리를 Docker 빌드 컨텍스트에 추가합니다.
  • 실제 패키지(pyproject.toml/setup.py 포함)와 단순 Python 모듈을 모두 지원합니다.
JavaScript monorepo의 경우:
  • 공유 workspace 종속성은 패키지 매니저에 의해 자동으로 해결됩니다.
  • package.json은 workspace 구문을 사용하여 공유 패키지를 참조해야 합니다.
에이전트 디렉토리의 package.json 예제:
{
  "name": "customer-support-agent",
  "dependencies": {
    "@company/shared-utils": "workspace:*",
    "@langchain/langgraph": "^0.2.0"
  }
}

Application 빌드

langgraph build를 실행하세요:
cd agents/customer-support
langgraph build -t my-customer-support-agent
Python 빌드 프로세스:
  1. 상대 종속성 경로를 자동으로 감지합니다.
  2. 공유 패키지를 Docker 빌드 컨텍스트로 복사합니다.
  3. 올바른 순서로 모든 종속성을 설치합니다.
  4. 특별한 플래그나 명령이 필요하지 않습니다.
JavaScript 빌드 프로세스:
  1. langgraph build를 호출한 디렉토리(이 경우 monorepo 루트)를 빌드 컨텍스트로 사용합니다.
  2. 패키지 매니저(yarn, npm, pnpm, bun)를 자동으로 감지합니다.
  3. 적절한 install 명령을 실행합니다.
    • 사용자 정의 build/install 명령이 하나 또는 둘 다 있는 경우 langgraph build를 호출한 디렉토리에서 실행됩니다.
    • 그렇지 않으면 langgraph.json 파일이 위치한 디렉토리에서 실행됩니다.
  4. 선택적으로 langgraph.json 파일이 위치한 디렉토리에서 사용자 정의 build 명령을 실행합니다(--build-command 플래그를 전달한 경우에만).

팁과 모범 사례

  1. 에이전트 디렉토리에 에이전트 구성 유지: langgraph.json 파일을 monorepo 루트가 아닌 특정 에이전트 디렉토리에 배치하세요. 이를 통해 동일한 LangSmith 배포에서 모두 배포할 필요 없이 동일한 monorepo에서 여러 에이전트를 지원할 수 있습니다.
  2. Python에 상대 경로 사용: Python monorepo의 경우 dependencies 배열에서 "../../shared-package"와 같은 상대 경로를 사용하세요.
  3. JS에 workspace 기능 활용: JavaScript/TypeScript의 경우 패키지 매니저의 workspace 기능을 사용하여 패키지 간 종속성을 관리하세요.
  4. 먼저 로컬에서 테스트: 모든 종속성이 올바르게 해결되는지 확인하기 위해 배포하기 전에 항상 로컬에서 빌드를 테스트하세요.
  5. Environment variables: 환경별 구성을 위해 환경 파일(.env)을 에이전트 디렉토리에 보관하세요.

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I