https://www.inflearn.com/courses/lecture?courseId=333326&type=LECTURE&unitId=212603&subtitleLanguage=ko

프롬프트를 구성할때는 LLM에게 지시, 예시, 맥락제공, 질문 등의 언어행위등을 한다고 생각하자.

코랩에서 실습해보자.

from langchain_core.prompts import PromptTemplate

# 'name'과 'age'라는 두 개의 변수를 사용하는 프롬프트 템플릿 정의
template_text = "안녕 내 이름은 {name}이고 나이는 {age}살이야."

# PromptTemplate 인스턴스 생성
prompt_template = PromptTemplate.from_template(template_text)

# 템플릿 빈칸 채워서 프롬프트 완성
filled_prompt = prompt_template.format(name="홍길동", age=30)

filled_prompt

image.png

프롬프트가 완성되어있다.

프롬프트는 문자열 기반이기 때문에 파이썬의 문자열 연산자를 사용할 수 있다.

위 예시는 파이썬의 format() 메서드를 이용해 빈칸을 채운 예시임.

챗 프롬프트 템플릿

이전의 템플릿은 메시지 하나를 바탕으로 하나의 응답을 생성해내는 프롬프트 템플릿이었다면, ChatPromptTemplate 은 대화형 상황에서 여러 메시지를 배열로 만들어서 전달해 하나의 응답을 만들어내는데 쓰인다.

이 여러 메시지는 역할(role)과 내용(content)로 구성된다.

메시지 종류

  1. SystemMessage : 시스템의 기능 설명
  2. HumanMessage: 사용자의 질문을 나타냄
  3. AIMessage: AI모델의 응답 제공
  4. FunctionMessage: 특정 함수 호출의 결과를 나타냄