프로그래밍/AI,ML
LangGraph ReAct Agent 커스터마이즈하기
Lou Park
2025. 4. 1. 17:22
Langgraph.prebuilt의 create_react_agent
를 이용해 ReAct Agent를 생성하면 이미 StateGraph가 컴파일되어서 반환되기때문에 이걸로 Agent를 만들면 워크플로우를 수정할 수 없다. Agent를 개발하다보니 추가적인 단계를 정의해야할 일이 생겨 더 이상 create_react_agent
를 사용할 수 없었다.
그래서 create_react_agent의 코드를 분석해서 커스터마이즈 가능하도록 일부 코드들을 들고와서 create_custom_react_agent
를 만들었다. StateGraph가 컴파일 되기전에 customize_workflow
로 graph를 받아서 추가로 workflow를 수정한 뒤에 컴파일 할 수 있다.
주석도 열심히 달아두었기때문에 처음부터 ReAct Agent를 구축하려는 분들에게도 도움이 될 것같다.
사용 예시
아무것도 건드리지 않았을때는 이렇게 기본형태의 ReAct Agent 그래프를 볼 수 있다.
def customize_workflow(graph: StateGraph) -> StateGraph:
graph.add_node("load_memories", load_memories)
graph.add_edge("load_memories", "agent")
graph.set_entry_point("load_memories")
graph.edges.remove((START, "agent"))
return graph
self.agent = create_custom_react_agent(
model=llm,
tools=tools,
prompt=prompt,
checkpointer=memory,
customize_workflow=customize_workflow,
debug=debug
)
LTM 추가를 위해 메모리를 불러오는 작업(load_memories)를 Entrypoint로 변경하는 작업을 수행하면 다음과 같이 그래프가 변경된다.