방명록
- [LLM] 왜 LangChain 같은 프레임워크를 사용할까?2025년 04월 29일 10시 43분 37초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
1. 왜 LangChain 같은 프레임워크를 사용할까? (단순 API 호출과의 차이점)
"그냥 ChatGPT API 쓰면 되는 거 아니에요?" 라는 질문을 받을 수 있다. 이 질문에 대한 답변을 다음과 같이 해볼 수 있겠다.
"네, 맞습니다. OpenAI 같은 LLM API만 사용해도 간단한 챗봇이나 글 요약 같은 기능은 만들 수 있습니다. 하지만 우리가 만들고 싶은 '진짜 쓸모있는' 애플리케이션은 그것만으로는 부족할 때가 많습니다."
"LLM API를 '아주 똑똑하지만 자기 방에만 있는 천재'라고 생각해보세요. 방 안의 지식(학습 데이터)은 풍부하지만, 몇 가지 한계가 있습니다."
- "최신 정보나 우리 회사 내부 자료는 몰라요."
- API만으로는 LLM이 학습한 시점 이후의 정보나, 외부에 공개되지 않은 회사 내부 문서를 알 방법이 없다.
- → 해결책: RAG (Retrieval-Augmented Generation)! 천재에게 '최신 뉴스 스크랩'이나 '회사 내부 규정집'(Vector DB)을 참고해서 답변하도록 가르치는 기술이다. (Chroma, FAISS 등 활용)
- "다른 도구를 사용할 줄 몰라요."
- API만으로는 LLM이 스스로 웹 검색을 하거나, 계산기를 쓰거나, 다른 프로그램(API)을 호출할 수 없다.
- → 해결책: Agents & Tools! 천재에게 '스마트폰'(웹 검색 도구)이나 '계산기', '다른 전문가에게 전화하는 법'(API 호출 도구) 등을 사용하는 방법을 알려주는 것이다.
- "복잡한 일을 시키면 금방 헷갈려요."
- 여러 단계를 거쳐야 하는 복잡한 요청(예: "A 문서를 요약하고, B 문서와 비교해서 표로 만들고, 이메일 초안을 써줘")을 API 호출 한 번으로 처리하기는 어렵고, 개발자가 중간 과정을 일일이 관리해야 한다.
- → 해결책: LangChain (LCEL, Chains)! 천재에게 '업무 매뉴얼'이나 '단계별 작업 지시서'를 주어, 복잡한 요청도 체계적으로 처리하도록 돕는 '틀' 또는 '조립 설명서' 역할을 한다.
- "대화 내용을 자꾸 잊어버려요."
- API는 기본적으로 이전 대화 내용을 기억하지 못한다(Stateless). 매번 전체 대화 내용을 알려줘야 해서 비효율적이다.
- → 해결책: Memory! 천재가 이전 대화 내용을 효율적으로 기억하고 활용할 수 있도록 '메모장'이나 '대화 기록 시스템'을 제공하는 것이다.
결론적으로 LangChain 같은 프레임워크는:
- LLM의 한계를 극복하고 (외부 데이터 접근, 도구 사용)
- 복잡한 애플리케이션 개발을 더 쉽고 체계적으로 만들어주며 (워크플로우 관리)
- 반복적인 코드를 줄여 생산성을 높여주는 'LLM 애플리케이션 개발 필수 도구 키트' 라고 할 수 있다.
"단순 API 호출이 '구슬'이라면, LangChain은 이 구슬들을 꿰어 멋진 '목걸이'(애플리케이션)를 만들 수 있게 해주는 '실'과 '도구'인 셈이다."
2. 핵심 기술(개발 흐름에 따른 순서)
LLM 애플리케이션을 개발하는 일반적인 흐름에 따라 핵심 기술들을 논리적으로 배치하면 다음과 같다.
- LLM 선정 및 기본 연결 (The Engine):
- LLM APIs (OpenAI 등) / Hugging Face / Ollama: 어떤 '두뇌'를 사용할지 선택하고 기본적인 API 호출을 통해 LLM과 '대화'하는 방법이다. (Ollama/Hugging Face는 다양한 모델 선택지와 로컬 구동 가능성을 열어준다.)
- LLM과의 소통 방식 정의 (Communication):
- Prompt Engineering / Templates (LangChain): LLM에게 원하는 답변을 효과적으로 얻어내기 위해 질문(프롬프트)을 구조화하고 템플릿화하는 방법이다.
- 애플리케이션 뼈대 구축 (The Framework):
- LangChain Core / LCEL (LangChain Expression Language) / Runnable: LLM 호출, 프롬프트 관리, 결과 파싱 등 다양한 구성요소를 마치 파이프라인처럼 연결하여 애플리케이션의 기본적인 로직 흐름을 만드는 방법이다. (LLM 앱 개발의 핵심 뼈대)
- LLM 지식 확장 (Making it Smarter - RAG Pipeline):
- 데이터 준비 - Document Loaders / Splitters (LangChain): 외부 문서(PDF, TXT, 웹페이지 등)를 불러와 AI가 이해하기 좋은 형태로 자르는 방법이다.
- 데이터 벡터화 - Embeddings: 텍스트 데이터를 LLM이 유사성을 비교할 수 있는 숫자 벡터로 변환하는 방법이다.
- 벡터 저장소 구축 - Vector Stores (Chroma, FAISS): 변환된 벡터 데이터를 효율적으로 저장하고 검색할 수 있는 특수한 데이터베이스이다.
- 정보 검색 - Retrieval (LangChain) 사용자의 질문과 가장 관련성 높은 정보를 벡터 저장소에서 찾아내는 기술이다.
- RAG 구현: 위 요소들을 결합하여, 검색된 정보를 바탕으로 LLM이 답변을 생성하는 RAG(Retrieval-Augmented Generation) 패턴을 구현한다. (LLM이 최신/내부 정보를 알게 하는 핵심 기술)
- LLM 행동 능력 부여 (Making it Act):
- Agents & Tools (LangChain): LLM이 단순히 텍스트만 생성하는 것을 넘어, 웹 검색, 계산, 다른 API 호출 등 외부 '도구'를 스스로 판단하여 사용하도록 만드는 '에이전트' 개발 방법이다.
- 더 복잡한 워크플로우 설계 (Advanced Workflows):
- LangGraph: 여러 단계의 추론, 조건 분기, 반복 등이 필요한 복잡하고 상태(State)를 가지는 에이전트나 워크플로우를 시각적인 그래프 구조로 설계하고 구현하는 방법이다. (고급 에이전트 개발)
- 애플리케이션 품질 관리 (Building & Refining):
- LangSmith: 개발한 LLM 애플리케이션(체인, 에이전트)의 작동 과정을 추적하고, 문제점을 진단(디버깅)하며, 성능을 평가하고 모니터링하는 방법이다. (신뢰성 있는 앱 개발 필수)
- 사용자 인터페이스 제작 (Making it Usable):
- Streamlit, Gradio: 개발한 LLM 애플리케이션을 다른 사람들도 쉽게 사용할 수 있도록 간단한 웹 기반 UI를 빠르게 만드는 방법이다. (결과물 시연 및 공유 용이)
728x90반응형'AI' 카테고리의 다른 글
[LLM] LangGraph에서 GraphRecursionError 해결하기: 올바른 상태 관리의 중요성 (0) 2025.05.05 [LLM] 에이전트 리즈닝(Agent Reasoning) (0) 2025.04.29 BGE M3 임베딩 모델: 왜 사용하며 Llama 3와 무엇이 다른가? (0) 2025.04.24 이제 까먹지 마! 모델 컨텍스트 프로토콜(MCP) 쉽게 이해하기 (1) 2025.04.18 바이브 코딩(Vibe Coding)이 뭘까? (0) 2025.03.21 다음글이 없습니다.이전글이 없습니다.댓글 - "최신 정보나 우리 회사 내부 자료는 몰라요."