LLM Application/LangChain

랭체인 - LangChain Message (SystemMessage, HumanMessage, AIMessage)

carrotweb 2026. 7. 26. 16:58
728x90
반응형

LangChain Message에 대해 알아보겠습니다.

 

 

대화 메시지를 Role(역활)로 구분해보겠습니다.

 

첫번쩨 메시지는 Developer(개발자)가 LLM에 역화과 작업을 설명 → Task Description (작업 설명)

두번째 메시지는 User(사용자)가 LLM에게 질문

세번째 메시지는 Assistant(어시스턴트)가 User(사용자)의 질문에 대한 대답

 

대화 시작전에 Task Description (작업 설명)이 설명되어 있으면 LLM으로부터 좀더 정확한 결과를 받을 수 있습니다.

 

대화 메시지를 LangChain Message로 구분해보겠습니다.

 

SystemMessage : 시스템 메시지로 AI의 행동(역할이나 정보를 통한 설정)을 촉진하기 위한 메시지입니다.

 

HumanMessage : 인간 메시지로 AI 모델에 전달할 메시지입니다.

 

AIMessage : AI 메시지로 프롬프트에 대한 응답 메시지입니다. (채팅 모델에서 반환)

 

 

LangChain Message로 만들기

랭체인 사이트의 튜토리얼을 기반으로 개발하도록 하겠습니다.
작성 당시 버전은 v0.3이였습니다. 현재 v1.3과 다를 수 있습니다.

 

1. project3에 main.py 파일을 생성합니다.

import os
from langchain.chat_models import init_chat_model
from langchain_core.messages import HumanMessage, SystemMessage

os.environ["OPENAI_API_KEY"] = "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"

model = init_chat_model("gpt-4o", model_provider="openai")

messages = [
    SystemMessage(
        content="You are a helpful assistant! Your name is Bob."
    ),
    HumanMessage(
        content="What is your name?"
    )
]

ai_msg = model.invoke(messages)
print(ai_msg.content)

 

또는 OpenAI 모델만 전용으로 클래스인 ChatOpenAI를 사용햐도 됩니다.

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

os.environ["OPENAI_API_KEY"] = "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"

llm = ChatOpenAI(
    model="gpt-4o"
)

messages = [
    SystemMessage(
        content="You are a helpful assistant! Your name is Bob."
    ),
    HumanMessage(
        content="What is your name?"
    )
]

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

 

대화 메시지 처럼 역활과 작업 설명을 해주기 위해서 SystemMessage에 "You are a helpful assistant! Your name is Bob."을 입력하고 사용자의 질문을 위해 HumanMessage에 "What is your name?"을 입력합니다.

 

실행하기 위해 Terminal(터미널)에서 다음과 같이 명령어를 실행합니다.

python main.py

 

결과를 AIMessage로 "My name is Bob. How can I assist you today?"가 전달됩니다.

728x90
반응형