프로그래밍/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로 변경하는 작업을 수행하면 다음과 같이 그래프가 변경된다.