LangChain에서는 PromptTemplate이나 ChatPromptTemplate을 사용할 때
일부 입력 변수만 미리 고정시켜 재사용성을 높일 수 있다.
이때 사용하는 기능이 바로 partial()이다.
왜 사용하는가?
template = PromptTemplate.from_template("다음 내용을 {style} 말투로 요약해줘:\n\n{text}")
child_friendly_prompt = template.partial(style="초등학생이 이해할 수 있게")
blog_prompt = template.partial(style="블로그 말투로")
formal_prompt = template.partial(style="격식 있는 말투로")
text = """
정부는 오늘부터 전기요금을 kWh당 평균 8원 인상한다고 발표했다.
이번 인상은 연료비 상승과 한국전력공사의 누적 적자 해소를 위한 조치다.
"""
response_child = llm.invoke(child_friendly_prompt.format(text=text))
response_blog = llm.invoke(blog_prompt.format(text=text))
response_formal = llm.invoke(formal_prompt.format(text=text))
print("[초등학생용 말투]")
print(response_child.content)
print("\n[블로그 말투]")
print(response_blog.content)
print("\n[격식 있는 말투]")
print(response_formal.content)
[초등학생용 말투]
안녕! 오늘 정부에서 전기요금이 조금 오르겠다고 발표했어. 이제 전기를 쓸 때 kWh당 평균 8원이 더 추가된대. 왜냐하면 연료값이 올라서 전기를 만드는 비용이 더 많이 드는 것과 한국전력공사가 돈을 많이 잃어서 그런 걸 고치기 위해서야. 그래서 앞으로 전기요금을 조금 더 내야 할 거야.
[블로그 말투]
안녕하세요, 여러분! 오늘 읽은 뉴스 하나 전해드릴게요. 정부에서 전기요금을 kWh당 평균 8원 인상한다고 발표했어요. 이번 인상이 이루어진 이유는 연료비 상승과 한국전력공사의 누적 적자를 해소하기 위한 조치라고 하네요. 앞으로 전기요금에 조금 더 주의해야 할 것 같아요. 여러분은 어떻게 생각하시나요?
[격식 있는 말투]
정부는 오늘부터 전기요금을 kWh당 평균 8원 인상한다고 발표하였습니다. 이번 인상은 연료비 상승과 한국전력공사의 누적 적자를 해소하기 위한 조치로 시행됩니다.
이런식으로 부분부분 적용할 수 있는 것을 볼 수 있다.
chat_prompt = ChatPromptTemplate.from_messages([
("system", "{system_instruction}"),
("user", "{question}")
])
partial_chat_prompt = chat_prompt.partial(system_instruction="너는 친절한 금융 전문가야.")
messages = partial_chat_prompt.format_messages(question="ETF가 뭐야?")
from langchain.prompts import PromptTemplate
template = PromptTemplate.from_template("오늘 {topic}에 대해 {style} 톤으로 설명해줘.")
# 2. 일부 변수 고정 (style만 미리 지정)
partial_template = template.partial(style="부드럽게")
# 3. 나머지 값만 채워서 사용
print(partial_template.format(topic="날씨"))