해당 포스트는 인프런에서 "AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)" 강의를 듣고 정리한 내용입니다.
LLM 을 이용한 생성형 AI 가 만들어지고 나서 어느 순간 AI Agent 라는 키워드가 자주 들리기 시작했다.
그래서 AI Agent 와 관련된 강의를 들으면서 AI Agent 가 무엇인지 알아보면서 정리해보려고 한다.
에이전트(Agent) 가 무엇인가
에이전트는 특정 목표를 달성하기 위해서 자율적으로 행동하고 결정을 내리는 AI 시스템이라고 한다.
여기서 중요한 점은 자율적으로 행동한다는 부분에 초점을 맞추어서 이해하면 된다.
AutoGen, Crew AI, LangGraph 와 같은 새롭게 등장한 프레임워크들은 멀티 에이전트 문제 해결 방식을 구축하는 다양하고 풍부한 방법을 제공하고 있다.
또한 LangGraph 에서는 에이전트를 LLM 을 사용하여 애플리케이션의 제어 흐름을 결정하는 시스템 으로 정의하고 있다.
Agent Architectures
LLM 을 제어하기위한 방법에는 여러가지가 있다고 한다.
두 개의 잠재적 경로 사이를 라우팅할 수 있는 방법이 있고
여러 도구 중 어떤 도구를 호출할지 결정할 수도 있고
생성된 답변이 충분한지 또는 더 많은 작업이 필요한지 결정할 수 있다.
결과적으로 다양한 유형의 에이전트 아키텍처가 존재한다.
LangGraph 문서를 확인해보면 에이전트 아키텍처에 대해서 설명해주고 있다.
아래의 그림에서 보는 것과 같이 Router 의 경우 쿼리를 입력받아 LLM 이 선택할 수 있는 경로가 주어지게 되면서 자율성이 낮은 에이전트라고 할 수 있고 Fully Autonomous 의 경우 ReAct 방식으로 LLM 이 어떤 도구를 선택할지 그리고 어떤 작업이 필요한지 스스로 결정하는 자율성이 높은 에이전트라고 할 수 있다.
랭그래프(LangGraph) 란 무엇인가
앞서 에이전트를 사용하기 위한 프레임워크 중 하나인 랭그래프를 사용할 수 있는데 랭그래프를 사용하기 위해서는 무엇인지 알아야 한다.
랭그래프는 대규모 언어 모델을 활용한 복잡한 워크플로우와 의사결정 프로세스를 구현할 수 있는 프레임워크라고 한다.
멀티 에이전트 기반의 LLM 애플리케이션을 효과적으로 만들 수 있는 강력한 기술이고 랭체인(LangChain) 팀에서 직접 지원하는 프레임워크이기 때문에 랭체인과 호환이 잘 된다고 볼 수 있다.
랭그래프의 워크플로우를 보면 노드들이 있고 노드를 연결하는 엣지가 있다. 노드에서 행동을 하게 되고 행동의 결과를 통해 다음 노드로 이동하게 되면서 프로세스를 만들어줄 수 있다. 그리고 노드 간의 이동하는 과정에서 조건을 설정해줄 수도 있고 루프 구조를 만들어줄 수 있다. 원하는 형태의 프로세스를 구축할 수 있는 프레임워크라고 볼 수 있다.
랭그래프 관련 문서는 아래에서 확인할 수 있다.
LangGraph
LangGraph LangGraph — used by Replit, Uber, LinkedIn, GitLab and more — is a low-level orchestration framework for building controllable agents. While langchain provides integrations and composable components to streamline LLM application development,
langchain-ai.github.io
랭체인(LangChain) 과 랭그래프(LangGraph) 의 차이점
랭체인은 개발 과정이 상대적으로 간단하지만 복잡한 워크플로우 관리에는 한계가 있다.
랭그래프는 랭체인 기반이지만 상태 기반 그래프 구조를 통해 복잡하고 동적인 워크플로우를 구성할 수 있다.
간단한 LLM 애플리케이션이나 RAG 같은 경우 랭체인으로만 구현이 가능하다.
정리
AI 에이전트가 무엇인지 간단하게 이해하는 정도로 알아보았는데 정리해보면 LLM 애플리케이션이 자율적으로 행동하고 결정할 수 있게 만든 시스템을 에이전트라고 하는 것으로 이해했고 이러한 에이전트를 효과적으로 만들 수 있게 제공하는 프레임워크인 LangGraph 에 대해서도 간단하게 알아보았다.
간단하게 에이전트가 무엇이고 랭그래프가 무엇인지 알아보았기 때문에 더 자세하게 직접 사용해보면서 어떤 기능이 있고 어떻게 동작하고 사용하는지 알아봐야겠다.