Functional API에 대한 개념적 정보는 Functional API를 참조하세요.
간단한 워크플로우 만들기
entrypoint를 정의할 때, 입력은 함수의 첫 번째 인자로 제한됩니다. 여러 입력을 전달하려면 dictionary를 사용할 수 있습니다.
확장 예제: 간단한 워크플로우
확장 예제: 간단한 워크플로우
확장 예제: LLM으로 에세이 작성하기
확장 예제: LLM으로 에세이 작성하기
이 예제는
@task와 @entrypoint decorator를 구문적으로 사용하는 방법을 보여줍니다.
checkpointer가 제공되면 워크플로우 결과가 checkpointer에 저장됩니다.병렬 실행
Task들을 동시에 호출하고 결과를 기다림으로써 병렬로 실행할 수 있습니다. 이는 IO 바운드 작업(예: LLM API 호출)의 성능을 향상시키는 데 유용합니다.확장 예제: 병렬 LLM 호출
확장 예제: 병렬 LLM 호출
이 예제는 이 예제는 LangGraph의 동시성 모델을 사용하여 특히 LLM completion과 같은 I/O 작업이 포함된 경우 실행 시간을 개선합니다.
@task를 사용하여 여러 LLM 호출을 병렬로 실행하는 방법을 보여줍니다. 각 호출은 다른 주제에 대한 단락을 생성하고, 결과는 단일 텍스트 출력으로 결합됩니다.Graph 호출하기
Functional API와 Graph API는 동일한 기본 runtime을 공유하므로 동일한 애플리케이션에서 함께 사용할 수 있습니다.확장 예제: functional API에서 간단한 graph 호출하기
확장 예제: functional API에서 간단한 graph 호출하기
다른 entrypoint 호출하기
entrypoint 또는 task 내에서 다른 entrypoint를 호출할 수 있습니다.확장 예제: 다른 entrypoint 호출하기
확장 예제: 다른 entrypoint 호출하기
Streaming
Functional API는 Graph API와 동일한 streaming 메커니즘을 사용합니다. 자세한 내용은 streaming 가이드 섹션을 참조하세요. 업데이트와 사용자 정의 데이터를 모두 스트리밍하는 streaming API 사용 예제입니다.langgraph.config에서get_stream_writer를 import합니다.- entrypoint 내에서 stream writer 인스턴스를 가져옵니다.
- 계산이 시작되기 전에 사용자 정의 데이터를 emit합니다.
- 결과를 계산한 후 다른 사용자 정의 메시지를 emit합니다.
.stream()을 사용하여 스트리밍된 출력을 처리합니다.- 사용할 streaming mode를 지정합니다.
Python < 3.11에서 Async 사용
Python < 3.11을 사용하고 async 코드를 작성하는 경우,
get_stream_writer를 사용하면 작동하지 않습니다. 대신 StreamWriter 클래스를 직접 사용하세요. 자세한 내용은 Async with Python < 3.11을 참조하세요.Retry policy
Task 캐싱하기
ttl은 초 단위로 지정됩니다. 이 시간이 지나면 캐시가 무효화됩니다.
오류 후 재개하기
slow_task의 결과가 이미 checkpoint에 저장되어 있으므로 다시 실행할 필요가 없습니다.
Human-in-the-loop
Functional API는interrupt 함수와 Command primitive를 사용하여 human-in-the-loop 워크플로우를 지원합니다.
기본 human-in-the-loop 워크플로우
세 개의 task를 생성합니다:"bar"를 추가합니다.- 사용자 입력을 위해 일시 중지합니다. 재개할 때 사용자 입력을 추가합니다.
"qux"를 추가합니다.
step_1)는 저장되므로 interrupt 이후에 다시 실행되지 않습니다.
쿼리 문자열을 전송해 보겠습니다:
step_1 이후 interrupt로 일시 중지되었습니다. interrupt는 실행을 재개하기 위한 지침을 제공합니다. 재개하려면 human_feedback task가 예상하는 데이터를 포함하는 Command를 발행합니다.
Tool 호출 검토하기
실행 전에 tool 호출을 검토하려면interrupt를 호출하는 review_tool_call 함수를 추가합니다. 이 함수가 호출되면 재개 명령을 발행할 때까지 실행이 일시 중지됩니다.
tool 호출이 주어지면 함수는 사용자 검토를 위해 interrupt합니다. 이 시점에서 다음 중 하나를 수행할 수 있습니다:
- tool 호출 수락
- tool 호출 수정 및 계속
- 사용자 정의 tool 메시지 생성(예: 모델에 tool 호출을 다시 포맷하도록 지시)
ToolMessage를 추가하기만 하면 됩니다. 이전 task의 결과(이 경우 초기 모델 호출)는 저장되므로 interrupt 이후에 다시 실행되지 않습니다.
단기 메모리
단기 메모리를 사용하면 동일한 thread id의 서로 다른 invocation에서 정보를 저장할 수 있습니다. 자세한 내용은 short-term memory를 참조하세요.Checkpoint 관리하기
checkpointer에 저장된 정보를 보고 삭제할 수 있습니다.Thread 상태 보기
Thread 히스토리 보기
반환 값과 저장 값 분리하기
entrypoint.final을 사용하여 호출자에게 반환되는 값과 checkpoint에 저장되는 값을 분리합니다. 이는 다음과 같은 경우에 유용합니다:
- 계산된 결과(예: 요약 또는 상태)를 반환하지만 다음 invocation에서 사용할 다른 내부 값을 저장하려는 경우.
- 다음 실행 시 previous 매개변수에 전달되는 내용을 제어해야 하는 경우.
Chatbot 예제
Functional API와InMemorySaver checkpointer를 사용한 간단한 chatbot 예제입니다.
봇은 이전 대화를 기억하고 중단한 지점부터 계속할 수 있습니다.
장기 메모리
long-term memory를 사용하면 서로 다른 thread id에서 정보를 저장할 수 있습니다. 이는 한 대화에서 특정 사용자에 대한 정보를 학습하고 다른 대화에서 사용하는 데 유용할 수 있습니다.워크플로우
- Functional API를 사용하여 워크플로우를 구축하는 방법에 대한 더 많은 예제는 Workflows and agent 가이드를 참조하세요.
다른 라이브러리와 통합하기
- functional API를 사용하여 다른 프레임워크에 LangGraph 기능 추가하기: 기본적으로 제공하지 않는 다른 agent 프레임워크에 persistence, memory, streaming과 같은 LangGraph 기능을 추가합니다.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.