반응형
LangChain의 PromptTemplate
은 LLM 체인 구성 시 입력값을 프롬프트 문자열로 포맷팅해주는 핵심 컴포넌트이다. 이 글에서는 프롬프트 템플릿 사용 시 유용한 기능인 partial_variables
와 load_prompt
에 대해 설명한다.
1. partial_variables
정의: 프롬프트에서 일부 변수만 미리 고정값으로 설정하고, 나머지는 실행 시점에 동적으로 입력받는 방식이다.
용도
- 공통 문맥 또는 시스템 지시어 등을 프롬프트에 고정하고, 일부만 외부 입력으로 받을 때
- 다양한 입력에 대해 동일한 베이스 프롬프트를 재사용할 때
예제 코드
from langchain.prompts import PromptTemplate
base_prompt = PromptTemplate.from_template(
"역할: {role}\n질문: {question}\n답변:"
)
partial_prompt = base_prompt.partial(role="수학 선생님")
# 실행 시에는 question만 입력하면 됨
formatted = partial_prompt.format(question="2차 방정식이 뭐에요?")
출력 결과
역할: 수학 선생님
질문: 2차 방정식이 뭐에요?
답변:
주의사항
- 기존 PromptTemplate과 동일하게
format()
또는 체인 실행 가능 - 한 번 partial 설정한 템플릿은 재사용 가능
---
2. load_prompt
정의: 외부 JSON 또는 YAML 파일로 정의된 프롬프트를 불러오는 기능이다. 템플릿을 코드가 아닌 파일 기반으로 관리할 수 있어, 버전 관리와 협업에 유리하다.
용도
- 프롬프트를 코드 외부에서 관리하고 싶을 때
- 다수의 프롬프트 템플릿을 구성하고, 설정에 따라 불러올 때
- YAML 기반 프롬프트 관리 시스템과 통합할 때
예제 파일 (prompt.yaml)
_type: prompt
input_variables:
- topic
template: |
오늘의 주제는 {topic}입니다.
자세히 설명해 주세요.
Python 코드
from langchain.prompts import load_prompt
prompt = load_prompt("prompt.yaml")
formatted = prompt.format(topic="인공지능")
출력 결과
오늘의 주제는 인공지능입니다.
자세히 설명해 주세요.
지원 포맷
.json
,.yaml
(또는.yml
) 파일- 필수 필드:
_type
,template
,input_variables
주의사항
_type: prompt
형태로 명시해야PromptTemplate
로 로드 가능- 파일 경로는 상대 경로나 절대 경로 모두 가능
반응형
'AI > LangChain' 카테고리의 다른 글
LangChain Hub: 프롬프트와 체인을 공유하고 활용하는 플랫폼 (0) | 2025.03.31 |
---|---|
LangChain ChatPromptTemplate (0) | 2025.03.28 |
LangChain LCEL 컴포넌트: RunnablePassthrough, RunnableParallel, RunnableLambda (0) | 2025.03.28 |
LCEL 인터페이스 정리: Runnable 구조와 주요 메서드 (0) | 2025.03.28 |
LCEL (LangChain Expression Language): 선언형 LangChain 구성 방식 (0) | 2025.03.28 |