Skip to content

Prompt 对象

在 Ragas 中,提示语用于各种指标和合成数据生成任务中。在这些任务中,Ragas 还为用户提供了一种方式,可以用自定义提示语修改或替换默认提示语。本指南概述了 Ragas 中的 Prompt 对象。

Prompt 对象的组成部分

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

  1. 指令:任何提示语的基本元素,指令是用自然语言描述的明确指示,清楚地说明了语言模型(LLM)应执行的任务。这通过提示语对象中的 instruction 变量指定。

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

  3. 输入模型:每个提示语都期望一个输入以产生输出。在 Ragas 中,使用 input_model 变量定义此输入的预期格式。这是一个 Pydantic 模型,概述了输入的结构,从而实现对提供给提示语的数据的验证和解析。

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

示例

以下是一个定义文本生成任务提示语的提示语对象示例:

from ragas.experimental.prompt import PydanticPrompt
from pydantic import BaseModel, Field

class MyInput(BaseModel):
    question: str = Field(description="要回答的问题")

class MyOutput(BaseModel):
    answer: str = Field(description="问题的答案")

class MyPrompt(PydanticPrompt[MyInput,MyInput]):
    instruction = "回答给定的问题"
    input_model = MyInput
    output_model = MyOutput
    examples = [
        (
            MyInput(question="谁在构建用于 LLM 应用程序评估的开源标准?"),
            MyOutput(answer="Ragas")
        )
    ]

创建有效提示语的指南

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

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