跳至内容

提示对象

Ragas中的提示词(prompts)被用于各种评估指标和合成数据生成任务中。在这些任务中,Ragas还提供了让用户修改或替换默认提示词为自定义提示词的功能。本指南将概述Ragas中的提示词对象。

提示对象的组成部分

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

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

  2. 少量示例: 众所周知,当提供少量示例时,LLMs表现更好,因为这些示例帮助模型理解任务上下文并生成更准确的响应。这些示例通过提示对象中的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="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生成的输出。如果模型过于复杂,尝试将任务拆分为更小的子任务,并为每个子任务使用单独的提示。