프롬프트 객체(Prompt Object)

프롬프트 객체(Prompt Object)

Ragas의 프롬프트는 다양한 지표와 합성 데이터 생성 작업 안에서 사용돼요. 각 작업에서 Ragas는 기본 프롬프트를 커스텀 프롬프트로 바꾸거나 수정할 수도 있게 해줘요. 이 가이드에서 Ragas의 프롬프트 객체 개요를 살펴볼게요.

출처: 문서

본문

프롬프트 객체의 구성 요소(Components of a Prompt Object)

Ragas에서 프롬프트 객체는 다음 핵심 구성 요소로 이루어져요:

  1. 지시문(Instruction): 모든 프롬프트의 기본 요소로, LLM이 수행해야 할 작업을 명확히 설명하는 자연어 지시문이에요. 프롬프트 객체의 instruction 변수로 지정해요.

  2. 퓨샷 예시(Few-Shot Examples): LLM은 퓨샷 예시가 주어지면 더 잘 수행하는 것으로 알려져 있어요. 예시가 작업 컨텍스트를 이해하고 더 정확한 응답을 생성하는 데 도움이 되기 때문이죠. 프롬프트 객체의 examples 변수로 지정해요. 각 예시는 입력과 그에 대응하는 출력으로 구성되며, LLM이 작업을 학습하는 데 사용해요.

  3. 입력 모델(Input Model): 모든 프롬프트는 출력을 만들기 위해 입력을 기대해요. Ragas에서는 이 입력의 기대 형식을 input_model 변수로 정의해요. 프롬프트에 제공되는 데이터의 구조를 정의해 검증과 파싱을 가능하게 하는 Pydantic 모델이에요.

  4. 출력 모델(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에서 프롬프트를 만들 때 다음 가이드라인을 고려하면 프롬프트가 효과적이고 작업 요구사항에 부합하도록 만들 수 있어요:

  1. 명확하고 간결한 지시문: LLM이 수행해야 할 작업을 명확히 정의하는 명확하고 간결한 지시문을 제공해요. 지시문의 모호함은 부정확한 응답으로 이어질 수 있어요.
  2. 관련된 퓨샷 예시: 작업과 관련된 다양한 시나리오를 다루는 관련 퓨샷 예시를 포함해요(이상적으로 3-5개). 이 예시는 LLM이 컨텍스트를 이해하고 정확한 응답을 생성하는 데 도움을 줘요.
  3. 간단한 입력·출력 모델: LLM이 기대하는 데이터 형식과 LLM이 생성하는 출력을 정확히 나타내는 간단하고 직관적인 입력·출력 모델을 정의해요. 모델이 복잡하다면 작업을 더 작은 하위 작업으로 나누고 각각 별도의 프롬프트를 사용해보세요.

더 알아보기 (Learn more)