프롬프트 객체(Prompt Object)
프롬프트 객체(Prompt Object)
Ragas의 프롬프트는 다양한 지표와 합성 데이터 생성 작업 안에서 사용돼요. 각 작업에서 Ragas는 기본 프롬프트를 커스텀 프롬프트로 바꾸거나 수정할 수도 있게 해줘요. 이 가이드에서 Ragas의 프롬프트 객체 개요를 살펴볼게요.
출처: 문서
본문
프롬프트 객체의 구성 요소(Components of a Prompt Object)
Ragas에서 프롬프트 객체는 다음 핵심 구성 요소로 이루어져요:
-
지시문(Instruction): 모든 프롬프트의 기본 요소로, LLM이 수행해야 할 작업을 명확히 설명하는 자연어 지시문이에요. 프롬프트 객체의
instruction변수로 지정해요. -
퓨샷 예시(Few-Shot Examples): LLM은 퓨샷 예시가 주어지면 더 잘 수행하는 것으로 알려져 있어요. 예시가 작업 컨텍스트를 이해하고 더 정확한 응답을 생성하는 데 도움이 되기 때문이죠. 프롬프트 객체의
examples변수로 지정해요. 각 예시는 입력과 그에 대응하는 출력으로 구성되며, LLM이 작업을 학습하는 데 사용해요. -
입력 모델(Input Model): 모든 프롬프트는 출력을 만들기 위해 입력을 기대해요. Ragas에서는 이 입력의 기대 형식을
input_model변수로 정의해요. 프롬프트에 제공되는 데이터의 구조를 정의해 검증과 파싱을 가능하게 하는 Pydantic 모델이에요. -
출력 모델(Output Model): 실행 시 프롬프트는 출력을 생성해요. 이 출력의 형식은 프롬프트 객체의
output_model변수로 지정해요. 입력 모델처럼 출력 모델도 LLM이 만든 데이터의 구조를 정의해 검증과 파싱을 돕는 Pydantic 모델이에요.
예시(Example)
텍스트 생성 작업을 위한 프롬프트를 정의하는 프롬프트 객체 예시예요:
from ragas.prompt import PydanticPrompt
from pydantic import BaseModel, Field
class MyInput(BaseModel):
question: str = Field(description="The question to answer")
class MyOutput(BaseModel):
answer: str = Field(description="The answer to the question")
class MyPrompt(PydanticPrompt[MyInput,MyInput]):
instruction = "Answer the given question"
input_model = MyInput
output_model = MyOutput
examples = [
(
MyInput(question="Who's building the opensource standard for LLM app evals?"),
MyOutput(answer="Ragas")
)
]
효과적인 프롬프트 생성 가이드라인(Guidelines)
Ragas에서 프롬프트를 만들 때 다음 가이드라인을 고려하면 프롬프트가 효과적이고 작업 요구사항에 부합하도록 만들 수 있어요:
- 명확하고 간결한 지시문: LLM이 수행해야 할 작업을 명확히 정의하는 명확하고 간결한 지시문을 제공해요. 지시문의 모호함은 부정확한 응답으로 이어질 수 있어요.
- 관련된 퓨샷 예시: 작업과 관련된 다양한 시나리오를 다루는 관련 퓨샷 예시를 포함해요(이상적으로 3-5개). 이 예시는 LLM이 컨텍스트를 이해하고 정확한 응답을 생성하는 데 도움을 줘요.
- 간단한 입력·출력 모델: LLM이 기대하는 데이터 형식과 LLM이 생성하는 출력을 정확히 나타내는 간단하고 직관적인 입력·출력 모델을 정의해요. 모델이 복잡하다면 작업을 더 작은 하위 작업으로 나누고 각각 별도의 프롬프트를 사용해보세요.