LangChain과 ChatOpenAI로 AI 대화 시작하기

gclee·2026년 1월 21일

LangChain-RAG

목록 보기
1/13

준비 사항

  • Python 3.9 이상
  • OpenAI API 키 (OpenAI 플랫폼)
  • pip 또는 uv 패키지 관리자

라이브러리 설치

LangChain에서 OpenAI 모델을 사용하기 위해 필요한 패키지를 설치합니다.

pip install langchain-openai langchain-core
패키지설명
langchain-openaiOpenAI 모델 연동 (ChatOpenAI)
langchain-core메시지 타입 (HumanMessage, SystemMessage 등)

ChatOpenAI 객체 생성

OpenAI의 GPT 모델을 사용하기 위해 ChatOpenAI 객체를 생성합니다. API 키는 api_key 파라미터로 전달합니다.

from langchain_openai import ChatOpenAI

# ChatOpenAI 객체 생성
llm = ChatOpenAI(
    api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxx",  # OpenAI API 키
    model="gpt-4o-mini",
    temperature=0.7
)

주요 파라미터

파라미터설명
api_keyOpenAI API 키
model사용할 GPT 모델 지정 (예: gpt-4o-mini, gpt-4)
temperature응답의 창의성 조절 (0: 일관된 응답, 1: 다양한 응답)
max_tokens생성할 최대 토큰 수

메시지 타입 이해하기

LangChain에서는 대화를 구성하는 세 가지 메시지 타입을 제공합니다.

from langchain_core.messages import HumanMessage, SystemMessage, AIMessage

메시지 타입별 역할

메시지 타입역할예시
SystemMessageAI의 역할과 행동 방식 정의"너는 친절한 여행 가이드야"
HumanMessage사용자의 질문이나 요청"서울에서 가볼만한 곳 추천해줘"
AIMessageAI의 응답 (대화 기록용)"경복궁을 추천드립니다"

단일 메시지로 대화하기

가장 기본적인 대화 방식입니다.

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage

llm = ChatOpenAI(
    api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxx",
    model="gpt-4o-mini"
)

# 단일 메시지 전송
response = llm.invoke([HumanMessage(content="안녕하세요!")])
print(response.content)

시스템 메시지와 함께 대화하기

시스템 메시지로 AI의 역할을 설정할 수 있습니다.

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

llm = ChatOpenAI(
    api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxx",
    model="gpt-4o-mini"
)

# 시스템 메시지로 AI 역할 설정
messages = [
    SystemMessage(content="너는 친절한 한국어 선생님이야. 모든 답변은 한국어로 해줘."),
    HumanMessage(content="Hello, how are you?")
]

response = llm.invoke(messages)
print(response.content)

대화 히스토리 관리

이전 대화 내용을 기억하면서 연속적인 대화를 구현할 수 있습니다.

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage

llm = ChatOpenAI(
    api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxx",
    model="gpt-4o-mini"
)

# 대화 히스토리 구성
messages = [
    SystemMessage(content="너는 요리 전문가야."),
    HumanMessage(content="김치찌개 만드는 법 알려줘"),
    AIMessage(content="김치찌개는 김치, 돼지고기, 두부를 넣고 끓이면 됩니다."),
    HumanMessage(content="거기에 뭘 더 넣으면 맛있을까?")
]

response = llm.invoke(messages)
print(response.content)

응답 객체 구조

invoke() 메서드의 응답은 AIMessage 객체로 반환됩니다.

response = llm.invoke([HumanMessage(content="안녕!")])

# 응답 내용 확인
print(response.content)           # 응답 텍스트
print(response.response_metadata) # 토큰 사용량 등 메타데이터

응답 메타데이터 예시

{
    'token_usage': {
        'completion_tokens': 15,
        'prompt_tokens': 10,
        'total_tokens': 25
    },
    'model_name': 'gpt-4o-mini',
    'finish_reason': 'stop'
}

전체 예제 코드

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

# 1. ChatOpenAI 객체 생성
llm = ChatOpenAI(
    api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxx",  # OpenAI API 키
    model="gpt-4o-mini",
    temperature=0.7
)

# 2. 메시지 구성
messages = [
    SystemMessage(content="너는 친절한 AI 비서야. 항상 공손하게 답변해줘."),
    HumanMessage(content="오늘 날씨가 어때?")
]

# 3. 응답 받기
response = llm.invoke(messages)

# 4. 결과 출력
print("AI 응답:", response.content)
print("사용 토큰:", response.response_metadata.get('token_usage'))

0개의 댓글