0Pricing
AI Agents · 강의

노드, 간선 및 상태

TypedDict 상태를 정의하고, 상태를 변경하는 노드 함수를 작성한 뒤 방향성 간선으로 연결해보세요.

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

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

State 객체

모든 LangGraph 에이전트에는 타입이 지정된 상태가 있으며, 일반적으로 TypedDict입니다:

from typing import TypedDict
from typing_extensions import Annotated
import operator

class AgentState(TypedDict):
    messages: Annotated[list, operator.add]   # appends instead of replaces
    plan: str
    answer: str

State 업데이트 작동 방식

각 노드는 부분 딕셔너리를 반환합니다. LangGraph는 다음과 같이 처리합니다:

  1. 현재 상태를 읽습니다
  2. 현재 상태를 전달해 노드를 호출합니다
  3. 반환된 부분 딕셔너리를 다시 병합합니다

operator.add가 적용된 목록 필드에서는 기존 값을 덮어쓰지 않고 새 항목을 추가합니다.

Defining a Node

def planner(state: AgentState) -> dict:
    prompt = f'User wants: {state["messages"][-1].content}'
    plan = llm.invoke(prompt).content
    return {'plan': plan}

Registering the Node

from langgraph.graph import StateGraph, END

graph = StateGraph(AgentState)
graph.add_node('planner', planner)

간선 정의하기

정적 간선은 조건 없이 실행됩니다:

graph.set_entry_point('planner')
graph.add_edge('planner', 'researcher')
graph.add_edge('researcher', 'writer')
graph.add_edge('writer', END)

조건부 간선

분기를 사용하려면 다음 노드를 선택하는 함수를 등록합니다:

def route(state: AgentState) -> str:
    if state['needs_research']:
        return 'researcher'
    return 'writer'

graph.add_conditional_edges(
    'planner',
    route,
    {'researcher': 'researcher', 'writer': 'writer'}
)

END는 특별합니다

END는 종료 노드입니다. END로 향하는 간선은 그래프를 종료하고 현재 상태를 반환합니다.

Compiling the Graph

app = graph.compile()
result = app.invoke({'messages': [...]})
print(result['answer'])

상태 업데이트 스트리밍

상태가 실시간으로 변경되는 모습을 확인합니다:

for event in app.stream({'messages': [...]}):
    print(event)
# Each event is the state diff from the just-completed node.

리듀서 함수

복잡한 상태 병합에는 사용자 지정 리듀서를 사용합니다:

def merge_facts(old, new):
    return {**old, **new}

class State(TypedDict):
    facts: Annotated[dict, merge_facts]

하위 그래프

노드 자체가 컴파일된 또 다른 그래프일 수 있어 계층형 에이전트에 유용합니다:

subgraph = StateGraph(SubState).compile()
graph.add_node('subprocess', subgraph)

비동기 노드

노드는 비동기 함수가 될 수 있습니다:

async def fetch_node(state):
    data = await fetch_async(state['url'])
    return {'data': data}

result = await app.ainvoke({...})

노드의 오류

노드에서 오류가 발생하면 LangGraph가 오류를 전파하고 중지합니다. 정상적으로 처리하려면 노드 안에서 오류를 포착하십시오:

def safe_search(state):
    try:
        return {'results': search(state['query'])}
    except Exception as e:
        return {'error': str(e), 'results': []}

State 업데이트

노드가 딕셔너리로 {'plan': '...'}을 반환하면 어떻게 됩니까?

복습

TypedDict 상태를 정의하고, 부분 업데이트를 반환하는 함수를 작성하고, 노드와 간선을 추가한 다음 컴파일하고 실행합니다. 이것이 LangGraph입니다.

자주 묻는 질문

“노드, 간선 및 상태” 강의는 무료인가요?

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

“노드, 간선 및 상태”에서 뭘 배우나요?

TypedDict 상태를 정의하고, 상태를 변경하는 노드 함수를 작성한 뒤 방향성 간선으로 연결해보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“노드, 간선 및 상태” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

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