본문 바로가기

AI/AI

[langchain] LangChain에서 Prompt Template 사용하기

LangChain은 자연어 처리(NLP) 작업을 보다 효율적이고 효과적으로 수행할 수 있도록 설계된 프레임워크입니다. 이와 관련된 글은 다음 포스팅을 참고하시면 됩니다.

 

 

[LLM] LangChain이란?

이전 포스팅에서 대규모 언어 모델(LLM)의 기능 및 활용 사례를 살펴보았습니다.  [LLM] LLM이란?(Large Language Model)LLM(Large Language Model)대규모 언어 모델 이러한 모델들은 인공지능 분야에서 "텍스트

yeonjinj.tistory.com

 

이번 포스팅에서는 LangChain의 구성 요소 중 하나인 Prompt Template에 대해 자세히 살펴보겠습니다.

 

Prompt Template

언어 모델에게 특정한 방식으로 질문을 던지기 위해 사용되는 템플릿

 

이는 자연어 처리 모델의 입력으로 사용할 프롬프트를 체계적으로 만들고 관리하는 데 중요한 역할을 합니다.

Prompt Template을 사용하면, 일관된 형식으로 입력을 생성하고, 다양한 변수나 매개변수를 동적으로 삽입할 수 있습니다.

 

 

주요 특징 및 구성 요소

  1. 정적 텍스트와 동적 매개변수:
    • Prompt Template은 고정된 텍스트 부분과 동적으로 바뀔 수 있는 변수 부분으로 나뉩니다. 예를 들어, "Translate the following text to French: {text}"와 같은 템플릿에서 {text}는 동적으로 변경될 수 있는 부분입니다.
  2. 변수 바인딩:
    • 템플릿에서 정의된 변수를 실제 값으로 바인딩하여 최종 프롬프트를 생성합니다. 예를 들어, 위 템플릿에서 {text}에 "Hello, how are you?"를 바인딩하면 최종 프롬프트는 "Translate the following text to French: Hello, how are you?"가 됩니다.
  3. 유연성:
    • 다양한 시나리오에서 재사용할 수 있도록 템플릿을 유연하게 설계할 수 있습니다. 예를 들어, 번역, 요약, 텍스트 생성 등 다양한 작업에 대해 서로 다른 템플릿을 사용할 수 있습니다.
  4. 템플릿 언어:
    • 많은 프롬프트 템플릿은 Python의 포맷 문자열이나 Jinja2와 같은 템플릿 엔진을 사용하여 작성됩니다. 이러한 템플릿 언어는 변수 치환, 조건문, 반복문 등 다양한 기능을 제공하여 복잡한 프롬프트를 생성할 수 있게 합니다.

 

예제

from langchain import PromptTemplate

# 템플릿 정의
template = "Translate the following text to {language}: {text}"

# PromptTemplate 객체 생성
prompt = PromptTemplate(template=template)

# 변수 값 바인딩
final_prompt = prompt.format(language="French", text="Hello, how are you?")

print(final_prompt)

 

 

위 코드에서 template 변수는 프롬프트 템플릿을 정의하고, PromptTemplate 객체를 생성한 후 format 메서드를 사용해서 실제 값을 바인딩합니다. 최종적으로 생성된 프롬프트는 "Translate the following text to French: Hello, how are you?"가 됩니다.

 

 

활용 예

  1. 번역 요청:
    • "Translate the following text to {language}: {text}"
  2. 문서 요약:
    • "Summarize the following document in one sentence: {document}"
  3. 질문 생성:
    • "Generate a question based on the following context: {context}"

 

 

Prompt Template은 Langchain을 사용할 때 매우 중요한 구성 요소로, 일관된 프롬프트를 생성하고 다양한 입력값에 대응할 수 있도록 합니다. 이를 통해 언어 모델의 성능을 최적화하고 다양한 응용 프로그램에서 쉽게 사용할 수 있습니다.