LLM

[LLM/sLLM/sLM] Langchain 정의, 기능, 사용 방법

sunning 2024. 8. 24. 15:00
728x90
반응형

LangChain

  • 언어 모델을 활용해 다양한 어플리케이션을 개발할 수 있는 프레임워크, SDK (Software development kit)
  • 한 개 이상의 LLM 사이에 논리적으로 연결된 Chains를 생성할 수 있는 기능 제공
  • LangChain을 사용하면 복잡한 데이터 처리, 다양한 모델 연동, 시스템 통합 등 더 체계적이고 유연한 솔루션을 제공 가능
  • 장기적으로 확장성과 유지보수 측면에서 유리

 

LangChain의 주요 기능

  • 모델 연동
    • LangChain은 다양한 LLM(대형 언어 모델)과 쉽게 연동할 수 있도록 설계됨
    • OpenAI, Hugging Face, Cohere 등 여러 모델 공급자의 API를 지원하여, 원하는 모델을 손쉽게 사용할 수 있음
  • 체계적인 파이프라인 구성
    • LangChain은 복잡한 NLP 파이프라인을 구성하는 데 도움을 줌
    • 데이터 전처리, 모델 호출, 후처리 등 여러 단계를 유연하게 조합하여 효과적인 작업 흐름을 구축할 수 있음
  • 대화형 애플리케이션 구축
    • 대화형 시스템, 챗봇, 질의 응답 시스템 등 대화형 애플리케이션을 구축할 때 유용한 기능 제공
    • 사용자의 질문을 처리하고 적절한 응답을 생성하는 데 필요한 도구 제공
  • 데이터베이스 및 외부 소스 통합
    • 외부 데이터베이스나 API와 통합하여 모델의 출력을 보강하는 데 도움을 줌
    • 예를 들어, 특정 도메인 지식을 모델의 응답에 통합할 수 있음
  • 커스터마이징 및 파인튜닝
    • 모델을 파인튜닝하거나 커스터마이징하여 특정 도메인이나 작업에 맞게 조정할 수 있는 기능을 제공
  • 프로그래밍적 유연성
    • Python으로 작성된 LangChain 코드는 다양한 NLP 작업에 적합한 커스터마이징과 조정이 가능

SLM 모델 구축에서 LangChain 활용 방법

  • 모델 선택 및 통합
    • LangChain으로 여러 LLM 쉽게 통합 가능 (특정 작업에 적합한 모델 선택 > LangChain 파이프라인에 통합하여 사용)
  • 데이터 전처리 및 후처리
    • 데이터를 모델에 입력하기 전에 전처리하고, 모델의 출력을 후처리하여 원하는 형태로 변환하는 과정에서 LangChain의 기능을 활용 가능
  • 대화형 애플리케이션
    • LangChain은 대화형 애플리케이션을 구축하는 데 도움 (챗봇 시스템을 구축할 때 사용자의 질문에 적절한 답변을 생성하고, 대화의 흐름을 관리하는 데 유용)
  • 특정 도메인 지식 통합
    • 의료, 법률, 금융 등의 분야에서 도메인 지식을 모델의 학습과 응답에 포함 가능
  • 파이프라인 구축
    • 복잡한 작업을 자동화하고, 데이터 흐름을 체계적으로 관리 가능 (입력 데이터 처리, 모델 입력, 출력 분석 전체 과정의 자동화를 구현 가능)

SLM 모델 구축에서 LangChain 활용 예시

대화형 질문 응답 시스템 구축 (사용자가 입력한 질문에 대해 적절한 답변을 생성)

  • LangChain 사용하지 않는 경우
    • Hugging Face의 Transformers 라이브러리를 사용하여 간단한 질문 응답 시스템 구축
from transformers import pipeline

# Hugging Face의 Transformers 라이브러리에서 '질문 응답' 파이프라인 로드
qa_pipeline = pipeline("question-answering")

