개요
•
LangGraph 애플리케이션 구성
◦
하나 이상의 그래프
◦
LangGraph API 구성 파일( langgraph.json)
◦
종속성을 지정하는 파일
◦
환경 변수를 지정하는 선택적 .env 파일
•
이 가이드에선 LangGraph 애플리케이션의 일반적인 구조를 보여주고 LangGraph 플랫폼을 사용하여 LangGraph 애플리케이션을 배포하는 데 필요한 정보를 지정하는 방법을 설명한다.
핵심 개념
LangGraph 플랫폼을 사용하여 배포하려면 다음 정보를 제공해야 한다.
1.
2.
애플리케이션의 논리를 구현하는 Graph
3.
4.
애플리케이션을 실행하는 데 필요한 Environment Variables
파일 구조
•
Python (requirements.txt)
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 you 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
Plain Text
복사
•
Python (pyproject.toml)
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 you 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
Plain Text
복사
•
JS (package.json)
my-app/
├── src # all project code lies within here
│ ├── utils # optional utilities for your graph
│ │ ├── tools.ts # tools for your graph
│ │ ├── nodes.ts # node functions for you graph
│ │ └── state.ts # state definition of your graph
│ └── agent.ts # code for constructing your graph
├── package.json # package dependencies
├── .env # environment variables
└── langgraph.json # configuration file for LangGraph
Plain Text
복사
LangGraph 애플리케이션의 디렉토리 구조는 프로그래밍 언어와 사용하는 패키지 관리자에 따라 달라질 수 있습니다.
Configuration File
•
langgraph.json파일이란?
◦
LangGraph 애플리케이션을 배포하는 데 필요한 종속성, 그래프, 환경 변수 및 기타 설정을 지정하는 JSON 파일
•
이 파일은 다음 정보의 지정을 지원한다.
열쇠 | 설명 | 필수/선택 |
dependencies | LangGraph API 서버에 대한 종속성 배열. 종속성은 다음 중 하나일 수 있다.
(1) ".", 로컬 Python 패키지
(2) "./local_package"앱 디렉터리의 pyproject.toml, setup.py 혹은 requirements.txt
(3) 패키지 이름 | 필수 |
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 인스턴스를 생성하는 함수이다 . | 필수 |
env | 파일 경로 .env 또는 환경 변수에서 해당 값까지의 매핑 | 선택 |
python_version | 3.11 또는 3.12 기본값은 3.11. | 선택 |
pip_config_file | pip 구성 파일 경로 | 선택 |
dockerfile_lines | 부모 이미지에서 가져온 후 Dockerfile에 추가할 추가 줄의 배열 | 선택 |
LangGraph CLI는 기본적으로 현재 디렉토리의 구성 파일 langgraph.json을 사용한다.
Examples
•
Python
◦
종속성에는 사용자 정의 로컬 패키지와 langchain_openai패키지가 포함된다.
◦
./your_package/your_file.pyvariable변수가 있는 파일에서 단일 그래프가 로드된다.
◦
환경 변수는 .env파일에서 로드된다.
{
"dependencies": [
"langchain_openai",
"./your_package"
],
"graphs": {
"my_agent": "./your_package/your_file.py:agent"
},
"env": "./.env"
}
JSON
복사
•
JavaScript
◦
package.json종속성은 로컬 디렉토리(예: ) 의 종속성 파일에서 로드된다 .
◦
./your_package/your_file.jsagent함수를 사용하여 파일에서 단일 그래프가 로드된다.
◦
환경 변수는 OPENAI_API_KEY인라인으로 설정된다.
{
"dependencies": [
"."
],
"graphs": {
"my_agent": "./your_package/your_file.js:agent"
},
"env": {
"OPENAI_API_KEY": "secret-key"
}
}
JSON
복사
Dependencies
LangGraph 애플리케이션은 다른 Python 패키지나 JavaScript 라이브러리에 의존할 수 있다
(애플리케이션이 작성된 프로그래밍 언어에 따라 다름).
종속성을 올바르게 설정하려면 일반적으로 다음 정보를 지정해야 한다.
1.
종속성을 지정하는 디렉토리의 파일(예: requirements.txt, pyproject.toml, 또는package.json).
2.
3.
Graph
•
•
Configuration File에서 하나 이상의 그래프를 지정할 수 있다.
•
각 그래프는 다음 경로의 고유한 이름으로 식별된다:
1.
컴파일된 그래프
2.
그래프를 만드는 함수
Environment Varible
필자가 쓰는 환경
my-app/
├── main_agent/
│ ├── __init__.py
│ ├── agent.py (main langgraph.graph)
│ ├── commmon/
│ │ ├── __init__.py
│ │ └── pyproject.toml
│ ├── sub_agent1/
│ │ ├── modules
│ │ │ ├── __init__.py
│ │ │ ├── tools.py
│ │ │ ├── nodes.py
│ │ │ └── state.py
│ │ ├── __init__.py
│ │ ├── agent.py (sub langgraph.graph)
│ │ └── pyproject.toml
│ └── sub_agent2/
│ ├── modules
│ │ ├── __init__.py
│ │ ├── tools.py
│ │ ├── nodes.py
│ │ └── state.py
│ ├── __init__.py
│ ├── agent.py (sub langgraph.graph)
│ └── pyproject.toml
├── tests/
├── .env
├── langgraph.json
JSON
복사