LangGraph CLI는 LangGraph API 서버를 로컬에서 빌드하고 실행하기 위한 커맨드라인 도구입니다. 생성된 서버는 실행, 스레드, 어시스턴트 등을 위한 모든 API 엔드포인트를 노출하며, 체크포인트 및 저장소를 위한 관리형 데이터베이스와 같은 지원 서비스를 포함합니다.
LangGraph CLI는 이 스키마를 따르는 JSON 설정 파일이 필요합니다. 다음 속성들을 포함합니다:
LangGraph CLI는 기본적으로 현재 디렉터리의 langgraph.json 설정 파일을 사용합니다.
Python
JS
키
설명
dependencies
필수. LangSmith API 서버를 위한 의존성 배열. 의존성은 다음 중 하나일 수 있습니다:
마침표 하나 ("."). 로컬 Python 패키지를 찾습니다.
pyproject.toml, setup.py 또는 requirements.txt가 위치한 디렉터리 경로. 예를 들어, requirements.txt가 프로젝트 디렉터리의 루트에 있으면 "./"를 지정합니다. local_package라는 하위 디렉터리에 있으면 "./local_package"를 지정합니다. "requirements.txt" 문자열 자체를 지정하지 마세요.
Python 패키지 이름.
graphs
필수. 그래프 ID에서 컴파일된 그래프 또는 그래프를 만드는 함수가 정의된 경로로의 매핑. 예:
./your_package/your_file.py:variable, 여기서 variable은 langgraph.graph.state.CompiledStateGraph의 인스턴스입니다
./your_package/your_file.py:make_graph, 여기서 make_graph는 설정 딕셔너리(langchain_core.runnables.RunnableConfig)를 받아 langgraph.graph.state.StateGraph 또는 langgraph.graph.state.CompiledStateGraph의 인스턴스를 반환하는 함수입니다. 자세한 내용은 런타임에 그래프 재빌드하기를 참조하세요.
auth
(v0.0.11에 추가됨) 인증 핸들러 경로를 포함하는 인증 설정. 예: ./your_package/auth.py:auth, 여기서 auth는 langgraph_sdk.Auth의 인스턴스입니다. 자세한 내용은 인증 가이드를 참조하세요.
base_image
선택 사항. LangGraph API 서버의 베이스 이미지. 기본값은 langchain/langgraph-api 또는 langchain/langgraphjs-api입니다. 빌드를 특정 버전의 langgraph API에 고정하려면 "langchain/langgraph-server:0.2"와 같이 사용하세요. 자세한 내용은 https://hub.docker.com/r/langchain/langgraph-server/tags를 참조하세요. (langgraph-cli==0.2.8에 추가됨)
image_distro
선택 사항. 베이스 이미지의 Linux 배포판. "debian", "wolfi", "bookworm", 또는 "bullseye" 중 하나여야 합니다. 생략하면 기본값은 "debian"입니다. langgraph-cli>=0.2.11에서 사용 가능합니다.
env
.env 파일의 경로 또는 환경 변수와 그 값의 매핑.
store
BaseStore에 시맨틱 검색 및/또는 수명 주기(TTL)를 추가하기 위한 설정. 다음 필드를 포함합니다:
index (선택 사항): embed, dims 필드 및 선택적 fields를 사용한 시맨틱 검색 인덱싱 설정.
ttl (선택 사항): 항목 만료 설정. 선택적 필드가 있는 객체: refresh_on_read (boolean, 기본값 true), default_ttl (float, 분 단위 수명; 새로 생성된 항목에만 적용됨; 기존 항목은 변경되지 않음; 기본값은 만료 없음), sweep_interval_minutes (integer, 만료된 항목을 확인하는 빈도, 기본값은 검색 없음).
ui
선택 사항. 에이전트가 생성하는 UI 컴포넌트의 명명된 정의들, 각각 JS/TS 파일을 가리킵니다. (langgraph-cli==0.1.84에 추가됨)
python_version
3.11, 3.12, 또는 3.13. 기본값은 3.11입니다.
node_version
LangGraph.js를 사용하려면 node_version: 20을 지정하세요.
pip_config_file
pip 설정 파일의 경로.
pip_installer
(v0.3에 추가됨) 선택 사항. Python 패키지 설치 프로그램 선택기. "auto", "pip", 또는 "uv"로 설정할 수 있습니다. 버전 0.3부터 기본 전략은 일반적으로 더 빠른 빌드를 제공하면서도 드롭인 대체품인 uv pip를 실행하는 것입니다. uv가 의존성 그래프 또는 pyproject.toml의 구조를 처리할 수 없는 드문 상황에서는 여기에 "pip"를 지정하여 이전 동작으로 되돌릴 수 있습니다.
keep_pkg_tools
(v0.3.4에 추가됨) 선택 사항. 최종 이미지에서 Python 패키징 도구(pip, setuptools, wheel)를 유지할지 제어합니다. 허용되는 값:
true : 세 가지 도구 모두 유지 (제거 건너뛰기).
false / 생략 : 세 가지 도구 모두 제거 (기본 동작).
list[str] : 유지할 도구 이름. 각 값은 “pip”, “setuptools”, “wheel” 중 하나여야 합니다.
기본적으로 세 가지 도구 모두 제거됩니다.
dockerfile_lines
부모 이미지에서 import한 후 Dockerfile에 추가할 추가 라인 배열.
checkpointer
체크포인터 설정. 다음 키가 있는 객체인 ttl 필드를 포함합니다:
strategy: 만료된 체크포인트를 처리하는 방법 (예: "delete").
sweep_interval_minutes: 만료된 체크포인트를 확인하는 빈도 (정수).
default_ttl: 체크포인트의 기본 수명 주기(분 단위) (정수); 새로 생성된 체크포인트/스레드에만 적용됨 (기존 데이터는 변경되지 않음). 지정된 전략이 적용되기 전에 체크포인트가 보관되는 기간을 정의합니다.
http
HTTP 서버 설정으로 다음 필드를 포함합니다:
app: 사용자 정의 Starlette/FastAPI 앱의 경로 (예: "./src/agent/webapp.py:app"). 사용자 정의 라우트 가이드를 참조하세요.
cors: allow_origins, allow_methods, allow_headers 등의 필드가 있는 CORS 설정.
configurable_headers: 실행의 구성 가능한 값으로 제외하거나 포함할 요청 헤더를 정의합니다.
image_distro 필드를 사용하여 베이스 이미지의 Linux 배포판을 지정할 수 있습니다. 유효한 옵션은 debian, wolfi, bookworm, 또는 bullseye입니다. Wolfi는 더 작고 안전한 이미지를 제공하므로 권장되는 옵션입니다. langgraph-cli>=0.2.11에서 사용 가능합니다.
store 설정의 embed 필드는 문자열 리스트를 받아 임베딩 리스트를 반환하는 사용자 정의 함수를 참조할 수 있습니다. 구현 예:
Copy
# embeddings.pydef embed_texts(texts: list[str]) -> list[list[float]]: """Custom embedding function for semantic search.""" # Implementation using your preferred embedding model return [[0.1, 0.2, ...] for _ in texts] # dims-dimensional vectors
store.ttl 키를 사용하여 BaseStore의 항목/메모리에 대한 기본 데이터 만료를 설정할 수 있습니다. 이는 항목이 마지막으로 액세스된 후 얼마나 오래 보관되는지를 결정합니다 (refresh_on_read에 따라 읽기가 타이머를 새로 고칠 수 있음). 이러한 기본값은 get, search 등의 해당 인수를 수정하여 호출별로 재정의할 수 있습니다.ttl 설정은 다음 선택적 필드를 포함하는 객체입니다:
refresh_on_read: true(기본값)인 경우, get 또는 search를 통해 항목에 액세스하면 만료 타이머가 재설정됩니다. 쓰기(put)에서만 TTL을 새로 고치려면 false로 설정하세요.
default_ttl: 항목의 기본 수명(분 단위). 새로 생성된 항목에만 적용됩니다; 기존 항목은 수정되지 않습니다. 설정하지 않으면 항목은 기본적으로 만료되지 않습니다.
sweep_interval_minutes: 시스템이 만료된 항목을 삭제하기 위해 백그라운드 프로세스를 실행하는 빈도(분). 설정하지 않으면 자동으로 검색이 발생하지 않습니다.
다음은 7일 TTL(10080분)을 활성화하고, 읽기 시 새로 고치며, 매시간 검색하는 예입니다:
(v0.3.7에 추가됨)api_version 키를 사용하여 LangGraph 서버의 API 버전을 고정할 수 있습니다. 서버가 특정 버전의 API를 사용하도록 하려는 경우 유용합니다.
기본적으로 클라우드 배포의 빌드는 서버의 최신 안정 버전을 사용합니다. api_version 키를 특정 버전으로 설정하여 고정할 수 있습니다.
FROM langchain/langgraph-api:3.11ADD ./pipconf.txt /pipconfig.txtRUN PIP_CONFIG_FILE=/pipconfig.txt PYTHONDONTWRITEBYTECODE=1 pip install --no-cache-dir -c /api/constraints.txt langchain_community langchain_anthropic langchain_openai wikipedia scikit-learnADD ./graphs /deps/__outer_graphs/srcRUN set -ex && \ for line in '[project]' \ 'name = "graphs"' \ 'version = "0.1"' \ '[tool.setuptools.package-data]' \ '"*" = ["**/*"]'; do \ echo "$line" >> /deps/__outer_graphs/pyproject.toml; \ doneRUN PIP_CONFIG_FILE=/pipconfig.txt PYTHONDONTWRITEBYTECODE=1 pip install --no-cache-dir -c /api/constraints.txt -e /deps/*ENV LANGSERVE_GRAPHS='{"agent": "/deps/__outer_graphs/src/agent.py:graph", "storm": "/deps/__outer_graphs/src/storm.py:graph"}'
langgraph dockerfile 명령어는 langgraph.json 파일의 모든 설정을 Dockerfile 명령어로 변환합니다. 이 명령어를 사용할 때 langgraph.json 파일을 업데이트하면 다시 실행해야 합니다. 그렇지 않으면 변경 사항이 dockerfile을 빌드하거나 실행할 때 반영되지 않습니다.