# 질문과 문서 입력
context = """
The Eiffel Tower is a wrought-iron lattice tower on the Champ de Mars in Paris, France. 
It was named after the engineer Gustave Eiffel, whose company designed and built the tower.
"""
question = "Who designed the Eiffel Tower?"

# 모델을 사용하여 질문에 대한 답변 생성
result = qa_pipeline(question=question, context=context)
print(result['answer'])
  • 장점: 간단하고 직접적으로 라이브러리의 기본 기능을 빠르게 활용 가능 (단일 작업에 효율적)
  • 단점: 복잡한 파이프라인 구축이나, 다양한 데이터 소스와 통합에 한계가 있음 (코드가 장기적으로 복잡해질 수 있으며, 여러 작업을 조합할 때 관리가 어려움)
  • LangChain을 사용하는 경우
from langchain.chains import LLMChain

from langchain.prompts import PromptTemplate

# OpenAI 모델 로드
# from langchain import OpenAI
# model = OpenAI(model_name="text-davinci-003")

# from langchain_openai import OpenAI
from langchain_openai import ChatOpenAI
# model = ChatOpenAI(model="gpt-4")
model = ChatOpenAI(model="gpt-3.5-turbo")

# 프롬프트 템플릿 설정
prompt_template = PromptTemplate(
    input_variables=["question", "context"],
    template="Context: {context}\nQuestion: {question}\nAnswer:"
)

# 체인 설정
qa_chain = LLMChain(llm=model, prompt=prompt_template)

# 질문과 문서 입력
context = "The Eiffel Tower is a wrought-iron lattice tower in Paris, France."
question = "Who designed the Eiffel Tower?"

# LangChain을 사용하여 질문에 대한 답변 생성
result = qa_chain.run(question=question, context=context)
print(result)

 

  • 장점
    • 체계적: 복잡한 파이프라인을 체계적으로 구성 가능 > 여러 단계의 처리와 데이터 통합을 간편하게 관리 가능
    • 유연성: 다양한 LLM과 외부 데이터 소스를 통합 가능 > 특정 요구사항에 맞게 모델을 커스터마이즈 가능
    • 확장성: 단순한 작업부터 복잡한 NLP 애플리케이션까지 유연하게 확장 가능 > 복잡한 워크플로우나 데이터 처리 과정이 필요한 경우 유용
  • 단점
    • 복잡성: 처음 사용 시 LangChain의 설정과 구성이 복잡
LangChain 모듈 기능 및 용도
langchain.core - LangChain의 핵심 기능과 기본 구성 요소를 포함
- 체인(Chain), LLM(대형 언어 모델), 프롬프트 템플릿(Prompt Templates) 등 LangChain의 핵심적인 클래스와 메서드 포함
- 언어 모델을 구성하고, 질문 응답, 생성 모델, 파이프라인 설정 등 기본적인 작업을 수행하는 데 사용
langchain.templates - 프롬프트 템플릿을 생성하고 관리하는 데 사용
- 프롬프트 템플릿은 모델에게 입력 데이터를 어떻게 형식화할지 정의하는 데 도움
langchain.community - LangChain의 사용자와 개발자 커뮤니티와 관련된 리소스, 포럼, 지원 등과 관련된 기능을 제공
langserve - LangChain 모델을 배포하고 서비스를 제공하는 데 필요한 도구와 서비스를 포함
langchain.llms - 다양한 대형 언어 모델(LLM)을 통합하고 관리하는 모듈
- OpenAI GPT, Hugging Face Transformers 등 다양한 모델을 지원
- 언어 모델을 로드하고 설정하는 데 필요한 도구를 제공
langchain.chains - 복잡한 NLP 파이프라인과 체인을 구축하는 데 필요한 도구와 클래스를 포함
- 예) 질문 응답, 텍스트 요약, 데이터 변환 등 여러 작업을 순차적으로 처리 가능

 

728x90
반응형