Skip to main content
LangSmith는 에이전트 코드가 저장소의 다른 위치에 있는 공유 패키지에 의존할 수 있는 모노레포 환경에서 에이전트를 배포하는 것을 지원합니다. 이 가이드에서는 모노레포를 구조화하고 공유 의존성을 사용할 수 있도록 langgraph.json 파일을 구성하는 방법을 안내합니다.

저장소 구조

완전한 작동 예제는 다음을 참고하세요:
my-monorepo/
├── shared-utils/           # 공유 Python 패키지
│   ├── __init__.py
│   ├── common.py
│   └── pyproject.toml      # 또는 setup.py
├── agents/
│   └── customer-support/   # 에이전트 디렉터리
│       ├── agent/
│       │   ├── __init__.py
│       │   └── graph.py
│       ├── langgraph.json  # 에이전트 디렉터리의 설정 파일
│       ├── .env
│       └── pyproject.toml  # 에이전트 의존성
└── other-service/
    └── ...

LangGraph.json 구성

langgraph.json 파일은 에이전트 디렉터리에 배치해야 합니다(모노레포 루트가 아님). 파일이 다음과 같은 필수 구조를 따르는지 확인하세요:
{
  "dependencies": [
    ".",                    # 현재 에이전트 패키지
    "../../shared-utils"    # 공유 패키지로의 상대 경로
  ],
  "graphs": {
    "customer_support": "./agent/graph.py:graph"
  },
  "env": ".env"
}
Python 구현은 다음과 같은 방법으로 상위 디렉터리의 패키지를 자동으로 처리합니다:
  • "."으로 시작하는 상대 경로를 감지합니다.
  • 필요에 따라 상위 디렉터리를 Docker 빌드 컨텍스트에 추가합니다.
  • 실제 패키지(pyproject.toml/setup.py 포함)와 단순 Python 모듈을 모두 지원합니다.
JavaScript 모노레포의 경우:
  • 공유 워크스페이스 의존성은 패키지 매니저에 의해 자동으로 해결됩니다.
  • 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
Python 빌드 프로세스:
  1. 상대 의존성 경로를 자동으로 감지합니다.
  2. 공유 패키지를 Docker 빌드 컨텍스트에 복사합니다.
  3. 모든 의존성을 올바른 순서로 설치합니다.
  4. 특별한 플래그나 명령어가 필요하지 않습니다.
JavaScript 빌드 프로세스:
  1. langgraph build를 호출한 디렉터리(이 경우 모노레포 루트)를 빌드 컨텍스트로 사용합니다.
  2. 패키지 매니저(yarn, npm, pnpm, bun)를 자동으로 감지합니다.
  3. 적절한 설치 명령어를 실행합니다.
    • 커스텀 빌드/설치 명령어 중 하나 또는 둘 다 있는 경우, langgraph build를 호출한 디렉터리에서 실행됩니다.
    • 그렇지 않으면 langgraph.json 파일이 위치한 디렉터리에서 실행됩니다.
  4. 선택적으로 langgraph.json 파일이 위치한 디렉터리에서 커스텀 빌드 명령어를 실행합니다(--build-command 플래그를 전달한 경우에만).

팁과 모범 사례

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

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