AI Agents · 강의

그래프 상태 보존(체크포인트)

Postgres 또는 SQLite에 상태를 저장하여 장시간 실행되는 에이전트를 일시 중지하고 재개하며 감사할 수 있게 해보세요.

레슨 4/415개 단계

그래프 상태 보존(체크포인트)은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

상태를 영속화하는 이유

장시간 실행되는 에이전트에는 다음이 필요합니다:

  • 몇 시간 후 일시 중지된 지점에서 재개하기
  • 실행 중간에 발생한 충돌에서 복구하기
  • 사람의 검토 지원(승인을 기다리기)
  • 디버깅을 위해 실행 다시 재생하기

LangGraph 체크포인터는 모든 노드 경계에서 상태를 영속화합니다.

메모리 내 체크포인터

개발 및 테스트용입니다:

from langgraph.checkpoint.memory import MemorySaver

checkpointer = MemorySaver()
app = graph.compile(checkpointer=checkpointer)

Postgres 체크포인터

운영 환경용입니다:

from langgraph.checkpoint.postgres import PostgresSaver

checkpointer = PostgresSaver.from_conn_string('postgresql://...')
await checkpointer.setup()   # create tables
app = graph.compile(checkpointer=checkpointer)

Sqlite 체크포인터

데이터베이스 서버 없이 로컬에 영속화합니다:

from langgraph.checkpoint.sqlite import SqliteSaver
import sqlite3

conn = sqlite3.connect('agents.db', check_same_thread=False)
checkpointer = SqliteSaver(conn)

스레드 ID

모든 실행에는 세션 ID와 같은 thread_id가 있습니다. 여러 사용자는 서로 다른 thread_id를 사용하며, 실행을 재개하려면 같은 ID를 사용합니다:

config = {'configurable': {'thread_id': 'user-42-conversation-1'}}
result = app.invoke({'messages': [...]}, config)

실행 재개하기

같은 thread_id로 입력 없이 invoke를 호출하면 에이전트가 중단된 지점부터 계속 실행합니다:

# Some hours later:
app.invoke(None, config)

상태 확인하기

스레드의 현재 상태를 읽습니다:

snapshot = app.get_state(config)
print(snapshot.values)         # current state dict
print(snapshot.next)           # which node is next
print(snapshot.created_at)

상태 기록

모든 체크포인트를 거슬러 올라갑니다:

for snapshot in app.get_state_history(config):
    print(snapshot.created_at, snapshot.values)

실행 분기하기

과거의 어느 체크포인트에서든 상태를 업데이트하고 그 지점부터 다시 실행할 수 있어 "가정" 디버깅에 유용합니다:

app.update_state(config, {'plan': 'a different plan'})
app.invoke(None, config)   # continue with the new plan

interrupt_before를 사용한 사람의 검토

사람이 검토할 수 있도록 민감한 노드 전에 실행을 일시 중지합니다:

app = graph.compile(
    checkpointer=checkpointer,
    interrupt_before=['send_email']
)

result = app.invoke({'messages': [...]}, config)
# Agent paused. Human inspects state.
# When approved:
app.invoke(None, config)

편집 후 재개하기

사람이 재개하기 전에 상태를 편집할 수 있습니다:

app.update_state(config, {'email_draft': 'final version'})
app.invoke(None, config)

체크포인트 간 비용 추적

영속 상태에는 충돌 후에도 유지되는 토큰 및 비용 카운터가 포함될 수 있습니다:

class State(TypedDict):
    cost_usd: Annotated[float, lambda a, b: a + b]

# Every LLM-calling node adds to it.

정리

오래된 스레드는 계속 쌓입니다. 저장 공간을 관리하려면 완료된 스레드를 주기적으로 삭제하십시오:

await checkpointer.delete(thread_id='old-thread')

스레드 재개하기

충돌 후 에이전트 실행을 어떻게 재개합니까?

복습

로컬 환경에는 SqliteSaver를, 운영 환경에는 PostgresSaver를 사용하십시오. 스레드 ID로 실행을 분리합니다. 사람의 검토를 포함하는 워크플로에는 interrupt_before를 함께 사용하십시오.

무료로 시작

AI 튜터와 함께 AI Agents을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
60
레슨
239

자주 묻는 질문

“그래프 상태 보존(체크포인트)” 강의는 무료인가요?

네 — “그래프 상태 보존(체크포인트)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

“그래프 상태 보존(체크포인트)”에서 뭘 배우나요?

Postgres 또는 SQLite에 상태를 저장하여 장시간 실행되는 에이전트를 일시 중지하고 재개하며 감사할 수 있게 해보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Agents을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“그래프 상태 보존(체크포인트)” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 그래프가 평면 체인보다 뛰어난 이유
  2. 노드, 간선 및 상태
  3. 조건부 라우팅 및 분기
  4. 그래프 상태 보존(체크포인트)
← AI Agents(으)로 돌아가기