跳转到内容

Prompt 对象

在 Ragas 中,提示(Prompts)被用于各种指标和合成数据生成任务。在每一个任务中,Ragas 也为用户提供了一种方法,可以用自定义提示来修改或替换默认提示。本指南概述了 Ragas 中的提示对象(Prompt Object)。

提示对象的组件

在 Ragas 中,一个提示对象由以下关键组件构成:

  1. 指令(Instruction):作为任何提示的基本元素,指令是一种自然语言指令,清晰地描述了语言模型(LLM)应执行的任务。这在提示对象中通过 instruction 变量指定。

  2. 小样本示例(Few-Shot Examples):众所周知,为语言模型提供小样本示例可以提升其性能,因为这些示例有助于模型理解任务上下文并生成更准确的响应。这些示例在提示对象中通过 examples 变量指定。每个示例都包含一个输入及其对应的输出,语言模型利用这些来学习任务。

  3. 输入模型(Input Model):每个提示都需要一个输入来产生输出。在 Ragas 中,此输入的预期格式通过 input_model 变量定义。这是一个 Pydantic 模型,它勾勒出输入的结构,从而能够对提供给提示的数据进行验证和解析。

  4. 输出模型(Output Model):执行后,提示会生成一个输出。此输出的格式在提示对象中通过 output_model 变量指定。与输入模型一样,输出模型也是一个 Pydantic 模型,它定义了输出的结构,以便于对语言模型产生的数据进行验证和解析。

示例

以下是一个提示对象的示例,它定义了一个用于文本生成任务的提示:

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")
        )
    ]

创建有效提示的指南

在 Ragas 中创建提示时,请考虑以下指南,以确保您的提示有效并符合任务要求:

  1. 清晰简洁的指令:提供清晰简洁的指令,明确定义语言模型应执行的任务。指令中的模糊不清可能导致不准确的响应。
  2. 相关的小样本示例:包含相关的小样本示例,覆盖与任务相关的各种场景(理想情况下为 3-5 个)。这些示例有助于语言模型理解上下文并生成准确的响应。
  3. 简单的输入和输出模型:定义简单直观的输入和输出模型,准确表示语言模型预期的输入数据格式以及其生成的输出。如果模型复杂,请尝试将任务分解为带有单独提示的更小子任务。