HOME
NOTE

[LangChain] Prompt Template

CREATED
2025. 3. 24. 오후 12:58:23
UPDATED
2025. 3. 24. 오후 4:23:31
TAGS
#AI#LLM#LangChain

프롬프트 템플릿이란?

프롬프트 템플릿은 사용자의 입력매개변수를 언어 모델이 이해할 수 있는 지시사항으로 변환하는 도구다. 쉽게 말해, AI에게 "이렇게 대답해줘"라고 안내하는 역할이라고 이해하면 된다.

기본 동작

  1. 템플릿에 변수(예: {topic})를 넣는다.
  2. 실제 값으로 이 변수들을 채운다.
  3. 완성된 지시문을 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와의 대화를 더 구조적이고 예측 가능하게 만들 수 있고, 원하는 형식과 내용의 응답을 얻는데 도움이 됨

  • 시스템 메세지로 역할을 부여하거나 친절한 톤으로 응답하도록 제시할 수 있음
  • 일관된 형식의 응답을 유도할 수 있음
  • 특정 단계를 거쳐서 응답하도록 하여 원하는 흐름의 결과를 유도할 수 있음

참고