랭체인을 활용하면 얼마나 편리할까? 예제 코드 비교

1. 랭체인을 활용한 개발의 장점

최근 인공지능(AI) 및 대규모 언어 모델(LLM)을 활용한 애플리케이션 개발이 활발해지고 있다. 하지만, 기존 방식으로 LLM을 직접 호출하는 것은 코드가 복잡해지고 유지보수가 어렵다는 단점이 있다. 이런 문제를 해결하기 위해 등장한 것이 바로 **랭체인(LangChain)**이다.

랭체인은 개발자가 LLM을 보다 쉽게 활용할 수 있도록 다양한 기능을 제공하는 라이브러리로, 이를 활용하면 코드의 양을 줄이고 복잡도를 낮출 수 있다. 이번 글에서는 랭체인을 활용한 코드와 기존 방식의 코드를 비교하면서, 얼마나 편리한지를 살펴보겠다.

2. 기존 방식 vs. 랭체인 방식 코드 비교

LLM을 활용하여 간단한 질문-응답 챗봇을 만들 때, 기존 방식과 랭체인을 사용한 방식의 차이를 살펴보자.

2.1 기존 방식(OpenAI API 직접 호출)

먼저, OpenAI의 GPT 모델을 직접 호출하는 일반적인 코드이다.

import openai

def ask_gpt(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    return response["choices"][0]["message"]["content"]

print(ask_gpt("Python이란 무엇인가?"))

❌ 기존 방식의 문제점

  • API 요청을 위해 직접 HTTP 호출을 구성해야 함
  • 응답을 파싱하는 과정이 필요
  • 추가적인 기능(예: 프롬프트 템플릿, 입력 데이터 관리 등)을 직접 구현해야 함

2.2 랭체인을 활용한 방식

이제 같은 기능을 랭체인을 사용하여 구현해 보자.

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage

chat = ChatOpenAI(model_name="gpt-3.5-turbo")
response = chat.invoke([HumanMessage(content="Python이란 무엇인가?")])
print(response.content)

✅ 랭체인 방식의 장점

  • API 호출이 간결해지고 코드가 짧아짐
  • 응답 처리가 자동화됨
  • 프롬프트 관리를 쉽게 할 수 있음

위 예제에서 볼 수 있듯이, 랭체인을 사용하면 불필요한 코드가 줄어들고, 보다 직관적인 방식으로 LLM을 활용할 수 있다.

3. 랭체인을 활용한 다양한 기능 확장

기본적인 질문-응답 기능 외에도 랭체인은 여러 기능을 제공하여 개발을 더욱 편리하게 만든다.

3.1 프롬프트 템플릿 사용

기존 방식에서는 매번 사용자 입력을 직접 문자열로 처리해야 하지만, 랭체인을 사용하면 템플릿을 활용하여 더욱 체계적으로 관리할 수 있다.

from langchain.prompts import PromptTemplate

prompt = PromptTemplate(
    input_variables=["topic"],
    template="{topic}에 대해 쉽게 설명해줘."
)

formatted_prompt = prompt.format(topic="Python")
print(formatted_prompt)  # "Python에 대해 쉽게 설명해줘."

3.2 외부 데이터 활용

랭체인을 활용하면 OpenAI API뿐만 아니라 PDF, CSV 등 다양한 데이터를 손쉽게 가져와 사용할 수 있다.

from langchain.document_loaders import PyPDFLoader

loader = PyPDFLoader("sample.pdf")
documents = loader.load()
print(documents[0].page_content)  # PDF의 첫 페이지 내용 출력

✅ 확장성 높은 기능 제공

  • 프롬프트 템플릿을 활용하여 코드 재사용성이 높아짐
  • 외부 데이터(PDF, CSV 등)를 직접 불러와 활용 가능
  • LLM과 다양한 서비스(API, 데이터베이스) 연동이 용이함

4. 랭체인을 사용할 때 고려해야 할 점

랭체인은 강력한 기능을 제공하지만, 몇 가지 유의해야 할 점이 있다.

  • 빠른 업데이트 주기: 랭체인은 지속적으로 업데이트되므로, 버전별 변경 사항을 체크해야 한다.
  • 기능 학습 필요: 기존 방식과 차이가 있어 초반에는 학습이 필요할 수 있다.
  • 외부 의존성: 일부 기능은 추가적인 라이브러리를 필요로 할 수 있다.

5. 결론

기존 방식과 랭체인을 활용한 방식을 비교해 본 결과, 랭체인을 사용하면 코드의 복잡도를 줄이고 개발 생산성을 높일 수 있음을 확인할 수 있다. 특히, 프롬프트 관리, 외부 데이터 연동, 응답 처리 등 다양한 기능이 자동화되어 개발자가 핵심 로직에 집중할 수 있다는 점이 가장 큰 장점이다.

앞으로 랭체인의 다양한 활용법과 실전 예제들을 통해 더욱 깊이 있는 내용을 다뤄보겠다.

Leave a Comment