Prompt(프롬프트)란
사용자가 대규모(초거대) 언어 모델(LLM)에게 질문이나 작업을 요청할때 사용되는 입력문입니다.
Prompt Template(프롬프트 템플릿)이란
PromptTemplate를 사용하여 프롬프트(입력문)안에 변수를 포함하여 생성한 후 동적으로 입력받은 변수 값으로 채워 넣어 프롬프트를 생성합니다.
from langchain_core.prompts import PromptTemplate
# 'role' 변수를 사용하는 프롬프트 템플릿을 정의
template = "너는 {role} 전문가로 {role} 질문에 친절하게 답변해 주십시오."
# PromptTemplate 인스턴스를 생성
promptTemplate = PromptTemplate.from_template(template)
# 템플릿에 변수 값을 채워 넣어 프롬프트를 완성
prompt = promptTemplate.format(role="천문학")
너는 천문학 전문가로 천문학 질문에 친절하게 답변해 주십시오.
Chat Prompt Template(챗 프롬프트 템플릿)이란
ChatPromptTemplate를 사용하여 LangChain Message인 SystemMessage와 HumanMessage에 변수를 포함하여 생성한 후 동적으로 입력받은 변수 값으로 채워 넣어 프롬프트를 생성합니다.
(https://python.langchain.com/docs/tutorials/llm_chain/)


Chat Prompt Template 사용하기
1. project3에 qna.py 파일을 생성합니다.

import os
from langchain.chat_models import init_chat_model
from langchain_core.prompts import ChatPromptTemplate
os.environ["OPENAI_API_KEY"] = "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"
model = init_chat_model("gpt-4o", model_provider="openai")
system_template = "너는 천문학 전문가로 천문학 질문에 친절하게 답변해 주십시오."
prompt_template = ChatPromptTemplate.from_messages([
("system", system_template),
("user", "{text}")
])
prompt = prompt_template.invoke({"text": "태양계에서 가장 큰 행성은 무엇인가요?"})
ai_msg = model.invoke(prompt)
print(ai_msg.content)
Terminal(터미널)에서 명령어를 사용하여 실행합니다.

모델 출력 결과 : 태양계에서 가장 큰 행성은 목성입니다. 목성은 직경과 질량 모두에서 다른 행성들보 다 훨씬 크며, 태양계 전체 행성 질량의 상당 부분을 차지하고 있습니다. 목성은 주로 수소와 헬륨으로 이루어진 가스 행성이며, 그 방대한 크기와 대기 조건 덕분에 여러 독특한 특징을 가지고 있습니다.
chain으로 실행하기
StrOutputParser
StrOutputParser는 모델의 출력 결과를(AIMessage 또는 AIMessageChunk)을 일반 텍스트 문자열로 변환합니다.
모델 출력 결과가 ChatModel 메시지일 경우 StrOutputParser는 메시지의 .content 속성을 추출하여 전달합니다.
(https://reference.langchain.com/python/langchain-core/output_parsers/string/StrOutputParser)

LangChain의 LCEL(LangChain Expression Language)을 사용하기
프롬프트, 언어 모델, 출력 파서를 파이프 기호(|)로 연결해 하나의 실행 가능한 작업 흐름(chain)을 만드는 구문입니다.
chain = prompt_template | model | StrOutputParser()
1. project3에 qna.py 파일을 수정합니다.

import os
from langchain.chat_models import init_chat_model
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
os.environ["OPENAI_API_KEY"] = "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"
model = init_chat_model("gpt-4o", model_provider="openai")
system_template = "너는 천문학 전문가로 천문학 질문에 친절하게 답변해 주십시오."
prompt_template = ChatPromptTemplate.from_messages([
("system", system_template),
("user", "{text}")
])
chain = prompt_template | model | StrOutputParser()
response = chain.invoke({"text": "태양계에서 가장 큰 행성은 무엇인가요?"})
print(response)
Terminal(터미널)에서 명령어를 사용하여 실행합니다.

모델 출력 결과 : 태양계에서 가장 큰 행성은 목성입니다. 목성은 지름과 부피 모두에서 가장 크고, 질량도 태양계의 다른 모든 행성을 합친 것보다 더 큽니다. 이는 목성이 주로 가스로 이루어져 있기 때문이며, 이에 따라 가스 행성이라고도 불립니다. 목성의 거대한 크기는 많은 위성들과 특유의 대기 현상을 포함한 다양한 특징을 가지고 있습니다.
'LLM Application > LangChain' 카테고리의 다른 글
| LangChain – Advanced RAG, Pre-Retrieval(한국어 LLM 사용) (0) | 2026.07.30 |
|---|---|
| LangChain – Advanced RAG, Pre-Retrieval (0) | 2026.07.30 |
| 랭체인 - LangChain Message (SystemMessage, HumanMessage, AIMessage) (0) | 2026.07.26 |
| LangChain - RAG + Ollama + Hugging Face - llama3-2-Korean (0) | 2026.07.25 |
| LangChain - RAG + Ollama + gemma3 (0) | 2026.07.24 |