LangChain 독학 가이드 5 - 다양한 LLM 연결하기

learning by Seven Fingers Studio 16분
LangChainOpenAIClaudeGeminiOllamaLLM

지금까지는 OpenAI GPT만 사용했는데, 사실 LangChain은 거의 모든 LLM을 지원해요. Claude가 더 좋다는 말도 있고, 무료로 쓸 수 있는 Gemini도 있고, 내 컴퓨터에서 돌리는 Ollama도 있죠.

오늘은 다양한 LLM을 LangChain에 연결하는 방법을 알아볼게요. 같은 코드로 모델만 바꿔 끼우면 되니까 생각보다 간단해요!

OpenAI (GPT-4, GPT-3.5)

가장 기본이 되는 OpenAI부터 볼게요. 이미 앞에서 많이 써봤죠?

pip install langchain-openai
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI

load_dotenv()

# GPT-4 사용
gpt4 = ChatOpenAI(model="gpt-4")

# GPT-3.5 사용 (더 저렴)
gpt35 = ChatOpenAI(model="gpt-3.5-turbo")

# 파라미터 조절
model = ChatOpenAI(
    model="gpt-4",
    temperature=0.7,  # 창의성 (0~2, 높을수록 창의적)
    max_tokens=500    # 최대 출력 길이
)

response = model.invoke("파이썬의 장점을 알려줘")
print(response.content)

실행 결과:

파이썬의 주요 장점:
1. 배우기 쉬운 문법
2. 풍부한 라이브러리 생태계
3. 다양한 분야에 활용 가능
4. 활발한 커뮤니티 지원

주요 파라미터

  • temperature: 0이면 일관된 답변, 높을수록 창의적 (기본 0.7)
  • max_tokens: 최대 출력 토큰 수
  • model: 사용할 모델명 (gpt-4, gpt-4-turbo, gpt-3.5-turbo 등)

Anthropic Claude

Claude는 Anthropic에서 만든 AI예요. 긴 문맥을 잘 처리하고, 코딩도 잘한다고 평가받죠.

pip install langchain-anthropic

먼저 console.anthropic.com에서 API 키를 발급받으세요.

from langchain_anthropic import ChatAnthropic

# Claude 모델 초기화
claude = ChatAnthropic(
    model="claude-3-5-sonnet-20241022",
    api_key="your-anthropic-api-key"  # 또는 환경변수 ANTHROPIC_API_KEY
)

response = claude.invoke("자바스크립트와 타입스크립트의 차이점을 알려줘")
print(response.content)

실행 결과:

자바스크립트와 타입스크립트의 주요 차이점:
1. **타입 시스템**: 자바스크립트는 동적 타입, 타입스크립트는 정적 타입
2. **컴파일**: 타입스크립트는 컴파일 필요, 자바스크립트는 바로 실행
3. **에러 감지**: 타입스크립트는 컴파일 시점에 에러 발견 가능

Claude 모델 종류

  • claude-3-5-sonnet: 가장 똑똑하고 빠름 (추천!)
  • claude-3-opus: 가장 강력, 복잡한 작업용
  • claude-3-haiku: 가장 빠르고 저렴

Google Gemini

Gemini는 Google의 AI 모델이에요. 무료 티어가 넉넉해서 테스트하기 좋아요!

pip install langchain-google-genai

aistudio.google.com에서 API 키를 발급받으세요.

from langchain_google_genai import ChatGoogleGenerativeAI

gemini = ChatGoogleGenerativeAI(
    model="gemini-1.5-flash",
    google_api_key="your-google-api-key"  # 또는 환경변수 GOOGLE_API_KEY
)

response = gemini.invoke("React와 Vue의 차이점을 알려줘")
print(response.content)

실행 결과:

React와 Vue의 주요 차이점:
**React**
- Facebook에서 개발
- JSX 문법 사용
- 자유도가 높음
**Vue**
- 템플릿 기반 문법
- 학습 곡선이 낮음
- 공식 도구 제공

Gemini 모델 종류

  • gemini-1.5-flash: 빠르고 효율적 (일반 용도 추천)
  • gemini-1.5-pro: 더 강력, 복잡한 작업용
  • gemini-1.0-pro: 구버전

