
[지시사항 / role 설정]
[질문]
[문맥]
from langchain_core.prompts import PromptTemplate
template = "{country}의 수도는 어디인가요?"
prompt = PromptTemplate.from_template(template)
# 변수 대입
print(prompt.format(country="대한민국"))
# -> '대한민국의 수도는 어디인가요?'
체인에 연결
# 예: LLM 객체가 llm 이라고 가정
chain = prompt | llm
print(chain.invoke({"country":"대한민국"}).content)

prompt = PromptTemplate(
template="{country}의 수도는 어디인가요?",
input_variables=["country"], # 템플릿 변수와 불일치하면 예외 발생
)
print(prompt.format(country="대한민국"))
from datetime import datetime
def get_today():
return datetime.now().strftime("%B %d")
prompt = PromptTemplate(
template="오늘은 {today}. 오늘 생일인 유명인 {n}명을 나열해 주세요.",
input_variables=["n"],
partial_variables={"today": get_today},
)
chain = prompt | llm
print(chain.invoke({"n": 3}).content)


# prompts/fruit_color.yaml
_type: "prompt"
template: "{fruit}의 색깔이 뭐야?"
input_variables: ["fruit"]
from langchain_core.prompts import load_prompt
prompt = load_prompt("prompts/fruit_color.yaml", encoding="utf-8")
print(prompt.format(fruit="사과"))
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
chat_prompt = ChatPromptTemplate.from_messages([
("system", "당신은 요약 전문 AI 어시스턴트입니다."),
MessagesPlaceholder(variable_name="conversation"),
("human", "지금까지의 대화를 {word_count} 단어로 요약합니다."),
])
chain = chat_prompt | llm

from langchain_core.prompts.few_shot import FewShotPromptTemplate
from langchain_core.prompts import PromptTemplate
examples = [
{"question": "스티브 잡스와 아인슈타인 중 누가 더 오래 살았나요?", "answer": "아인슈타인"},
]
example_prompt = PromptTemplate(
input_variables=["question", "answer"],
template="Q: {question}\nA: {answer}\n",
)
prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
suffix="Question:\n{question}\nAnswer:",
input_variables=["question"],
)

from langchain_core.example_selectors import SemanticSimilarityExampleSelector
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
selector = SemanticSimilarityExampleSelector.from_examples(
examples=examples,
embeddings=OpenAIEmbeddings(),
vectorstore_cls=Chroma,
k=1,
)

from langchain_core.prompts import ChatPromptTemplate, FewShotChatMessagePromptTemplate
example_prompt = ChatPromptTemplate.from_messages([
("human", "{instruction}:\n{input}"),
("ai", "{answer}"),
])
few_shot = FewShotChatMessagePromptTemplate(
example_prompt=example_prompt,
examples=examples,
)
final_prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant."),
few_shot,
("human", "{instruction}\n{input}"),
])

| 개념 | 목적 | 주요 코드/객체 |
|---|---|---|
| PromptTemplate | 변수 기반 프롬프트 생성 | PromptTemplate.from_template() |
| partial_variables | 공통 변수 자동 채움 | partial_variables={"today": get_today} |
| MessagesPlaceholder | 대화 이력 삽입 | MessagesPlaceholder(variable_name="conversation") |
| FewShotPromptTemplate | 예시 기반 학습 유도 | FewShotPromptTemplate(examples=..., example_prompt=...) |
| ExampleSelector | 관련 예시 자동 선택 | SemanticSimilarityExampleSelector |
| FewShotChatMessagePromptTemplate | Chat 모델용 FewShot | ChatPromptTemplate.from_messages() |
| LangChain Hub | 프롬프트 공유 및 관리 | hub.push() |
| Chain of Density | 점진적 요약 고도화 | JSON 구조 기반 반복 요약 |
| RAG Prompt | Retrieval 기반 QA | 시스템 + 휴먼 메시지 구조 |