[LangChain] Essentials

yozzum·2025년 4월 22일
0

GenAI

목록 보기
14/21

🧩 ChatPromptTemplate – 대화 프롬프트를 구조적으로 구성하기

ChatPromptTemplate은 LangChain에서 제공하는 프롬프트 구성 도구로,
여러 개의 메시지를 조합하여 하나의 프롬프트로 만들 수 있도록 도와줍니다.
LLM에게 시스템 지시, 사용자 질문, 예시 답변 등을 함께 전달하고 싶을 때 매우 유용합니다.


📌 주요 특징

  • 역할 구분 명확: system, human, ai 등 메시지 역할을 분리해서 작성 가능
  • 구조적 구성: 메시지를 블록처럼 조립해서 깔끔한 프롬프트 구성 가능
  • 재사용성: 같은 프롬프트 구조를 다양한 입력에 재활용할 수 있어 유지보수에 유리

✅ 기본 예시

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "당신은 친절하고 똑똑한 AI 비서입니다."),
    ("human", "오늘 서울 날씨 어때?")
])

이렇게 구성된 프롬프트는 다음과 같은 형태로 LLM에 전달됩니다:

System: 당신은 친절하고 똑똑한 AI 비서입니다.
Human: 오늘 서울 날씨 어때?

🔁 다양한 활용 예시

프롬프트를 구성할 때 변수도 함께 사용할 수 있습니다:

prompt = ChatPromptTemplate.from_messages([
    ("system", "당신은 여행 전문가입니다."),
    ("human", "{user_input}")
])

사용 시:

prompt.format(user_input="오사카 2박 3일 여행 코스 추천해줘")

💡 정리

항목설명
목적다양한 메시지를 조합하여 LLM 입력을 구성
장점구조화, 역할 분리, 재사용 용이
사용처챗봇, 에이전트, 대화형 서비스 등

ChatPromptTemplate은 단순한 질문/응답을 넘어서,
LLM과의 상호작용을 더 정교하게 설계하는 기본 도구입니다.


🧠 MessagesPlaceholder – 대화 기록을 삽입하는 자리 표시자

MessagesPlaceholder는 프롬프트 템플릿 안에 이전 대화 내용(chat history) 을 삽입할 수 있도록 도와주는 자리 표시자입니다.
대화 흐름을 자연스럽게 유지하고, LLM이 컨텍스트를 이해하도록 만들 때 중요한 역할을 합니다.


📌 주요 특징

  • 대화 기록 삽입: 이전에 주고받은 메시지를 넣는 자리 지정
  • 컨텍스트 유지: 대화형 애플리케이션에서 자연스러운 흐름 가능
  • 메모리 기능과 호환: LangChain의 Memory 객체와 함께 사용 시 자동 관리 가능

✅ 기본 예시

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages([
    ("system", "당신은 사용자를 돕는 AI입니다."),
    MessagesPlaceholder(variable_name="chat_history"),
    ("human", "{question}")
])

이 구성에서 chat_history는 다음과 같은 형식으로 전달될 수 있습니다:

chat_history = [
    ("human", "오늘 뭐 먹을까?"),
    ("ai", "김치찌개 어때요?")
]

이렇게 하면 LLM은 이전 대화를 이해하고, 그 맥락에 맞춰 적절한 응답을 할 수 있게 됩니다.


🧩 Memory와 함께 사용하는 예

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(return_messages=True)

이 메모리를 사용하면 MessagesPlaceholder를 위한 chat_history를 자동으로 관리할 수 있습니다.


💡 정리

항목설명
목적대화 기록을 프롬프트에 삽입
장점컨텍스트 유지, 자연스러운 대화 흐름
사용처챗봇, 대화형 서비스, 에이전트 등

MessagesPlaceholder는 단순히 메시지를 추가하는 기능을 넘어서,
LLM이 상황을 기억하고 더 지능적으로 반응할 수 있도록 만들어주는 핵심 요소입니다.

profile
yozzum

0개의 댓글