애플리케이션 구조

애플리케이션 구조 (Application structure)

LangGraph 애플리케이션은 하나 또는 여러 개의 그래프(graph), 설정 파일(langgraph.json), 의존성을 지정하는 파일, 그리고 환경 변수를 담는 선택적인 .env 파일로 구성돼요. 이 가이드에서는 애플리케이션의 전형적인 구조를 살펴보고, LangSmith Deployment로 배포할 때 필요한 설정을 어떻게 제공하는지 보여드릴게요.

출처: 문서

본문

LangSmith Deployment는 LangGraph 에이전트를 배포하고 확장하기 위한 관리형 호스팅 플랫폼이에요. 인프라, 확장, 운영 관련 문제를 처리해 주기 때문에 상태를 유지하는(stateful) 장기 실행 에이전트(states, long-running agents)를 저장소에서 바로 배포할 수 있습니다. 자세한 내용은 [Deployment 문서](/langsmith/deployment)를 참고하세요.

주요 개념 (Key concepts)

LangSmith를 사용해 배포하려면 다음 정보를 제공해야 해요:

  1. 애플리케이션에 사용할 의존성, 그래프, 환경 변수를 지정하는 LangGraph 설정 파일 (langgraph.json).
  2. 애플리케이션의 로직을 구현하는 그래프.
  3. 애플리케이션 실행에 필요한 의존성을 지정하는 파일.
  4. 애플리케이션 실행에 필요한 환경 변수.

파일 구조 (File structure)

다음은 애플리케이션 디렉터리 구조의 예시예요.

requirements.txt를 쓰는 Python 구조:

my-app/
├── my_agent # all project code lies within here
│   ├── utils # utilities for your graph
│   │   ├── __init__.py
│   │   ├── tools.py # tools for your graph
│   │   ├── nodes.py # node functions for your graph
│   │   └── state.py # state definition of your graph
│   ├── __init__.py
│   └── agent.py # code for constructing your graph
├── .env # environment variables
├── requirements.txt # package dependencies
└── langgraph.json # configuration file for LangGraph

pyproject.toml을 쓰는 Python 구조:

my-app/
├── my_agent # all project code lies within here
│   ├── utils # utilities for your graph
│   │   ├── __init__.py
│   │   ├── tools.py # tools for your graph
│   │   ├── nodes.py # node functions for your graph
│   │   └── state.py # state definition of your graph
│   ├── __init__.py
│   └── agent.py # code for constructing your graph
├── .env # environment variables
├── langgraph.json  # configuration file for LangGraph
└── pyproject.toml # dependencies for your project
LangGraph 애플리케이션의 디렉터리 구조는 프로그래밍 언어와 사용하는 패키지 매니저에 따라 달라질 수 있어요.

설정 파일 (Configuration file)

langgraph.json 파일은 LangGraph 애플리케이션 배포에 필요한 의존성, 그래프, 환경 변수, 그 밖의 설정을 지정하는 JSON 파일이에요. JSON 파일에서 지원하는 모든 키에 대한 자세한 내용은 LangGraph 설정 파일 레퍼런스를 참고하세요.

[LangGraph CLI](/langsmith/cli)는 기본적으로 현재 디렉터리의 `langgraph.json` 설정 파일을 사용합니다.

예시 (Examples)

다음은 설정 파일의 예시예요:

  • 의존성에는 커스텀 로컬 패키지와 langchain_openai 패키지가 포함됩니다.
  • ./your_package/your_file.py 파일의 variable 변수에서 단일 그래프가 로드됩니다.
  • 환경 변수는 .env 파일에서 로드됩니다.
{
  "dependencies": ["langchain_openai", "./your_package"],
  "graphs": {
    "my_agent": "./your_package/your_file.py:agent"
  },
  "env": "./.env"
}

의존성 (Dependencies)

LangGraph 애플리케이션은 다른 Python 패키지에 의존할 수 있어요. 의존성을 올바르게 설정하려면 보통 다음 정보를 지정해야 합니다:

  1. 디렉터리에 의존성을 지정하는 파일 (예: requirements.txt, pyproject.toml, package.json).
  2. LangGraph 애플리케이션 실행에 필요한 의존성을 지정하는 LangGraph 설정 파일dependencies 키.
  3. 추가 바이너리나 시스템 라이브러리는 LangGraph 설정 파일dockerfile_lines 키로 지정할 수 있어요.

그래프 (Graphs)

LangGraph 설정 파일graphs 키를 사용해 배포된 LangGraph 애플리케이션에서 사용할 그래프를 지정해요. 설정 파일에는 하나 이상의 그래프를 지정할 수 있고, 각 그래프는 (고유해야 하는) 이름과 (1) 컴파일된 그래프 또는 (2) 그래프를 만드는 함수가 정의된 경로로 식별됩니다.

환경 변수 (Environment variables)

로컬에서 배포된 LangGraph 애플리케이션을 작업할 때는 LangGraph 설정 파일env 키에서 환경 변수를 구성할 수 있어요. 프로덕션 배포라면 보통 배포 환경에서 환경 변수를 구성하게 됩니다.

더 알아보기 (Learn more)