프롬프트 템플릿이란?
프롬프트 템플릿은 사용자의 입력과 매개변수를 언어 모델이 이해할 수 있는 지시사항으로 변환하는 도구다. 쉽게 말해, AI에게 "이렇게 대답해줘"라고 안내하는 역할이라고 이해하면 된다.
기본 동작
- 템플릿에 변수(예:
{topic}
)를 넣는다. - 실제 값으로 이 변수들을 채운다.
- 완성된 지시문을 AI 모델에 전달한다.
템플릿 종류
1. 문자열 프롬프트 템플릿
가장 단순한 형태로, 하나의 문장을 전달한다.
'고양이에 관한 농담을 해줘' 같은 단순한 요청을 만들 때 사용
import { PromptTemplate } from "@langchain/core/prompts";
const promptTemplate = PromptTemplate.fromTemplate(
"Tell me a joke about {topic}"
);
await promptTemplate.invoke({ topic: "cats" });
2. 채팅 프롬프트 템플릿
여러 메시지로 대화를 구성한다.
import { ChatPromptTemplate } from "@langchain/core/prompts";
const promptTemplate = ChatPromptTemplate.fromMessages([
["system", "You are a helpful assistant"],
["user", "Tell me a joke about {topic}"],
]);
await promptTemplate.invoke({ topic: "cats" });
3. 메시지 자리표시자(MessagesPlaceholder)
특정 위치에 여러 메시지를 한 번에 삽입할 수 있게 해줍니다.
미리 준비된 여러 메시지를 대화 중간에 끼워넣을 때 유용
import {
ChatPromptTemplate,
MessagesPlaceholder,
} from "@langchain/core/prompts";
import { HumanMessage } from "@langchain/core/messages";
const promptTemplate = ChatPromptTemplate.fromMessages([
["system", "You are a helpful assistant"],
new MessagesPlaceholder("msgs"),
]);
await promptTemplate.invoke({ msgs: [new HumanMessage("hi!")] });
의미
AI와의 대화를 더 구조적이고 예측 가능하게 만들 수 있고, 원하는 형식과 내용의 응답을 얻는데 도움이 됨
- 시스템 메세지로 역할을 부여하거나 친절한 톤으로 응답하도록 제시할 수 있음
- 일관된 형식의 응답을 유도할 수 있음
- 특정 단계를 거쳐서 응답하도록 하여 원하는 흐름의 결과를 유도할 수 있음