
텍스트에서 "create_agent는 LangGraph를 사용하여 그래프 기반 에이전트 런타임을 구축합니다"라는 부분이 핵심입니다.
이제 "오늘 서울 날씨는 어떻고, LangChain이 뭔지 검색해 줘"라는 예시를 이 순서도에 대입해 보겠습니다.
input (입력)input으로 들어옵니다.model (모델 / 두뇌)input을 받은 **LLM(두뇌)**입니다. 이곳은 Agent의 중앙 결정 센터입니다. 다이아몬드 모양인 이유는 '결정' 또는 '분기'가 일어나는 지점이기 때문입니다.input, 나중에는 observation)를 바탕으로 다음 중 하나를 결정합니다.input을 봅니다: "서울 날씨와 LangChain 검색, 두 가지가 필요하군. 일단 날씨부터!"action 경로로 분기합니다.action (행동)model이 "도구를 써야겠다!"라고 결정했을 때, 어떤 도구를 어떻게 호출할지에 대한 구체적인 '명령'입니다.model이 get_weather 도구가 필요하다고 판단했습니다.action 내용: "get_weather 함수를 location='서울' 매개변수와 함께 실행하라."tools (도구)action에서 내려온 명령을 실제로 실행하는 노드입니다. get_weather나 search_google 같은 실제 파이썬 함수들이 대기하고 있는 곳입니다.get_weather(location="서울") 함수가 실제로 호출됩니다.observation (관찰)tools 노드에서 실행된 결과값입니다. Agent 입장에서는 도구를 사용해 '관찰'한 사실입니다.observation 내용: "서울의 날씨는 맑고 25도입니다."observation → model (피드백)설명: 이것이 바로 '순환 고리(loop)'의 핵심입니다. 도구 사용 결과(Observation)가 다시 model에게 전달됩니다.
예시 (2번째 순환 시작):
model이 observation을 전달받습니다.
LLM의 생각: "좋아, '서울 날씨는 맑고 25도'라는 정보는 얻었어. 이제 input에서 요청한 두 번째 일, 'LangChain 검색'을 해야지."
결정: 도구 또 필요!
결과: 다시 action 경로로 분기합니다.
action (2번째): "search_google 함수를 query='LangChain' 매개변수와 함께 실행하라."
tools (2번째): search_google(query="LangChain") 함수 실행.
observation (2번째): "LangChain은 LLM을... 프레임워크입니다."
observation → model (마지막 피드백)model로 돌아갑니다.model이 2번째 observation을 전달받습니다.input에서 요청한 모든 작업을 완료했어. 이 두 가지를 조합해서 최종 답변을 만들자."finish 경로로 분기합니다.finish (종료) → output (출력)model이 모든 작업이 끝났다고 판단하면, Agent는 순환을 멈추고(finish) 최종 결과를 output 노드로 보냅니다.model이 생성한 최종 답변: "오늘 서울의 날씨는 맑고 25도입니다. 그리고 LangChain은 LLM을 기반으로 강력한 애플리케이션을 구축하기 위한 프레임워크입니다."output으로 사용자에게 전달됩니다.create_agent의 역할 (코드와의 연결)이전 예제 코드를 다시 보겠습니다.
# ... (LLM, Tools 정의) ...
# 5. Agent가 사용할 프롬프트 가져오기
prompt = hub.pull("hwchase17/react")
# 6. Agent 생성 (★바로 여기가 핵심★)
agent = create_agent(llm, tools, prompt)
# 7. Agent 실행기(AgentExecutor) 생성
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
여기서 create_agent(...) 함수는, 우리가 직접 순서도를 그리지 않아도, 제공된 이미지와 똑같은 구조의 LangGraph 순서도를 내부적으로 뚝딱 만들어주는 편리한 함수입니다.
AgentExecutor(...)는 이 순서도(그래프)를 실제로 '실행'시켜주는 엔진 역할을 합니다. invoke를 호출하면, 이 엔진이 input부터 시작해서 model, tools 노드 사이를 순환하다가 finish 신호가 오면 output을 뱉어내는 것입니다.
제공해주신 이미지는 **Agent가 작동하는 '지도' 또는 '순서도'**입니다.
input**으로 시작합니다.model**이 다음 할 일을 결정합니다.action → tools → observation 순서로 도구를 사용합니다.observation)는 다시 **model**로 돌아가 다음 결정을 돕습니다.model이 일이 끝났다고 판단하면 finish → **output**으로 최종 답변을 반환합니다.이 전체 구조를 LangChain에서는 LangGraph라고 부르며, create_agent는 이 표준 그래프를 쉽게 만들 수 있도록 도와주는 기능입니다.