提示对象
Ragas 中的提示(Prompt)用于各种指标和合成数据生成任务中。在每项任务中,Ragas 还提供了用户修改或替换默认提示为自定义提示的方式。本指南概述了 Ragas 中的提示对象(Prompt Object)。
提示对象(Prompt Object)的组成部分
在 Ragas 中,一个提示对象由以下关键组件组成
-
指令(Instruction):作为任何提示的基本要素,指令是一种自然语言的指示,清晰地描述了语言模型(LLM)应该执行的任务。这使用提示对象中的
instruction
变量来指定。 -
少量示例(Few-Shot Examples):众所周知,LLMs 在提供了少量示例(few-shot examples)后表现更好,因为它们有助于模型理解任务上下文并生成更准确的响应。这些示例使用提示对象中的
examples
变量来指定。每个示例包含一个输入及其相应的输出,LLM 使用这些来学习任务。 -
输入模型(Input Model):每个提示都需要一个输入来生成输出。在 Ragas 中,这种输入的预期格式是使用
input_model
变量定义的。这是一个 Pydantic 模型,概述了输入的结构,以便对提供给提示的数据进行验证和解析。 -
输出模型(Output Model):执行后,提示会生成一个输出。此输出的格式是使用提示对象中的
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 中创建提示时,请考虑以下指南,以确保您的提示有效并符合任务要求
- 清晰简洁的指令:提供清晰简洁的指令,明确定义 LLM 应该执行的任务。指令中的歧义可能导致不准确的响应。
- 相关的少量示例:包含相关的少量示例,涵盖与任务相关的各种场景(理想情况下为 3-5 个)。这些示例有助于 LLM 理解上下文并生成准确的响应。
- 简单的输入和输出模型:定义简单直观的输入和输出模型,准确表示 LLM 期望的数据格式以及 LLM 生成的输出。如果模型复杂,请尝试将任务分解为更小的子任务,并使用单独的提示。