Ollama (로컬 모델)

Ollama는 내 컴퓨터에서 AI를 돌리는 거예요. 인터넷 없이도 되고, 비용도 무료! 다만 좋은 GPU가 필요해요.

Ollama 설치

먼저 ollama.com에서 Ollama를 설치하고, 원하는 모델을 다운로드하세요:

# Ollama 설치 후 터미널에서
ollama pull llama3.2      # Meta의 Llama 3.2
ollama pull mistral       # Mistral AI
ollama pull codellama     # 코딩 전용
pip install langchain-ollama
from langchain_ollama import ChatOllama

# 로컬 Llama 모델 사용
ollama = ChatOllama(model="llama3.2")

response = ollama.invoke("파이썬으로 피보나치 수열 출력하는 코드 짜줘")
print(response.content)

실행 결과:

def fibonacci(n):
a, b = 0, 1
for _ in range(n):
print(a, end=' ')
a, b = b, a + b
fibonacci(10) # 0 1 1 2 3 5 8 13 21 34

Ollama 장점

  • 무료: API 비용 0원
  • 프라이버시: 데이터가 외부로 안 나감
  • 오프라인: 인터넷 없이 사용 가능

Ollama 단점

  • 성능: GPT-4나 Claude보다는 떨어짐
  • 하드웨어: 최소 8GB RAM, GPU 권장

모델 비교하기

같은 질문을 여러 모델에 던져서 비교해볼 수 있어요:

from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
from langchain_google_genai import ChatGoogleGenerativeAI

# 모델들 초기화
models = {
    "GPT-4": ChatOpenAI(model="gpt-4"),
    "Claude": ChatAnthropic(model="claude-3-5-sonnet-20241022"),
    "Gemini": ChatGoogleGenerativeAI(model="gemini-1.5-flash")
}

question = "딥러닝을 초등학생에게 설명해줘"

for name, model in models.items():
    print(f"=== {name} ===")
    response = model.invoke(question)
    print(response.content[:200] + "...\n")

실행 결과:

=== GPT-4 ===
딥러닝은 컴퓨터가 사람처럼 배우는 방법이야. 우리가 여러 번 연습하면 잘하게 되는 것처럼...
=== Claude ===
딥러닝은 컴퓨터의 뇌라고 생각하면 돼! 마치 우리가 고양이 사진을 많이 보면 고양이를 알아보게 되는 것처럼...
=== Gemini ===
딥러닝은 로봇이 스스로 공부하는 거야. 선생님 없이도 많은 예제를 보면서 배우는 거지...

환경 변수 정리

여러 모델을 쓸 때는 .env 파일에 API 키를 모아두면 편해요:

OPENAI_API_KEY=sk-xxx
ANTHROPIC_API_KEY=sk-ant-xxx
GOOGLE_API_KEY=AIza-xxx
from dotenv import load_dotenv
load_dotenv()  # 이 한 줄로 모든 키가 로드됨

어떤 모델을 써야 할까?

상황별 추천:

  • 일반 용도: GPT-3.5-turbo (저렴하고 빠름)
  • 복잡한 추론: GPT-4 또는 Claude
  • 긴 문서 처리: Claude (컨텍스트 길이 김)
  • 무료로 테스트: Gemini (넉넉한 무료 티어)
  • 프라이버시 중요: Ollama (로컬)
  • 코딩 작업: Claude 또는 CodeLlama

정리

오늘 배운 내용:

  • ChatOpenAI: GPT 시리즈
  • ChatAnthropic: Claude 시리즈
  • ChatGoogleGenerativeAI: Gemini 시리즈
  • ChatOllama: 로컬 모델

LangChain의 장점은 모델을 쉽게 바꿀 수 있다는 거예요. 체인 코드는 그대로 두고 모델만 교체하면 되니까요. 다음 글에서는 출력 파서를 사용해서 AI 응답을 원하는 형식으로 가공하는 방법을 알아볼게요!


다음 글 보기

← 이전 글
LangChain 독학 가이드 4 - LCEL 체인 만들기
다음 글 →
LangChain 독학 가이드 6 - 출력 파서
← 블로그 목록으로