跳至内容

Prompt Object

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

提示对象的组成部分

在 Ragas 中,prompt 对象由以下关键组件组成:

  1. 指令:任何提示的基本要素,指令是以自然语言给出的指示,清晰描述语言模型 (LLM) 应执行的任务。它在提示对象内使用 instruction 变量来指定。

  2. 少样本示例: LLMs 通常在提供少量示例时表现更好,因为这些示例有助于模型理解任务上下文并生成更准确的响应。这些示例通过 prompt 对象中的 examples 变量指定。每个示例由一个输入及其对应的输出组成,LLM 使用这些示例来学习任务。

  3. 输入模型:每个提示都需要一个输入以生成输出。在 Ragas 中,该输入的期望格式通过 input_model 变量来定义。它是一个 Pydantic 模型,概述了输入的结构,便于对提供给提示的数据进行验证和解析。

  4. 输出模型:执行时,一个提示会生成一个输出。该输出的格式通过提示对象中的 output_model 变量指定。与输入模型类似,输出模型是一个 Pydantic 模型,定义了输出的结构,便于对 LLM 生成的数据进行验证和解析。

示例

下面是一个 prompt 对象的示例,该对象为文本生成任务定义了一个提示:

from ragas.experimental.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. 清晰简明的指示: 提供清晰简明的指示,明确界定LLM应执行的任务。指示中的歧义可能导致不准确的回答。
  2. 相关少样本示例: 包含覆盖与任务相关的多种场景的示例(理想为3-5个)。这些示例有助于大型语言模型(LLM)理解上下文并生成准确的响应。
  3. 简单的输入和输出模型: 定义简单且直观的输入和输出模型,准确表示 LLM 预期的数据格式以及 LLM 生成的输出。如果模型较为复杂,尝试将任务拆分为更小的子任务,并为每个子任务使用单独的提示。
优云智算