My AI Smarteasy 사용자 정의 AI 에이전트 – 일타 강사 저스틴 – LangChain 1.0과 LangGraph 1.0 – AI 에이전트 개발의 새 지평을 열다!
Building LangChain and LangGraph 1.0 – YouTube
오늘은 LangChain 유튜브 채널의 “Building LangChain and LangGraph 1.0” 영상을 분석하여, LangChain과 LangGraph의 최신 1.0 릴리즈가 왜 중요한지, 그리고 어떻게 여러분의 AI 에이전트 개발을 프로덕션 수준으로 끌어올릴 수 있는지 명쾌하게 정리해 드리겠습니다. 이 강의만 들으면 여러분의 에이전트 개발 실력이 한 단계 업그레이드될 거예요!
🚀 LangChain 1.0과 LangGraph 1.0: AI 에이전트 개발의 새 지평을 열다!
LangChain의 시작: ‘쉬운 시작’의 마법사 ✨
LangChain은 약 3년 전 처음 출시되었을 때, 두 가지 핵심 축을 중심으로 발전했습니다.
첫째, OpenAI, Cohere, Hugging Face 같은 다양한 모델들과의 통합을 제공했어요. 마치 여러 브랜드의 가전제품을 한 리모컨으로 조종할 수 있게 해준 거죠. 둘째, RAG(Retrieval-Augmented Generation)나 SQL 에이전트 같은 복잡한 기능을 단 다섯 줄의 코드로 구현할 수 있는 고수준 인터페이스를 제공했습니다.
자, 여기 별표 세 개! 초기 LangChain의 목표는 ‘가능한 한 쉽게 시작할 수 있게 하는 것‘이었습니다. 즉, 초보 개발자도 AI 에이전트 개발의 문턱을 쉽게 넘을 수 있도록 돕는 데 집중했죠. 마치 처음 요리 배우는 분들을 위한 ‘만능 양념장’ 같았다고 할까요? 이걸 쓰면 웬만한 요리는 뚝딱 만들 수 있었죠.
LangGraph의 등장: 프로덕션의 ‘제어’를 잡아라! 🎯
하지만 시간이 흐르고 AI 산업이 성숙하면서, 사람들은 단순히 프로토타입을 만드는 것을 넘어 프로덕션 환경에서 실제로 작동하는 안정적인 에이전트를 원하기 시작했습니다. 여기서 문제가 발생했죠. LangChain은 시작은 쉬웠지만, 내부적으로 숨겨진 프롬프트나 컨텍스트 엔지니어링 같은 ‘블랙박스’ 요소들 때문에 세밀한 제어가 어려웠습니다.
이런 갈증을 해소하기 위해 약 1년 반 후에 LangGraph가 탄생합니다! LangGraph의 핵심은 바로 ‘제어 가능성(Controllability)’입니다. 마치 만능 양념장만으로는 고급 코스 요리를 만들 수 없듯이, 에이전트가 복잡해지면서 나만의 레시피가 필요해진 거죠. LangGraph는 일반 소프트웨어 개발처럼 원하는 대로 커스터마이징하고 확장할 수 있게 해줍니다.
이거 시험에 나와요! 모델의 ‘역량’과 ‘신뢰성’ 사이의 간극을 메우는 것이 핵심입니다.
- 예상치 못한 상황: 수많은 사용자가 에이전트와 상호작용하면서 전혀 예상치 못한 입력이 들어올 수 있습니다. 이때 에이전트가 엉뚱한 행동을 하지 않도록 프롬프트를 섬세하게 조정하고 ‘가드레일’을 설정하는 반복적인 과정이 필요하죠.
- 장기 실행 에이전트: 에이전트가 한 번의 응답으로 끝나는 것이 아니라 장시간에 걸쳐 여러 작업을 수행할 경우, 오작동할 가능성이 커집니다. 이때는 더 정교한 제어 메커니즘이 필수적입니다.
에이전트 런타임: 안정적인 엔진을 장착하다 ⚙️
LangGraph는 단순한 제어만 제공하는 것이 아닙니다. 프로덕션 환경에서 에이전트가 안정적으로 작동하도록 돕는 강력한 런타임 기능도 함께 제공하죠.
- 내구성 있는 실행 환경 (Durable Execution): 에이전트가 장기간 작업하다가 오류가 발생해도, 처음부터 다시 시작할 필요 없이 문제가 발생한 지점부터 복구할 수 있습니다. 마치 비행기의 ‘블랙박스’처럼, 애플리케이션 상태를 캐싱해서 체크포인트에서 복구할 수 있게 해주는 거죠.
- 스트리밍 (Streaming): 장기 실행 에이전트의 경우, 사용자는 에이전트가 무슨 일을 하는지 궁금해할 수 있습니다. 스트리밍 기능을 통해 실시간으로 에이전트의 진행 상황을 보여주고, 필요하면 사용자가 개입하여 상호작용할 수 있게 해줍니다.
많은 분들이 여기서 헷갈리시는데요… 프로토타입 단계에서 파이썬 input() 명령어로 쉽게 구현했던 ‘Human-in-the-loop’이나 ‘스트리밍’ 기능이 프로덕션 환경에서는 구현하기 매우 어렵습니다. LangGraph는 이런 난관을 해결하며, 복잡한 에이전트 애플리케이션을 위한 든든한 런타임 기반을 마련했습니다.
LangChain 1.0: LangGraph의 힘을 빌려 더욱 강력해지다! 💪
이제 대망의 LangChain 1.0입니다! LangChain 1.0은 LangGraph 위에 재구축되었습니다. 이 말인즉슨, 기존 LangChain의 ‘쉬운 시작’이라는 장점과 LangGraph의 ‘프로덕션 수준 런타임 및 제어 가능성’이라는 장점을 모두 결합했다는 뜻이죠.
하지만 LangGraph가 노드, 엣지, 워크플로우 같은 개념 때문에 시작하기 다소 어려웠다는 피드백도 있었습니다. 이를 해결하기 위해 LangChain 1.0에서는 create_agent 추상화라는 핵심 기능을 도입했습니다.
create_agent 추상화: 에이전트의 ‘국민 레시피’ 👨🍳
별표 다섯 개! create_agent는 LangChain 1.0의 심장입니다. 이는 LangGraph 사용자들에게 익숙한 create_react_agent나 기존 LangChain 사용자들에게 친숙했던 chat_agent_executive와 같은, 이미 검증된 에이전트 패턴을 통합하고 대폭 개선한 것입니다.
업계에서는 LLM이 루프 내에서 도구를 호출하는 ‘핵심 에이전트 루프’ 패턴으로 대부분의 에이전트가 수렴하고 있다는 인식이 확산되고 있습니다. create_agent 추상화는 바로 이 핵심 패턴을 중심으로, 단 몇 줄의 코드로 에이전트를 쉽게 만들 수 있도록 돕습니다. 이건 마치 ‘국민 에이전트 레시피’를 제공하는 것과 같아요. 대부분의 에이전트가 이 패턴을 따르기 때문에, 이 레시피만 알면 맛있는 에이전트를 뚝딱 만들 수 있습니다.
미들웨어: 에이전트 루프에 나만의 ‘맞춤 양념’을! 🌶️
LangChain의 고수준 추상화는 시작하기 쉽지만, 때로는 세밀한 조정을 방해한다는 비판도 있었습니다. 이를 해결하기 위해 미들웨어(Middleware)가 등장했습니다.
미들웨어는 핵심 에이전트 루프의 어떤 지점에서든 개발자가 추가적인 로직을 삽입할 수 있게 해주는 마법 같은 기능입니다. 마치 요리 중간에 나만의 ‘맞춤 양념’을 추가하여 맛을 미묘하게 조절하는 것과 같습니다.
- 대화 요약 미들웨어: 모델 호출 전에 이전 대화 기록이 너무 길면 요약하여 전달할 수 있습니다. 장기 실행 에이전트의 ‘긴 메시지’ 문제를 해결해 주죠.
- Human-in-the-loop 미들웨어: 위험하거나 비용이 많이 드는 도구 호출 전에 사람의 승인을 받거나, 사람이 직접 수정할 수 있게 합니다. 에이전트의 폭주를 막는 안전장치인 셈이죠.
- 동적 프롬프트/도구 미들웨어: 상황에 따라 프롬프트나 사용할 도구를 유연하게 변경할 수 있습니다.
이 미들웨어 덕분에 LangChain은 ‘최고의 에이전트 프레임워크’로 차별화됩니다! 엄청난 수준의 커스터마이징이 가능해지거든요.
미들웨어 활용의 끝판왕: 다이내믹 모델 🔄
미들웨어 중에서도 특히 주목할 만한 것이 바로 다이내믹 모델 미들웨어입니다. 이는 컨텍스트에 따라 에이전트가 사용할 LLM을 동적으로 변경할 수 있게 해줍니다.
이제 하나의 ‘챔피언 모델’이 모든 걸 잘하는 시대는 끝났습니다! 코딩 작업에는 Anthropic, 추론에는 OpenAI, 멀티모달에는 Google 모델이 더 뛰어날 수 있듯이, 각 모델마다 특화된 영역이 존재합니다. 다이내믹 모델 미들웨어는 상황에 맞춰 가장 적합한 모델을 선택함으로써 에이전트의 성능을 극대화할 수 있도록 돕는 ‘스마트 비서’ 같은 역할을 합니다. 모델 스위칭은 이제 선택이 아닌 필수가 된 것이죠!
콘텐츠 블록: 모델 출력의 ‘국제 공용어’ 💬
LangChain이 처음 시작할 때만 해도 모델 메시지의 내용은 단순히 ‘문자열’이었습니다. 하지만 추론 모델이나 멀티모달 모델의 발전과 함께 메시지의 내용이 텍스트뿐만 아니라 이미지, 도구 호출 등 복합적인 형태로 바뀌면서 복잡해졌죠. 문제는 각 모델 공급자마다 이 ‘콘텐츠 블록’의 형식이 달라서, 모델을 교체하면 스트리밍 코드 등이 망가지는 경우가 허다했습니다.
LangChain 1.0은 이런 혼란을 해결하기 위해 콘텐츠 블록(Content Blocks)을 표준화된 형태로 제공합니다. 이는 마치 각기 다른 언어를 쓰는 모델들이 같은 ‘국제 공용어’를 쓰게 만드는 것과 같습니다. 개발자들은 모델이 바뀌어도 메시지 형식이 일관되게 유지되므로, 애플리케이션을 훨씬 안정적으로 구축할 수 있게 됩니다.
LangChain vs LangGraph: 언제 무엇을 쓸까? 🤔
자, 그럼 가장 중요한 질문입니다. 언제 LangChain을 써야 하고, 언제 LangGraph를 써야 할까요?
1. LangChain 1.0:
- 초보자 및 대부분의 에이전트 개발자: 새로운
create_agent추상화를 통해 에이전트 구축이 훨씬 쉬워졌습니다. 시작하기 쉬울 뿐만 아니라,create_agent의 기능을 통해 할 수 있는 작업의 ‘상한선’도 높아졌어요. - 핵심 패턴 에이전트: ‘LLM이 도구를 호출하며 루프를 도는’ 기본적인 에이전트 패턴에 적합합니다.
- 간단한 커스터마이징: 미들웨어를 통해 충분히 유연하게 로직을 추가하고 싶을 때 좋습니다.
2. LangGraph:
- 극도로 커스텀한 워크플로우: LangChain의
create_agent의 한계를 넘어서는, 매우 복잡하고 맞춤화된 워크플로우를 디자인해야 할 때입니다. - 확정적(Deterministic) 및 에이전트적(Agentic) 컴포넌트 결합: 확정적인 단계와 LLM 기반의 에이전트적인 단계를 명시적으로 조합해야 할 경우 LangGraph가 빛을 발합니다.
- 높은 구성 가능성: LangChain의
create_agent로 만든 에이전트를 LangGraph 워크플로우의 한 단계(노드)로 활용하는 등, 높은 수준의 구성 가능성이 필요할 때 사용합니다.
별표 세 개! 저스틴은 이렇게 추천합니다. “일단 LangChain 1.0으로 시작하세요! 쉽고 강력합니다. 그러다가 ‘아, 이거 LangChain만으로는 안 되겠는데?’ 하는 벽에 부딪히면 그때 LangGraph로 넘어가는 게 국룰입니다!”
오늘의 정리
오늘 LangChain 1.0과 LangGraph 1.0의 출시 소식을 함께 파헤쳐봤는데요, 핵심은 다음과 같이 3줄로 요약할 수 있습니다.
- LangChain 1.0은 LangGraph 위에 재구축되어, 쉬운 시작과 프로덕션 수준의 안정성을 동시에 잡았습니다.
create_agent추상화와 강력한 미들웨어 시스템을 통해 에이전트 구축이 더욱 쉽고 유연해졌습니다.- LangChain은 일반적인 에이전트 개발에, LangGraph는 극도로 맞춤화된 복합 워크플로우 구축에 최적화되어 있습니다.
특히 LangChain 팀이 강조한 **”더 이상 하나의 챔피언 모델은 없다”**는 메시지는 정말 중요합니다. 이제는 상황에 맞춰 최적의 모델을 선택하고, 미들웨어를 활용해 에이전트를 유연하게 만드는 것이 핵심이라는 점을 잊지 마세요!
여러분도 오늘부터 pip install langchain 또는 npm install langchain으로 1.0 버전을 설치하고, 직접 에이전트를 만들어 보면서 create_agent와 미들웨어의 마법을 경험해 보시길 추천드립니다.
