LangChain - PromptTemplate

전지환·2024년 12월 1일

랭체인

목록 보기
1/1

PromptTemplate: 효율적인 프롬프트 관리의 핵심

안녕하세요 오늘은 LangChain 라이브러리의 핵심 기능 중 하나인 PromptTemplate에 대해 알아보겠습니다. LLM(대규모 언어 모델)을 활용한 애플리케이션 개발에서 프롬프트 관리는 매우 중요한데PromptTemplate을 사용하면 이를 효과적으로 할 수 있습니다.

PromptTemplate이란?

PromptTemplate은 LLM에 전달할 프롬프트를 동적으로 생성하고 관리하는 도구입니다. 이를 통해 일관된 형식의 프롬프트를 쉽게 만들 수 있고 변수를 활용해 유연한 프롬프트 생성이 가능합니다

PromptTemplate 사용하기

기본적인 PromptTemplate 사용법은 다음과 같습니다:

from langchain.prompts import PromptTemplate

template = "{city}에 대해 알려줘."
prompt = PromptTemplate.from_template(template)

result = prompt.format(city="부산")
print(result)  # 출력: 부산에 대해 알려줘.

이 예제에서 {city}는 동적으로 변경될 수 있는 변수입니다

PromptTemplate의 장점

  1. 재사용성: 동일한 템플릿을 여러 번 사용할 수 있어 코드 중복을 줄일 수 있습니다.
  2. 유지보수성: 프롬프트 형식을 한 곳에서 관리할 수 있어 수정이 용이합니다.
  3. 가독성: 프롬프트의 구조를 명확히 볼 수 있어 코드 이해가 쉬워집니다.

다양한 PromptTemplate 활용

LangChain은 여러 종류의 PromptTemplate을 제공합니다:

ChatPromptTemplate

대화형 모델을 위한 템플릿으로, 시스템 메시지, 사용자 메시지, AI 메시지 등을 포함할 수 있습니다[3].

from langchain.prompts import ChatPromptTemplate

template = ChatPromptTemplate.from_messages([
    ("system", "당신은 {language} 번역 전문가입니다."),
    ("human", "{text}를 번역해주세요.")
])

messages = template.format_messages(language="영어", text="안녕하세요")

FewShotPromptTemplate

몇 가지 예제를 포함하여 모델에 컨텍스트를 제공하는 템플릿입니다[5].

from langchain.prompts import FewShotPromptTemplate

examples = [
    {"input": "고양이에 대한 농담", "output": "고양이는 왜 정글에서 포커를 하지 않을까요? 치타가 너무 많아서요!"},
    {"input": "개에 대한 농담", "output": "개는 왜 그늘에 앉았을까요? 핫도그가 되기 싫어서요!"}
]

template = FewShotPromptTemplate.from_examples(
    examples,
    ["input", "output"],
    "다음 주제에 대한 농담을 만들어주세요: {input}\n농담: "
)

result = template.format(input="곰")
print(result)

마치며

PromptTemplate은 LLM 기반 애플리케이션 개발에서 프롬프트 관리를 효율적으로 할 수 있게 해주는 강력한 도구입니다. 이를 활용하면 더 체계적이고 유지보수가 쉬운 코드를 작성할 수 있습니다. 여러분의 프로젝트에서 PromptTemplate을 활용해 보시기 바랍니다!

다음 포스트에서는 LangChain의 다른 핵심 기능들에 대해 알아보겠습니다. 궁금한 점이나 의견이 있으시면 댓글로 남겨주세요. 감사합니다!

Citations:
[1] https://rudaks.tistory.com/entry/langchain-Prompt-Template-%EC%82%AC%EC%9A%A9%EB%B2%95
[2] https://pkgpl.org/2023/09/17/langchain-prompt-template/
[3] https://yeonjinj.tistory.com/25
[4] https://wikidocs.net/233351
[5] https://wikidocs.net/252230

profile
언제나 탐구하는 개발자입니다.

0개의 댓글