Prompt API 参考
Ragas 中的提示系统提供了一种灵活且类型安全的方式来为基于 LLM 的指标和其他组件定义提示。本页文档介绍了核心提示类及其用法。
概述
Ragas 使用基于 BasePrompt 类的模块化提示架构。提示可以是:
- 输入/输出模型:定义提示输入和输出结构的 Pydantic BaseModel 类
- 提示类:继承自
BasePrompt来定义指令、示例和提示生成逻辑 - 字符串提示:为实现向后兼容而设的简单文本提示
核心类
BasePrompt
BasePrompt(name: Optional[str] = None, language: str = 'english', original_hash: Optional[str] = None)
Bases: ABC
源代码位于 src/ragas/prompt/base.py
generate abstractmethod async
generate(llm: BaseRagasLLM, data: Any, temperature: Optional[float] = None, stop: Optional[List[str]] = None, callbacks: Callbacks = []) -> Any
根据提示生成单个补全结果。
源代码位于 src/ragas/prompt/base.py
generate_multiple abstractmethod
generate_multiple(llm: BaseRagasLLM, data: Any, n: int = 1, temperature: Optional[float] = None, stop: Optional[List[str]] = None, callbacks: Callbacks = []) -> Any
根据提示生成多个补全结果。
源代码位于 src/ragas/prompt/base.py
StringPrompt
StringPrompt(name: Optional[str] = None, language: str = 'english', original_hash: Optional[str] = None)
Bases: BasePrompt
一个可以使用 f-string 语法和附加数据进行格式化的简单提示。
对于那些偏好更灵活方法而不需要 Pydantic 模型的用户,此提示是 PydanticPrompt 的一个更简单的替代方案。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
instruction
|
str
|
可以与附加数据进行格式化的指令字符串。 |
必需 |
示例
>>> from ragas.prompt import string_prompt
>>> await prompt.generate(llm=llm, data={"category": "commerce"})
源代码位于 src/ragas/prompt/base.py
generate async
generate(llm: BaseRagasLLM, data: str, temperature: Optional[float] = None, stop: Optional[List[str]] = None, callbacks: Callbacks = []) -> str
根据指令和提供的数据生成文本。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
llm
|
BaseRagasLLM
|
用于文本生成的语言模型。 |
必需 |
data
|
Optional[Dict[str, Any]]
|
用于格式化指令的数据,默认为 None。 |
必需 |
n
|
int
|
要生成的补全数量,默认为 1。 |
必需 |
temperature
|
Optional[float]
|
用于文本生成的温度参数,默认为 None。 |
None
|
stop
|
Optional[List[str]]
|
用于文本生成的停止序列,默认为 None。 |
None
|
callbacks
|
Callbacks
|
在文本生成期间使用的回调函数,默认为 []。 |
[]
|
返回
| 类型 | 描述 |
|---|---|
str
|
生成的文本。 |
源代码位于 src/ragas/prompt/base.py
generate_multiple async
generate_multiple(llm: BaseRagasLLM, data: str, n: int = 1, temperature: Optional[float] = None, stop: Optional[List[str]] = None, callbacks: Callbacks = []) -> List[str]
根据指令和提供的数据生成多个不同的文本输出。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
llm
|
BaseRagasLLM
|
用于文本生成的语言模型。 |
必需 |
data
|
str
|
用于格式化指令的数据。 |
必需 |
n
|
int
|
要生成的补全数量,默认为 1。 |
1
|
temperature
|
Optional[float]
|
用于文本生成的温度参数,默认为 None。 |
None
|
stop
|
Optional[List[str]]
|
用于文本生成的停止序列,默认为 None。 |
None
|
callbacks
|
Callbacks
|
在文本生成期间使用的回调函数,默认为 []。 |
[]
|
返回
| 类型 | 描述 |
|---|---|
List[str]
|
一个包含 |
备注
- 启用缓存时,每个输出都会被唯一缓存以防止重复。
- 这确保了同一输入的多个输出是不同的。
- 之前缓存返回重复输出的问题已得到修复。
源代码位于 src/ragas/prompt/base.py
PydanticPrompt
PydanticPrompt(name: Optional[str] = None, language: str = 'english', original_hash: Optional[str] = None)
Bases: BasePrompt, Generic[InputModel, OutputModel]
源代码位于 src/ragas/prompt/base.py
generate async
generate(llm: Union[BaseRagasLLM, InstructorBaseRagasLLM, BaseLanguageModel], data: InputModel, temperature: Optional[float] = None, stop: Optional[List[str]] = None, callbacks: Optional[Callbacks] = None, retries_left: int = 3) -> OutputModel
使用提供的语言模型和输入数据生成单个输出。
此方法是 generate_multiple 的一个特例,只生成一个输出。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
llm
|
BaseRagasLLM
|
用于生成的语言模型。 |
必需 |
data
|
InputModel
|
用于生成的输入数据。 |
必需 |
temperature
|
float
|
用于控制生成随机性的温度参数。 |
None
|
stop
|
List[str]
|
用于结束生成的停止序列列表。 |
None
|
callbacks
|
Callbacks
|
在生成过程中调用的回调函数。 |
None
|
retries_left
|
int
|
对无效 LLM 响应的重试次数。 |
3
|
返回
| 类型 | 描述 |
|---|---|
OutputModel
|
生成的输出。 |
备注
此方法内部调用 generate_multiple 并设置 n=1,然后返回第一个(也是唯一一个)结果。
源代码位于 src/ragas/prompt/pydantic_prompt.py
generate_multiple async
generate_multiple(llm: Union[BaseRagasLLM, InstructorBaseRagasLLM, BaseLanguageModel], data: InputModel, n: int = 1, temperature: Optional[float] = None, stop: Optional[List[str]] = None, callbacks: Optional[Callbacks] = None, retries_left: int = 3) -> List[OutputModel]
使用提供的语言模型和输入数据生成多个输出。
参数
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
llm
|
BaseRagasLLM
|
用于生成的语言模型。 |
必需 |
data
|
InputModel
|
用于生成的输入数据。 |
必需 |
n
|
int
|
要生成的输出数量。默认为 1。 |
1
|
temperature
|
float
|
用于控制生成随机性的温度参数。 |
None
|
stop
|
List[str]
|
用于结束生成的停止序列列表。 |
None
|
callbacks
|
Callbacks
|
在生成过程中调用的回调函数。 |
None
|
retries_left
|
int
|
对无效 LLM 响应的重试次数。 |
3
|
返回
| 类型 | 描述 |
|---|---|
List[OutputModel]
|
一个生成输出的列表。 |
抛出
| 类型 | 描述 |
|---|---|
RagasOutputParserException
|
如果解析输出时出错。 |
源代码位于 src/ragas/prompt/pydantic_prompt.py
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | |
adapt async
adapt(target_language: str, llm: Union[BaseRagasLLM, InstructorBaseRagasLLM], adapt_instruction: bool = False) -> 'PydanticPrompt[InputModel, OutputModel]'
将提示调整为新语言。
源代码位于 src/ragas/prompt/pydantic_prompt.py
save
将提示保存到文件。
源代码位于 src/ragas/prompt/pydantic_prompt.py
BoolIO
Bases: BaseModel
StringIO
Bases: BaseModel
PromptMixin
用于包含提示的类的 Mixin 类。例如:BaseSynthesizer, MetricWithLLM
get_prompts
get_prompts() -> Dict[str, PydanticPrompt]
set_prompts
设置该类的提示。
抛出
| 类型 | 描述 |
|---|---|
ValueError
|
如果提示不是 |
源代码位于 src/ragas/prompt/mixin.py
adapt_prompts async
adapt_prompts(language: str, llm: Union[BaseRagasLLM, InstructorBaseRagasLLM], adapt_instruction: bool = False) -> Dict[str, PydanticPrompt]
将类中的提示调整到给定语言,并使用给定的 LLM。
备注
请确保使用最佳可用 LLM 来调整提示,然后使用 save_prompts 和 load_prompts 方法保存和加载提示。
源代码位于 src/ragas/prompt/mixin.py
save_prompts
将提示以 {name}_{language}.json 的格式保存到目录中。
源代码位于 src/ragas/prompt/mixin.py
load_prompts
从路径加载提示。文件格式应为 {name}_{language}.json。
源代码位于 src/ragas/prompt/mixin.py
指标集合提示
Ragas 中的现代指标使用专门的提示类。每个指标模块包含:
- 输入模型:定义提示所需的数据(例如,
FaithfulnessInput) - 输出模型:定义预期的 LLM 响应结构(例如,
FaithfulnessOutput) - 提示类:继承自
BasePrompt,用于生成包含示例和指令的提示字符串
示例:忠实度指标提示
from ragas.metrics.collections.faithfulness.util import (
FaithfulnessPrompt,
FaithfulnessInput,
FaithfulnessOutput,
)
# The prompt class combines input/output models with instructions and examples
prompt = FaithfulnessPrompt()
# Create input data
input_data = FaithfulnessInput(
response="The capital of France is Paris.",
context="Paris is the capital and most populous city of France."
)
# Generate the prompt string for the LLM
prompt_string = prompt.to_string(input_data)
# The output will be structured according to FaithfulnessOutput model
可用指标提示
有关其提示的详细信息,请参阅各个指标的文档
自定义
有关自定义指标提示的详细指导,请参阅修改指标中的提示。