지난번에는 Google AI Studio에서 API 키를 발급받고,
LangChain을 세팅해서 Gemini 모델과 단순히 대화를 주고받는 기본 과정을 알아봤습니다.
이번에는 대화형 프롬프트(ChatPromptTemplate) 사용 방법에 대해 정리 하겠습니다
1. ChatPromptTemplate란?
LangChain에는 프롬프트를 관리하는 여러 방식이 있습니다.
그중 ChatPromptTemplate
은 대화형 모델(Gemini, GPT 등) 을 사용할 때
프롬프트를 재사용 가능하도록 템플릿으로 묶는 기능을 합니다
2. from_messages()
로 템플릿 만들기
ChatPromptTemplate.from_messages()
는
이 메시지 구조를 손쉽게 템플릿화할 수 있게 해주는 메서드입니다.
예를 들어 아래처럼 시스템 메시지와 인간 메시지를 한 번에 구성할 수 있습니다.
from dotenv import load_dotenv
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_core.prompts import ChatPromptTemplate # 대화형 템플릿
load_dotenv()
# 모델 설정
llm = ChatGoogleGenerativeAI(
model="gemini-2.5-flash",
temperature=0.1
)
# 대화형 프롬프트 구성
prompt_template = ChatPromptTemplate.from_messages(
[
("system", "입력된 문장을 {lang}로 번역해"),
("human", "{text}")
]
)
# 출력 파서 설정 (문자열로 결과 받기)
parser = StrOutputParser()
# 체인 구성 (프롬프트 → LLM → 파서)
chain = prompt_template | llm | parser
# 실행
response = chain.invoke(
{
"lang": "일본어",
"text": "내일 뭐해"
}
)
print(response) #일본어로 번역된걸 설명해주는 문장 출력
SystemMessage
와 HumanMessage
를 직접 구성해서 넘길 수도 있지만,
그럴 때마다 메시지 리스트를 일일이 만들어야 하죠.
그에 비해 ChatPromptTemplate.from_messages()
는 위에 코드 처럼
변수를 {}
로 지정해두고, 나중에 invoke()
할 때 데이터만 전달하면 되니
코드가 훨씬 깔끔해지고 재사용성도 높습니다.
변해야 될 값 부분만 따로 처리되니 편리한 것 같습니다
댓글 쓰기