LangChain 기본 사용법

1. 설치

1
2
3
4
5
6
7
8
# 랭체인 : LLM 애플리케이션을 만들기 위한 Core Framework
pip install langchain

# 랭체인 OpenAI : OpenAI 모델을 LangChain에 연결시켜주는 Integration Package
pip install langchain-openai

# Google GenAI : Google 의 LLM 모델을 LangChain에 연결시켜주는 Integration Package
pip install langchain-google-genai

2. API 키 설정

  • LangChain 에서는 API 키를 설정하는 두 가지 방식이 있습니다.

(1) 환경변수에 API KEY 저장

  • 환경변수에 API KEY를 저장해놓으면, 패키지가 필요할 때 읽어들여 사용합니다.
  • OpenAI 모델은 OPENAI_API_KEY 환경변수에 저장하면 되며
  • Google 모델은 GOOGLE_API_KEY 환경변수에 저장하면 됩니다.
1
2
3
4
5
# OpenAI
from langchain_openai import ChatOpenAI

os.environ["OPENAI_API_KEY"] = "MyOpenAIAPIKey..."
model = ChatOpenAI(model="gpt-4o-mini")
1
2
3
4
5
# Google
from langchain_google_genai import ChatGoogleGenerativeAI

os.environ["GOOGLE_API_KEY"] = "MyGoogleAPIKey..."
model = ChatGoogleGenerativeAI(model="gemini-1.5-pro")

(2) 클라이언트를 선언할 때 API KEY를 할당

  • 외부 LLM 모델과 소통하는 클라이언트를 선언할 때 API KEY를 할당해줄 수도 있습니다.
1
2
3
4
# OpenAI
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4o-mini", api_key = "MyOpenAIAPIKey...")
1
2
3
4
# Google
from langchain_google_genai import ChatGoogleGenerativeAI

model = ChatGoogleGenerativeAI(model="gemini-1.5-pro", api_key="YOUR-API-KEY")

3. 모델 선언

(1) 선언 방법

  • Integration Package의 사용법에 따라 사용합니다.
  • 예를 들어 OpenAI는 langchain_openai.ChatOpenAI 의 인스턴스를 선언합니다.
  • Google은 langchain_google_genai.ChatGoogleGenerativeAI 의 인스턴스를 선언합니다.
  • 모델 인스턴스를 선언할 때에는, 사용할 모델(버전)의 종류를 지정합니다.
1
2
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4o-mini")

(2) 사용 가능한 OpenAI 모델

  • 자세한 내용은 OpenAI API DOC 참고
Model Model ID Description
GPT-5.4 gpt-5.4 Best intelligence at scale for agentic, coding, and professional workflows
GPT-5.4 mini gpt-5.4-mini Our strongest mini model yet for coding, computer use, and subagents
GPT-5.4 nano gpt-5.4-nano Our cheapest GPT-5.4-class model for simple high-volume tasks
GPT-4o mini gpt-4o-mini Fast, affordable small model for focused tasks
   

Models - OpenAI API

(3) 사용 가능한 Google 모델

  • 자세한 내용은 Google API DOC 참고
Model Model ID Description
Gemini 3.1 Pro gemini-3.1-pro-preview • 더 나은 사고력, 향상된 토큰 효율, 더 사실에 기반한 일관된 경험
• 정확한 도구 사용
• 안정적인 다단계 실행이 필요한 에이전트 워크플로에 최적화
Gemini 3 Flash gemini-3-flash-preview • 멀티모달 이해 부분에서 세계 최고 수준의 모델
• Google의 가장 강력한 에이전트형 및 바이브 코딩 모델
• 최첨단 추론을 기반으로 더 풍부한 시각화와 더 심층적인 상호작용
Gemini 3.1 Flash-Light gemini-3.1-flash-lite-preview • 가장 비용 효율적인 멀티모달 모델
• 고빈도 경량 작업에 가장 빠른 성능을 제공
• 대용량 에이전트 작업, 간단한 데이터 추출
• 지연 시간이 매우 짧은 애플리케이션에 가장 적합
Gemini 2.5 Flash gemini-2.5-flash • 가격 대비 성능이 가장 우수
• 다양한 기능을 제공하는 모델
• 사고가 필요한 대규모 처리, 짧은 지연 시간, 대량 작업
• 및 에이전트 사용 사례에 가장 적합
   

모델 - Gemini API Google AI for Developers

4. 메시지의 종류

  • LangChain 에서 메시지 객체는 사용자의 발화나 AI의 응답, 또는 시스템 메시지를 담습니다.
  • 메시지 클래스는 langchain_coremessages 모듈 안에 정의되어 있습니다.
  • 각 메시지의 인스턴스를 만들 때 content 파라미터에 메시지 내용을 넣습니다.
클래스 설명 openai 패키지에서는
HumanMessage 사용자의 발화를 담는 메시지 클래스 {”role”:”user”, “content”:…}
AIMessage LLM의 응답을 담는 메시지 클래스 {”role”:”assistant”, “content”:…}
SystemMessage 시스템 메시지 클래스 {”role”:”system”, “content”:…}
1
2
3
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

user_message = HumanMessage(content="안녕? 오늘 날씨 어때?)

5. LLM에 메시지 보내기

  • model 인스턴스의 invoke 메서드를 이용해 LLM과 메시지를 주고 받을 수 있습니다.
  • invoke 메서드는 파라미터로 list[Message] 형태의 값을 담아 보냅니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAI
import os

# API 키
os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"

# 모델 선언
model = ChatOpenAI(model="gpt-4o-mini")

# Message
messages = []
messages.append(HumanMessage(content="안녕? 내 이름은 Jongya야."))

# 메시지 보내기
response = model.invoke(messages)
print(response)
1
2
3
content='안녕하세요, Jongya! 만나서 반가워요. 어떻게 도와드릴까요?'
additional_kwargs={'refusal': None}
response_metadata={'token_usage': .... }

Stream 방식

  • stream 방식 출력을 위해서는 invoke 메서드 대신 stream 메서드를 사용하면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAI
import os

# API 키
os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"
model = ChatOpenAI(model="gpt-4o-mini")

response = model.stream(
    [HumanMessage(content="애국가를 불러줘.")]
)

for r in response:
    print(r.content, end="|")
1
2
|애|국|가|의| 일부|는| 다음|과| 같습니다|:
|"|동|해| 물|과| 백|두|산|이| 마|르고| 닳|도록|..."

Reference

Do it! LLM을 활용한 AI 에이전트 개발 입문 (이성용 저)
Models | OpenAI API
모델  |  Gemini API  |  Google AI for Developers

Comments