LangChain을 활용한 프롬프트 템플릿 저장 및 로드 가이드

GoGoComputer·2024년 10월 20일
0

LangChain Basics

목록 보기
10/40

개요

이번 강의에서는 LangChain 라이브러리에서 프롬프트 템플릿(Prompt Template)을 저장하고 로드하는 방법에 대해 알아보겠습니다. 프롬프트 템플릿을 저장하면 다른 사람과 공유하거나 나중에 재사용할 수 있어 개발 효율성을 높일 수 있습니다.

  • 목표: 프롬프트 템플릿을 JSON 파일로 저장하고, 이를 다시 로드하는 방법을 배우기.
  • 사용 도구:
    • LangChain의 PromptTemplate 클래스
    • saveload_prompt 메서드

왜 프롬프트 템플릿을 저장하고 로드하나요?

프롬프트 템플릿은 LLM에게 특정한 작업을 지시하는 데 사용되는 텍스트 템플릿입니다. 복잡한 애플리케이션을 개발할 때, 여러 프롬프트 템플릿을 사용하게 되는데, 이를 저장하고 로드할 수 있으면 다음과 같은 이점이 있습니다:

  • 재사용성: 한 번 작성한 템플릿을 여러 곳에서 재사용할 수 있습니다.
  • 공유성: 팀원들과 템플릿을 공유하여 일관된 프롬프트를 사용할 수 있습니다.
  • 유지보수성: 템플릿을 중앙에서 관리하여 변경 사항을 쉽게 적용할 수 있습니다.

LangChain은 프롬프트 템플릿을 JSON 파일로 저장하고 로드하는 기능을 제공하여 이러한 작업을 쉽게 할 수 있도록 도와줍니다.


단계별 가이드

단계 1: 필요한 라이브러리 임포트 및 API 키 설정

import os
from dotenv import load_dotenv
from langchain import PromptTemplate
from langchain.prompts import load_prompt
  • dotenv 사용: .env 파일에서 환경 변수를 로드하기 위해 load_dotenv()를 사용합니다.
  • 환경 변수 로드:
load_dotenv()
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

단계 2: 프롬프트 템플릿 생성

# 템플릿 문자열 정의
template_string = "Please tell me a fact about {planet}."

# 입력 변수 정의
input_variables = ["planet"]

# 프롬프트 템플릿 생성
prompt = PromptTemplate(template=template_string, input_variables=input_variables)
  • template_string: 프롬프트의 내용으로, {planet}은 변수가 될 부분입니다.
  • input_variables: 템플릿에서 사용할 변수들의 리스트입니다.
  • PromptTemplate 생성: 템플릿 문자열과 입력 변수를 사용하여 프롬프트 템플릿을 만듭니다.

단계 3: 프롬프트 템플릿 저장

# 프롬프트 템플릿 저장
prompt.save("my_prompt.json")
  • save 메서드 사용: 프롬프트 템플릿을 JSON 파일로 저장합니다.
  • "my_prompt.json": 저장할 파일의 이름입니다.

단계 4: 프롬프트 템플릿 로드

# 프롬프트 템플릿 로드
loaded_prompt = load_prompt("my_prompt.json")
  • load_prompt 함수 사용: 저장된 JSON 파일에서 프롬프트 템플릿을 로드합니다.
  • loaded_prompt: 로드된 프롬프트 템플릿 객체입니다.

단계 5: 프롬프트 템플릿 사용

# 로드된 프롬프트 템플릿 사용
formatted_prompt = loaded_prompt.format(planet="Mars")

print("생성된 프롬프트:")
print(formatted_prompt)
  • format 메서드 사용: 입력 변수를 전달하여 프롬프트를 생성합니다.
  • 출력: 생성된 프롬프트를 출력하여 확인합니다.

전체 실습 코드

아래는 위에서 설명한 모든 단계를 포함한 전체 코드입니다.

import os
from dotenv import load_dotenv
from langchain import PromptTemplate
from langchain.prompts import load_prompt

# .env 파일에서 API 키 로드
load_dotenv()
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

# 템플릿 문자열 정의
template_string = "Please tell me a fact about {planet}."

