본문 바로가기
AI/LangChain

[#LangChain] 05. PromptTemplate 활용 가이드

by dopal2 2026. 2. 26.
반응형

재사용 가능한 프롬프트 설계와 메시지 객체 계층 구조 분석

1. 프롬프트 템플릿(PromptTemplate)이란?

사용자의 입력을 받아서 일정한 형식으로 문장을 완성해 주는 양식입니다. 프로그래밍의 '함수'와 비슷하며, 매번 긴 배경지식을 타이핑할 필요 없이 변하는 값만 교체하여 효율적으로 LLM을 다룰 수 있게 돕습니다.

필요성

  • 재사용성: 잘 만든 양식을 여러 번 재활용할 수 있습니다.
  • 일관성: 고정된 환경을 구축하여 답변의 질을 일정하게 유지합니다.
  • 효율성: 복잡한 지시사항을 매번 작성하지 않아도 됩니다.
00. PromptTemplate 구조 설명

2. 랭체인 메시지 프로세스 구조

① 설계 및 생성 계층 (PromptTemplate)

질문의 내용을 정의하는 단계입니다.

  • PromptTemplate: 프롬프트를 만드는 틀 (template: 문장 구조 / input_variables: 변수 리스트)
  • String(문자열): 변수가 채워져 완성된 최종 텍스트 형태

② 메시지 객체 계층 (Message Objects)

완성된 텍스트를 모델이 이해할 수 있는 규격으로 포장합니다.

  • BaseMessage: 랭체인 대화 데이터의 최상위 표준 규격 (부모 클래스)
  • SystemMessage: AI의 '페르소나' 설정. 사전 지시사항 정의
  • HumanMessage: 사용자가 보낸 메시지. 프롬프트 템플릿의 결과물이 담김
  • AIMessage: AI의 답변 기록 및 결과값을 저장하는 객체

③ 요약 정리

  • SystemMessage: AI 자아 생성
  • HumanMessage: 사용자가 AI에게 하는 질문
  • AIMessage: AI의 답변
  • PromptTemplate: 사용자의 질문을 형식화하는 틀
01. 메세지 구조

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에게 정확한 '자아'를 심어주는 법을 익혔습니다.

반응형

댓글