LLM 호출, 메모리 관리, 도구 연동, 에이전트 오케스트레이션을 하나의 인터페이스로 묶어주는 오픈소스 프레임워크. Python AI 에이전트 개발의 사실상 표준이다.
LLM에게 뭔가를 시키는 코드는 처음엔 단순하다. 프롬프트를 문자열로 만들어서 API로 던지고 답을 받으면 끝이다. 그런데 조금만 제대로 된 걸 만들려고 하면 금방 복잡해진다. 이전 대화를 기억하게 하려면 메모리를 붙여야 하고, 모델이 계산기나 검색 같은 외부 도구를 쓰게 하려면 도구 호출을 처리해야 하고, 답이 원하는 형식으로 안 나오면 다시 시키는 재시도 로직도 필요하다. 여기에 OpenAI를 쓰다가 Claude로 바꾸면 코드를 또 고쳐야 한다.
LangChain은 이 반복되는 뒤치다꺼리를 표준화된 인터페이스로 묶어 놓은 프레임워크다. 모델, 도구, 데이터베이스를 부품처럼 끼웠다 뺐다 할 수 있게 만들어서, 개발자가 애플리케이션의 핵심 로직에만 집중하도록 돕는다.
가장 많이 쓰이는 곳은 문서 기반 질의응답, 즉 RAG를 만들 때다. 문서를 잘게 쪼개고, 임베딩으로 바꿔 벡터 저장소에 넣고, 질문이 들어오면 관련 조각을 찾아 모델에게 함께 건네주는 이 흐름을 LangChain에서는 부품들을 파이프로 연결하듯 이어 붙이면 된다. 사내 문서를 읽고 답하는 챗봇 같은 걸 짧은 코드로 만들 수 있다.
2025년 말에 나온 1.0 버전에서 가장 크게 달라진 건 create_agent라는 함수다. 모델이 스스로 판단해서 도구를 골라 쓰고 그 결과를 보고 다음 행동을 정하는 이른바 에이전트 루프를, 이 함수 하나로 만들 수 있게 됐다. 여기에 미들웨어라는 개념이 붙는데, 에이전트가 도는 중간중간에 끼어들어 로그를 남기거나, 프롬프트를 손보거나, 개인정보를 걸러내거나, 요청 횟수를 제한하는 등의 처리를 갈아 끼우듯 추가할 수 있다.
단순한 에이전트를 넘어 조건에 따라 갈라지고 여러 갈래가 동시에 도는 복잡한 흐름이 필요하면 LangGraph를 쓴다. 작업을 그래프의 노드와 연결선으로 그리듯 설계하는 방식인데, 실제로 create_agent도 내부적으로는 이 LangGraph 위에서 돌아간다. LangGraph의 진짜 강점은 상태를 자동으로 저장해 둔다는 점이다. 서버가 중간에 죽거나 사람의 승인을 기다리며 멈춰도, 나중에 딱 그 지점부터 다시 이어서 진행할 수 있다. 오래 걸리는 작업이나 중간에 사람이 검토하고 넘어가야 하는 업무에 특히 잘 맞는다.
다만 편하게 시작할 수 있는 만큼 내부에서 무슨 일이 벌어지는지 감추는 층이 두꺼워서, 문제가 생겼을 때 원인을 추적하기 어렵다는 지적도 오래전부터 있었다. 그래서 실행 과정을 들여다보고 디버깅하는 LangSmith 같은 도구를 함께 쓰는 경우가 많다.