# 입력 변수 정의
input_variables = ["planet"]

# 프롬프트 템플릿 생성
prompt = PromptTemplate(template=template_string, input_variables=input_variables)

# 프롬프트 템플릿 저장
prompt.save("my_prompt.json")

# 프롬프트 템플릿 로드
loaded_prompt = load_prompt("my_prompt.json")

# 로드된 프롬프트 템플릿 사용
formatted_prompt = loaded_prompt.format(planet="Mars")

print("생성된 프롬프트:")
print(formatted_prompt)

코드 설명

1. 환경 변수 로드 및 설정

  • .env 파일에서 OPENAI_API_KEY를 로드하여 환경 변수로 설정합니다.
  • 이는 API 키를 코드에 직접 포함하지 않고 안전하게 관리하기 위함입니다.

2. 프롬프트 템플릿 생성

  • 템플릿 문자열: "Please tell me a fact about {planet}."
    • {planet}은 나중에 값이 채워질 변수입니다.
  • 입력 변수: ["planet"]
    • 템플릿에서 사용되는 변수들의 리스트입니다.
  • PromptTemplate 생성: 템플릿 문자열과 입력 변수를 사용하여 프롬프트 템플릿 객체를 만듭니다.

3. 프롬프트 템플릿 저장

  • save 메서드 사용: 프롬프트 템플릿 객체의 save() 메서드를 사용하여 JSON 파일로 저장합니다.
  • "my_prompt.json": 저장될 파일의 이름이며, 프로젝트 디렉토리에 생성됩니다.

4. 프롬프트 템플릿 로드

  • load_prompt 함수 사용: load_prompt("my_prompt.json")를 사용하여 저장된 프롬프트 템플릿을 로드합니다.
  • loaded_prompt 객체: 로드된 프롬프트 템플릿이 저장됩니다.

5. 프롬프트 템플릿 사용

  • format 메서드 사용: planet 변수에 "Mars"를 전달하여 프롬프트를 생성합니다.
  • 생성된 프롬프트 출력: 결과를 출력하여 프롬프트가 올바르게 생성되었는지 확인합니다.

실행 결과 예시

생성된 프롬프트:
Please tell me a fact about Mars.

추가 설명

프롬프트 템플릿 저장 형식

  • 프롬프트 템플릿은 JSON 형식으로 저장됩니다.
  • 저장된 JSON 파일에는 템플릿 문자열과 입력 변수 목록이 포함됩니다.
  • 예를 들어, "my_prompt.json" 파일의 내용은 다음과 같습니다:
{
  "template": "Please tell me a fact about {planet}.",
  "input_variables": ["planet"]
}

프롬프트 템플릿 공유 및 재사용

  • 저장된 JSON 파일을 팀원들과 공유하여 동일한 프롬프트 템플릿을 사용할 수 있습니다.
  • 복잡한 프롬프트도 동일한 방법으로 저장하고 로드할 수 있습니다.

LangChain의 유용성

  • LangChain은 프롬프트 템플릿 관리 외에도 LLM과의 상호작용을 쉽게 해주는 다양한 기능을 제공합니다.
  • 프롬프트 템플릿을 저장하고 로드하는 기능은 대규모 프로젝트에서 일관성을 유지하고 개발 효율성을 높이는 데 도움이 됩니다.

마무리

이번 강의에서는 LangChain 라이브러리를 사용하여 프롬프트 템플릿을 저장하고 로드하는 방법에 대해 알아보았습니다. 이를 통해 프롬프트 템플릿의 재사용성과 공유성을 높일 수 있으며, 팀 협업과 유지보수에도 큰 도움이 됩니다.

OPENAI_API_KEY.env 파일에 저장하고 불러오는 방법도 함께 살펴보았습니다. 제공된 전체 실습 코드를 직접 실행해 보시면서 이해를 더욱 깊게 하실 수 있을 것입니다.


주의: 코드를 실행하기 전에 필요한 라이브러리가 모두 설치되어 있는지 확인하세요.

pip install langchain python-dotenv

profile
IT를 좋아합니다.

0개의 댓글