LangGraph

LangGraph 6강

[에이전트] 프리빌트 ReAct 에이전트

5강의 그래프(모델 ↔ ToolNode 순환)는 매우 흔한 패턴이라, LangGraph는 이를 한 줄로 만들어 주는 create_react_agent를 제공한다. 모델과 도구 목록만 주면 도구 호출·루프·종료 조건이 포함된 에이전트가 완성된다. 빠르게 시작하고, 필요할 때만 저수준 그래프로 내려가면 된다.

LangGraph 6강 구성도

이 강의 목표는 프리빌트 에이전트로 실전 에이전트를 즉시 만들고, 메모리·프롬프트를 붙이는 법을 익히는 것이다.

1. 한 줄로 에이전트 만들기

from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool

@tool
def get_weather(city: str) -> str:
    "도시의 날씨를 반환한다"
    return f"{city}는 맑음, 24도"

agent = create_react_agent(
    model=ChatOpenAI(model="gpt-4o"),
    tools=[get_weather],
    prompt="너는 간결한 한국어 날씨 도우미야.",
)
res = agent.invoke({"messages": [("user", "서울 날씨 어때?")]})
print(res["messages"][-1].content)

2. 내부 구조

create_react_agent는 5강에서 손으로 만든 그래프를 자동으로 조립한다. 즉 chat(모델) 노드와 ToolNode, 그리고 tools_condition 분기·순환이 이미 들어 있다.

3. 옵션으로 확장

  • checkpointer=: 대화 메모리(7강)를 붙인다.
  • prompt=: 시스템 프롬프트(문자열 또는 함수).
  • interrupt_before=["tools"]: 도구 실행 전 사람 승인(8강).
  • response_format=: 구조화된 출력 스키마를 강제.

핵심 명령·용어

이름
create_react_agent ReAct 에이전트 자동 생성
model / tools 사용할 LLM / 도구 목록
prompt 시스템 지시(문자열·함수)
checkpointer 대화 메모리 부착

예제

from langgraph.checkpoint.memory import MemorySaver

agent = create_react_agent(
    ChatOpenAI(model="gpt-4o"), [get_weather],
    checkpointer=MemorySaver(),        # 메모리까지 한 번에
)
cfg = {"configurable": {"thread_id": "u1"}}
agent.invoke({"messages": [("user", "부산 날씨는?")]}, cfg)
agent.invoke({"messages": [("user", "방금 어디 물어봤지?")]}, cfg)  # 기억함

해설) 프리빌트는 90%의 경우를 빠르게 해결한다. 커스텀 분기·다중 노드가 필요할 때만 3~5강의 저수준 API로 내려가면 된다. 다음 강의부터는 메모리·사람 개입·스트리밍·멀티 에이전트로 확장한다.

댓글 0