参考
以下是 promptfoo 配置文件的主要结构:
配置
属性 | 类型 | 必填 | 描述 |
---|---|---|---|
description | string | 否 | 可选的描述,说明你的 LLM 正在尝试做什么 |
tags | Record<string, string> | 否 | 可选的标签,用于描述测试套件(例如 env: production , application: chatbot ) |
providers | string | string[] | Record<string, ProviderOptions> | ProviderOptions[] | 是 | 要使用的一个或多个 LLM API |
prompts | string | string[] | 是 | 要加载的一个或多个提示 |
tests | string | Test Case[] | 是 | 测试文件的路径,或 LLM 提示变体列表(即“测试用例”) |
defaultTest | Partial Test Case | 否 | 为每个测试用例设置默认属性。例如,可以为所有测试用例设置断言。 |
outputPath | string | 否 | 输出写入位置。如果未设置,则写入控制台/网页查看器。 |
evaluateOptions.maxConcurrency | number | 否 | 最大并发请求数。默认为 4 |
evaluateOptions.repeat | number | 否 | 每个测试用例的运行次数。默认为 1 |
evaluateOptions.delay | number | 否 | 强制测试运行器在每次 API 调用后等待(毫秒) |
evaluateOptions.showProgressBar | boolean | 否 | 是否显示进度条 |
扩展名 | 字符串数组 | 否 | 要加载的扩展文件列表。每个扩展是一个带有函数名的文件路径。可以是 Python (.py) 或 JavaScript (.js) 文件。支持的钩子有 'beforeAll', 'afterAll', 'beforeEach', 'afterEach'。 |
测试用例
测试用例代表一个单一的示例输入,该输入被提供给所有提示和提供者。
属性 | 类型 | 是否必需 | 描述 |
---|---|---|---|
描述 | 字符串 | 否 | 你要测试的内容的描述 |
变量 | Record<string, string | string[] | any> | string | 否 | 用于替换提示中的键值对。如果 vars 是一个普通字符串,它将被视为一个 YAML 文件路径,从中加载变量映射。 |
提供者 | 字符串 | ProviderOptions | ApiProvider | 否 | 覆盖此特定测试用例的默认提供者 |
断言 | 断言[] | 否 | 对 LLM 输出运行的一系列自动检查 |
阈值 | 数字 | 否 | 如果断言的组合分数低于此数字,测试将失败 |
元数据 | Record<string, string | string[] | any> | 否 | 包含在测试用例中的附加元数据,对过滤或分组结果很有用 |
选项 | 对象 | 否 | 测试用例的附加配置设置 |
选项.transformVars | 字符串 |