반응형
재사용 가능한 프롬프트 설계와 메시지 객체 계층 구조 분석
1. 프롬프트 템플릿(PromptTemplate)이란?
사용자의 입력을 받아서 일정한 형식으로 문장을 완성해 주는 양식입니다. 프로그래밍의 '함수'와 비슷하며, 매번 긴 배경지식을 타이핑할 필요 없이 변하는 값만 교체하여 효율적으로 LLM을 다룰 수 있게 돕습니다.
필요성
- 재사용성: 잘 만든 양식을 여러 번 재활용할 수 있습니다.
- 일관성: 고정된 환경을 구축하여 답변의 질을 일정하게 유지합니다.
- 효율성: 복잡한 지시사항을 매번 작성하지 않아도 됩니다.

2. 랭체인 메시지 프로세스 구조
① 설계 및 생성 계층 (PromptTemplate)
질문의 내용을 정의하는 단계입니다.
- PromptTemplate: 프롬프트를 만드는 틀 (template: 문장 구조 / input_variables: 변수 리스트)
- String(문자열): 변수가 채워져 완성된 최종 텍스트 형태
② 메시지 객체 계층 (Message Objects)
완성된 텍스트를 모델이 이해할 수 있는 규격으로 포장합니다.
- BaseMessage: 랭체인 대화 데이터의 최상위 표준 규격 (부모 클래스)
- SystemMessage: AI의 '페르소나' 설정. 사전 지시사항 정의
- HumanMessage: 사용자가 보낸 메시지. 프롬프트 템플릿의 결과물이 담김
- AIMessage: AI의 답변 기록 및 결과값을 저장하는 객체
③ 요약 정리
- SystemMessage: AI 자아 생성
- HumanMessage: 사용자가 AI에게 하는 질문
- AIMessage: AI의 답변
- PromptTemplate: 사용자의 질문을 형식화하는 틀

3. 실습 진행
템플릿에 동적 데이터를 주입하여 요리사 역할을 수행하는 프롬프트를 만들어 봅니다.
💡 개발 팁:langchain_core.prompts를 사용합니다. from langchain_core.prompts import PromptTemplate를 입력하고 탭(Tab)을 누르면 형식이 자동 완성됩니다.from langchain_core.prompts import PromptTemplate
# 1. 프롬프트 틀 정의
prompt = PromptTemplate(
template="You are chief. Please explain how to make {menu}",
input_variables=["menu"]
)
# 2. 변수 채우기 및 모델 호출
result = llm.invoke(prompt.format(menu="pizza"))
#llm.invoke(prompt.invoke("menu":"pizza"))로도 사용 가능함
# 3. 답변 출력
print(result.content)
결과는 아래와 같이 나옵니다.
"Listen up, team. You want to make a pizza? You don’t just 'make' a pizza. You build it... ### 1. The Foundation: The Dough... (중략) ... **Now get to work!**"
4. 메시지 객체 생성 및 역할 부여 테스트
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
# 대화형 프롬프트 구성
messages_list = [
SystemMessage(content="You are chief."), # AI 역할 부여
HumanMessage(content="Please explain how to make pizza."), # 사용자 질문
AIMessage(content="") # AI 답변 기록용 (선택 사항)
]
# 모델 호출
response = llm.invoke(messages_list)
print(response.content)
리스트 구조를 통해 시스템 메시지와 사용자 메시지를 명시적으로 전달해 봅니다.
📝 마무리
이번 학습을 통해 질문의 형식을 만드는 PromptTemplate의 이론과 실습을 마쳤습니다. 또한 System, Human, AI Message 객체 간의 계층 구조를 파악함으로써 AI에게 정확한 '자아'를 심어주는 법을 익혔습니다.
반응형
'AI > LangChain' 카테고리의 다른 글
| [#LangChain] 07. LCEL의 이해와 활용 (0) | 2026.02.27 |
|---|---|
| [#LangChain] 06. AI의 답변을 원하는 형식으로, Output Parser (0) | 2026.02.27 |
| [#LangChain] 04. 외부 모델(Gemini) 연동 및 활용 (0) | 2026.02.26 |
| [#LangChain] 03. 로컬 LLM 실습 환경 구축 (0) | 2026.02.26 |
| [#LangChain] 02. 공식사이트 방문과 LangChain 생태계 이해 (0) | 2026.02.25 |
댓글