LangChain 독학 가이드 5 - 다양한 LLM 연결하기
지금까지는 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)
실행 결과:
주요 파라미터
- 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)
실행 결과:
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)
실행 결과:
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)
실행 결과:
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")
실행 결과:
환경 변수 정리
여러 모델을 쓸 때는 .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 응답을 원하는 형식으로 가공하는 방법을 알아볼게요!