5차시. LangChain 입문
5. Prompt Template 사용하기
출처: 원본 PDF 05차시_LangChain입문RAG의마법도구.pdf 5~6쪽 · 쪽 그림 5쪽 6쪽
LangChain의 Prompt Template을 사용하면 동적 프롬프트를 만들 수 있습니다.
from langchain.prompts import PromptTemplate
template = "다음 문서를 읽고 질문에 답하세요. 문서: {doc}, 질문: {q}, 답변:"
prompt = PromptTemplate(
input_variables=["doc", "q"],
template=template
)
result = prompt.format(
doc="제품 색상은 검은색입니다",
q="제품 색상은?"
)
print(result)실행 결과 예시 (코드를 읽고 만든 예상 화면입니다. 실제 실행 결과, 특히 모델의 답은 다를 수 있습니다)
다음 문서를 읽고 질문에 답하세요. 문서: 제품 색상은 검은색입니다, 질문: 제품 색상은?, 답변:Prompt Template의 장점
1. 재사용 가능 — 같은 템플릿으로 다양한 데이터 처리
2. 가독성 — 프롬프트 구조가 명확
3. 유지보수 — 프롬프트를 한 곳에서 관리
4. 체인 연결 — 다른 요소와 쉽게 연결
실습 코드 · 05/prompt_template.py
실습 코드: 실습/src/05/prompt_template.py · 위의 원본 PDF 5차시 5~6쪽 「5️⃣ Prompt Template 사용하기」과 이어집니다.
# ============================================================
# 5차시 | PPT: 05차시_LangChain입문.pptx
# 역할: 질문과 문서를 넣을 자리가 있는 프롬프트 틀을 만들기
# 입력: 틀 안의 {doc}, {q}에 넣을 문자열
# 출력: format()이 돌려주는 완성 문자열. 이 파일은 print하지 않습니다.
# 흐름:
# template 문자열
# -> PromptTemplate
# -> format(doc, q)
# -> 문자열 (화면에 출력하지 않음)
# ============================================================
# prompt: 모델에게 주는 지시문. 여기서는 빈칸 {doc}, {q}가 있는 틀입니다.
from langchain_core.prompts import PromptTemplate
# {doc}와 {q}는 나중에 값을 채울 빈칸입니다.
template = """
다음 문서를 읽고 질문에 답하세요.
문서 : {doc}
질문 : {q}
답변 :
"""
# input_variables에 적은 이름과 틀의 {이름}이 같아야 합니다.
prompt = PromptTemplate(
input_variables=["doc", "q"],
template=template
)
# format()은 빈칸을 채운 문자열을 돌려줍니다. 반환값을 변수에 담지 않습니다.
prompt.format(
doc = "제품 색상은 검은색입니다.",
q = "제품 색상은?"
)
# print(result)실행 결과 샘플 (교안 기록. API 키가 필요한 코드는 키 없이 맞춘 예시이고, 모델의 답은 실행할 때마다 달라집니다)
===== 실행 결과 샘플 =====
실행: cd 실습/src/05
python prompt_template.py
예시 (format()이 돌려주는 문자열. print가 없으므로 화면 출력은 없습니다.)
다음 문서를 읽고 질문에 답하세요.
문서 : 제품 색상은 검은색입니다.
질문 : 제품 색상은?
답변 :코드 해설
질문과 문서를 넣을 자리가 있는 프롬프트 틀을 만들기입니다. 입력은 틀 안의 {doc}, {q}에 넣을 문자열이고, 출력은 format()이 돌려주는 완성 문자열. 이 파일은 print하지 않습니다.
주석에 적힌 흐름입니다.
template 문자열
-> PromptTemplate
-> format(doc, q)
-> 문자열 (화면에 출력하지 않음)코드 앞에서 고정해 두는 말입니다.
- prompt: 모델에게 주는 지시문. 여기서는 빈칸 {doc}, {q}가 있는 틀입니다.
함수로 나누지 않고 위에서 아래로 실행됩니다.
template = """— {doc}와 {q}는 나중에 값을 채울 빈칸입니다.prompt = PromptTemplate(— input_variables에 적은 이름과 틀의 {이름}이 같아야 합니다.prompt.format(— format()은 빈칸을 채운 문자열을 돌려줍니다. 반환값을 변수에 담지 않습니다.
파일 맨 아래 실행 결과 샘플 주석은 실행되지 않습니다. 화면 출력은 다음 절에 다시 적어 두었습니다.