RAG2026-5일5차시 · LangChain 입문8 / 16← 이전목차다음 →MetaContents

5차시. LangChain 입문

5. Prompt Template 사용하기

출처: 원본 PDF 05차시_LangChain입문RAG의마법도구.pdf 5~6쪽 · 쪽 그림 5쪽 6쪽

LangChain의 Prompt Template을 사용하면 동적 프롬프트를 만들 수 있습니다.

Python
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 사용하기」과 이어집니다.

Python
# ============================================================
# 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()은 빈칸을 채운 문자열을 돌려줍니다. 반환값을 변수에 담지 않습니다.

파일 맨 아래 실행 결과 샘플 주석은 실행되지 않습니다. 화면 출력은 다음 절에 다시 적어 두었습니다.

← 이전 절5차시 · 4. 첫 번째 LangChain 프로젝트다음 절 →5차시 · 6. RAG 파이프라인 구축 준비