Dandy Now!
  • [LLM] 왜 LangChain 같은 프레임워크를 사용할까?
    2025년 04월 29일 10시 43분 37초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    1. 왜 LangChain 같은 프레임워크를 사용할까? (단순 API 호출과의 차이점)

     

    "그냥 ChatGPT API 쓰면 되는 거 아니에요?" 라는 질문을 받을 수 있다. 이 질문에 대한 답변을 다음과 같이 해볼 수 있겠다.

    "네, 맞습니다. OpenAI 같은 LLM API만 사용해도 간단한 챗봇이나 글 요약 같은 기능은 만들 수 있습니다. 하지만 우리가 만들고 싶은 '진짜 쓸모있는' 애플리케이션은 그것만으로는 부족할 때가 많습니다."

    "LLM API를 '아주 똑똑하지만 자기 방에만 있는 천재'라고 생각해보세요. 방 안의 지식(학습 데이터)은 풍부하지만, 몇 가지 한계가 있습니다."

     

    1. "최신 정보나 우리 회사 내부 자료는 몰라요."
      • API만으로는 LLM이 학습한 시점 이후의 정보나, 외부에 공개되지 않은 회사 내부 문서를 알 방법이 없다.
      • → 해결책: RAG (Retrieval-Augmented Generation)! 천재에게 '최신 뉴스 스크랩'이나 '회사 내부 규정집'(Vector DB)을 참고해서 답변하도록 가르치는 기술이다. (Chroma, FAISS 등 활용)
    2. "다른 도구를 사용할 줄 몰라요."
      • API만으로는 LLM이 스스로 웹 검색을 하거나, 계산기를 쓰거나, 다른 프로그램(API)을 호출할 수 없다.
      • → 해결책: Agents & Tools! 천재에게 '스마트폰'(웹 검색 도구)이나 '계산기', '다른 전문가에게 전화하는 법'(API 호출 도구) 등을 사용하는 방법을 알려주는 것이다.
    3. "복잡한 일을 시키면 금방 헷갈려요."
      • 여러 단계를 거쳐야 하는 복잡한 요청(예: "A 문서를 요약하고, B 문서와 비교해서 표로 만들고, 이메일 초안을 써줘")을 API 호출 한 번으로 처리하기는 어렵고, 개발자가 중간 과정을 일일이 관리해야 한다.
      • → 해결책: LangChain (LCEL, Chains)! 천재에게 '업무 매뉴얼'이나 '단계별 작업 지시서'를 주어, 복잡한 요청도 체계적으로 처리하도록 돕는 '틀' 또는 '조립 설명서' 역할을 한다.
    4. "대화 내용을 자꾸 잊어버려요."
      • API는 기본적으로 이전 대화 내용을 기억하지 못한다(Stateless). 매번 전체 대화 내용을 알려줘야 해서 비효율적이다.
      • → 해결책: Memory! 천재가 이전 대화 내용을 효율적으로 기억하고 활용할 수 있도록 '메모장'이나 '대화 기록 시스템'을 제공하는 것이다.

     

    결론적으로 LangChain 같은 프레임워크는:

    • LLM의 한계를 극복하고 (외부 데이터 접근, 도구 사용)
    • 복잡한 애플리케이션 개발을 더 쉽고 체계적으로 만들어주며 (워크플로우 관리)
    • 반복적인 코드를 줄여 생산성을 높여주는 'LLM 애플리케이션 개발 필수 도구 키트' 라고 할 수 있다.

    "단순 API 호출이 '구슬'이라면, LangChain은 이 구슬들을 꿰어 멋진 '목걸이'(애플리케이션)를 만들 수 있게 해주는 '실'과 '도구'인 셈이다."


    2. 핵심 기술(개발 흐름에 따른 순서)

    LLM 애플리케이션을 개발하는 일반적인 흐름에 따라 핵심 기술들을 논리적으로 배치하면 다음과 같다.

     

    1. LLM 선정 및 기본 연결 (The Engine):
      • LLM APIs (OpenAI 등) / Hugging Face / Ollama: 어떤 '두뇌'를 사용할지 선택하고 기본적인 API 호출을 통해 LLM과 '대화'하는 방법이다. (Ollama/Hugging Face는 다양한 모델 선택지와 로컬 구동 가능성을 열어준다.)
    2. LLM과의 소통 방식 정의 (Communication):
      • Prompt Engineering / Templates (LangChain): LLM에게 원하는 답변을 효과적으로 얻어내기 위해 질문(프롬프트)을 구조화하고 템플릿화하는 방법이다.
    3. 애플리케이션 뼈대 구축 (The Framework):
      • LangChain Core / LCEL (LangChain Expression Language) / Runnable: LLM 호출, 프롬프트 관리, 결과 파싱 등 다양한 구성요소를 마치 파이프라인처럼 연결하여 애플리케이션의 기본적인 로직 흐름을 만드는 방법이다. (LLM 앱 개발의 핵심 뼈대)
    4. 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이 최신/내부 정보를 알게 하는 핵심 기술)
    5. LLM 행동 능력 부여 (Making it Act):
      • Agents & Tools (LangChain): LLM이 단순히 텍스트만 생성하는 것을 넘어, 웹 검색, 계산, 다른 API 호출 등 외부 '도구'를 스스로 판단하여 사용하도록 만드는 '에이전트' 개발 방법이다.
    6. 더 복잡한 워크플로우 설계 (Advanced Workflows):
      • LangGraph: 여러 단계의 추론, 조건 분기, 반복 등이 필요한 복잡하고 상태(State)를 가지는 에이전트나 워크플로우를 시각적인 그래프 구조로 설계하고 구현하는 방법이다. (고급 에이전트 개발)
    7. 애플리케이션 품질 관리 (Building & Refining):
      • LangSmith: 개발한 LLM 애플리케이션(체인, 에이전트)의 작동 과정을 추적하고, 문제점을 진단(디버깅)하며, 성능을 평가하고 모니터링하는 방법이다. (신뢰성 있는 앱 개발 필수)
    8. 사용자 인터페이스 제작 (Making it Usable):
      • Streamlit, Gradio: 개발한 LLM 애플리케이션을 다른 사람들도 쉽게 사용할 수 있도록 간단한 웹 기반 UI를 빠르게 만드는 방법이다. (결과물 시연 및 공유 용이)
    728x90
    반응형
    댓글