pydantic_evals.evaluators
Contains dataclass
基类:Evaluator[object, object, object]
检查输出是否包含预期输出。
对于字符串,检查 expected_output 是否为 output 的子字符串。对于列表/元组,检查 expected_output 是否在 output 中。对于字典,检查 expected_output 中的所有键值对是否存在于 output 中。
注意:case_sensitive 仅在值和输出都是字符串时适用。
源代码位于 pydantic_evals/pydantic_evals/evaluators/common.py
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
|
Equals dataclass
基类:Evaluator[object, object, object]
检查输出是否与提供的值完全相等。
源代码位于 pydantic_evals/pydantic_evals/evaluators/common.py
29 30 31 32 33 34 35 36 37 |
|
EqualsExpected dataclass
基类:Evaluator[object, object, object]
检查输出是否与预期输出完全相等。
源代码位于 pydantic_evals/pydantic_evals/evaluators/common.py
40 41 42 43 44 45 46 47 48 49 |
|
HasMatchingSpan dataclass
基类:Evaluator[object, object, object]
检查跨度树是否包含与指定查询匹配的跨度。
源代码位于 pydantic_evals/pydantic_evals/evaluators/common.py
257 258 259 260 261 262 263 264 265 266 267 268 |
|
IsInstance dataclass
基类:Evaluator[object, object, object]
检查输出是否为具有给定名称的类型的实例。
源代码位于 pydantic_evals/pydantic_evals/evaluators/common.py
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
|
LLMJudge dataclass
基类:Evaluator[object, object, object]
判断语言模型的输出是否满足所提供评分标准的要求。
如果您未指定模型,则会使用默认模型进行评判。默认模型初始为 'openai:gpt-4o',但可以通过调用 set_default_judge_model
来覆盖。
源代码位于 pydantic_evals/pydantic_evals/evaluators/common.py
186 187 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 |
|
MaxDuration dataclass
基类:Evaluator[object, object, object]
检查执行时间是否低于指定的最大值。
源代码位于 pydantic_evals/pydantic_evals/evaluators/common.py
151 152 153 154 155 156 157 158 159 160 161 162 |
|
输出配置
基类:TypedDict
LLMJudge 评估器的分数和断言输出的配置。
源代码位于 pydantic_evals/pydantic_evals/evaluators/common.py
165 166 167 168 169 |
|
Python dataclass
基类:Evaluator[object, object, object]
此评估器的输出是评估所提供的 Python 表达式的结果。
警告:此评估器会运行任意 Python 代码,因此您绝不应该将其用于不受信任的输入。
源代码位于 pydantic_evals/pydantic_evals/evaluators/common.py
272 273 274 275 276 277 278 279 280 281 282 283 284 |
|
EvaluatorContext dataclass
基类:Generic[InputsT, OutputT, MetadataT]
用于评估任务执行的上下文。
该类的实例是所有评估器的唯一输入。它包含评估任务执行所需的所有信息,包括输入、输出、元数据和遥测数据。
评估器使用此上下文来访问任务输入、实际输出、预期输出以及其他信息,以评估任务执行的结果。
示例
from dataclasses import dataclass
from pydantic_evals.evaluators import Evaluator, EvaluatorContext
@dataclass
class ExactMatch(Evaluator):
def evaluate(self, ctx: EvaluatorContext) -> bool:
# Use the context to access task inputs, outputs, and expected outputs
return ctx.output == ctx.expected_output
源代码位于 pydantic_evals/pydantic_evals/evaluators/context.py
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
|
inputs instance-attribute
inputs: InputsT
为此用例提供给任务的输入。
metadata 实例属性
metadata: MetadataT | None
与用例关联的元数据(如果已提供)。如果未指定元数据,则可能为 None。
expected_output instance-attribute
expected_output: OutputT | None
用例的预期输出(如果已提供)。如果未指定预期输出,则可能为 None。
output instance-attribute
output: OutputT
任务为此用例生成的实际输出。
attributes instance-attribute
与此用例的任务运行关联的属性。
这些属性可以通过在评估任务期间执行的任何代码中调用 pydantic_evals.dataset.set_eval_attribute
来设置。
metrics instance-attribute
与此用例的任务运行关联的指标。
这些指标可以通过在评估任务期间执行的任何代码中调用 pydantic_evals.dataset.increment_eval_metric
来设置。
EvaluationReason dataclass
运行评估器的结果,附带可选解释。
包含一个标量值和对该值的可选“理由”解释。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
值
|
EvaluationScalar
|
评估的标量结果(布尔值、整数、浮点数或字符串)。 |
必需 |
理由
|
str | None
|
对评估结果的可选解释。 |
None
|
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
EvaluationResult dataclass
基类:Generic[EvaluationScalarT]
单个评估结果的详细信息。
包含单个评估的名称、值、理由和源评估器。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
name
|
str
|
评估的名称。 |
必需 |
值
|
EvaluationScalarT
|
评估的标量结果。 |
必需 |
理由
|
str | None
|
对评估结果的可选解释。 |
必需 |
来源
|
评估器规范
|
生成此结果的评估器的规范。 |
必需 |
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
|
向下转型
downcast(
*value_types: type[T],
) -> EvaluationResult[T] | None
尝试将此结果向下转型为更具体的类型。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
*value_types
|
type[T]
|
用于检查值的类型。 |
()
|
返回
类型 | 描述 |
---|---|
EvaluationResult[T] | None
|
如果值是给定类型之一的实例,则返回此结果的向下转型版本, |
EvaluationResult[T] | None
|
否则返回 None。 |
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
|
Evaluator dataclass
基类:Generic[InputsT, OutputT, MetadataT]
所有评估器的基类。
评估器可以根据 EvaluatorContext 以多种方式评估任务的性能。
子类必须实现 evaluate
方法。请注意,它可以使用 def
或 async def
定义。
示例
from dataclasses import dataclass
from pydantic_evals.evaluators import Evaluator, EvaluatorContext
@dataclass
class ExactMatch(Evaluator):
def evaluate(self, ctx: EvaluatorContext) -> bool:
return ctx.output == ctx.expected_output
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 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 |
|
get_serialization_name classmethod
get_serialization_name() -> str
返回此评估器在序列化期间使用的“名称”。
返回
类型 | 描述 |
---|---|
str
|
评估器的名称,通常是类名。 |
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
162 163 164 165 166 167 168 169 |
|
name classmethod
deprecated
name() -> str
已弃用
name
已重命名,请改用 get_serialization_name
。
name
已重命名,请改用 get_serialization_name
。
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
171 172 173 174 175 |
|
获取默认评估名称
get_default_evaluation_name() -> str
返回此评估器输出在报告中使用的默认名称。
默认情况下,如果评估器有一个名为 evaluation_name
的字符串类型属性,则会使用该属性。否则,将使用评估器的序列化名称(通常是类名)。
可以重写此方法以在评估报告中获得更具描述性的名称,例如使用实例信息。
请注意,返回结果映射的评估器将始终使用该映射的键作为相关评估结果的名称。
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
|
evaluate abstractmethod
evaluate(
ctx: EvaluatorContext[InputsT, OutputT, MetadataT],
) -> EvaluatorOutput | Awaitable[EvaluatorOutput]
在给定上下文中评估任务输出。
这是子类必须实现的主要评估方法。它可以是同步的或异步的,直接返回一个 EvaluatorOutput 或一个 Awaitable[EvaluatorOutput]。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
ctx
|
EvaluatorContext[InputsT, OutputT, MetadataT]
|
包含用于评估的输入、输出和元数据的上下文。 |
必需 |
返回
类型 | 描述 |
---|---|
EvaluatorOutput | Awaitable[EvaluatorOutput]
|
评估结果,可以是标量值、EvaluationReason 或从评估名称到这两者之一的映射。 |
EvaluatorOutput | Awaitable[EvaluatorOutput]
|
可以同步返回,也可以作为异步评估的 |
EvaluatorOutput | Awaitable[EvaluatorOutput]
|
可等待对象返回。 |
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 |
|
同步评估
evaluate_sync(
ctx: EvaluatorContext[InputsT, OutputT, MetadataT],
) -> EvaluatorOutput
同步运行评估器,处理同步和异步实现。
此方法通过使用 run_until_complete 运行任何异步 evaluate 实现直到完成来确保同步执行。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
ctx
|
EvaluatorContext[InputsT, OutputT, MetadataT]
|
包含用于评估的输入、输出和元数据的上下文。 |
必需 |
返回
类型 | 描述 |
---|---|
评估器输出
|
评估结果,可以是标量值、EvaluationReason 或从评估名称到这两者之一的映射。 |
评估器输出
|
从评估名称到这两者之一的映射。 |
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
|
evaluate_async async
evaluate_async(
ctx: EvaluatorContext[InputsT, OutputT, MetadataT],
) -> EvaluatorOutput
异步运行评估器,处理同步和异步实现。
此方法通过正确等待任何异步 evaluate 实现来确保异步执行。对于同步实现,它直接返回结果。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
ctx
|
EvaluatorContext[InputsT, OutputT, MetadataT]
|
包含用于评估的输入、输出和元数据的上下文。 |
必需 |
返回
类型 | 描述 |
---|---|
评估器输出
|
评估结果,可以是标量值、EvaluationReason 或从评估名称到这两者之一的映射。 |
评估器输出
|
从评估名称到这两者之一的映射。 |
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
|
序列化
serialize(info: SerializationInfo) -> Any
将此评估器序列化为 JSON 可序列化的形式。
返回
类型 | 描述 |
---|---|
Any
|
此评估器作为 EvaluatorSpec 的 JSON 可序列化表示。 |
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
254 255 256 257 258 259 260 261 262 263 264 265 |
|
构建序列化参数
构建用于序列化的参数。
评估器被序列化以作为“来源”包含在 EvaluationResult
中。如果您想为此或其他目的修改评估器的序列化方式,可以重写此方法。
返回
类型 | 描述 |
---|---|
dict[str, Any]
|
一个用于序列化期间的参数字典。 |
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 |
|
EvaluatorFailure dataclass
表示在评估器执行期间引发的失败。
源代码位于 pydantic_evals/pydantic_evals/evaluators/evaluator.py
104 105 106 107 108 109 110 111 |
|
EvaluatorOutput module-attribute
EvaluatorOutput = (
EvaluationScalar
| EvaluationReason
| Mapping[str, EvaluationScalar | EvaluationReason]
)
评估器输出的类型,可以是标量、EvaluationReason 或从名称到这两者之一的映射。
评估器规范
基类:BaseModel
待运行评估器的规范。
该类用于以可序列化格式表示评估器,在 YAML 或 JSON 数据集文件中定义评估器时,为方便起见支持各种简写形式。
特别是,支持以下每种形式来指定名为 MyEvaluator
的评估器: * 'MyEvaluator'
- 如果其 __init__
不带参数,则仅使用评估器子类的(字符串)名称 * {'MyEvaluator': first_arg}
- 将单个参数作为第一个位置参数传递给 MyEvaluator.__init__
* {'MyEvaluator': {k1: v1, k2: v2}}
- 将多个关键字参数传递给 MyEvaluator.__init__
源代码位于 pydantic_evals/pydantic_evals/evaluators/spec.py
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
|
arguments instance-attribute
传递给评估器构造函数的参数。
可以是 None(无参数)、元组(单个位置参数)或字典(关键字参数)。
args property
kwargs property
deserialize classmethod
deserialize(
value: Any,
handler: ModelWrapValidatorHandler[EvaluatorSpec],
) -> EvaluatorSpec
从各种格式反序列化 EvaluatorSpec。
此验证器处理评估器规范的各种简写形式,将它们转换为一致的 EvaluatorSpec 实例。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
值
|
Any
|
要反序列化的值。 |
必需 |
处理器
|
ModelWrapValidatorHandler[EvaluatorSpec]
|
验证器处理器。 |
必需 |
返回
类型 | 描述 |
---|---|
评估器规范
|
反序列化后的 EvaluatorSpec。 |
引发
类型 | 描述 |
---|---|
ValidationError
|
如果值无法反序列化。 |
源代码位于 pydantic_evals/pydantic_evals/evaluators/spec.py
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
|
序列化
serialize(
handler: SerializerFunctionWrapHandler,
info: SerializationInfo,
) -> Any
如果可能,使用适当的简写形式进行序列化。
返回
类型 | 描述 |
---|---|
Any
|
序列化后的评估器规范,使用尽可能短的形式 |
Any
|
|
Any
|
|
Any
|
|
源代码位于 pydantic_evals/pydantic_evals/evaluators/spec.py
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
|
评分输出
基类:BaseModel
评分操作的输出。
源代码位于 pydantic_evals/pydantic_evals/evaluators/llm_as_a_judge.py
27 28 29 30 31 32 |
|
judge_output async
judge_output(
output: Any,
rubric: str,
model: Model | KnownModelName | None = None,
model_settings: ModelSettings | None = None,
) -> GradingOutput
根据评分标准对模型输出进行评判。
如果未指定模型,则使用默认模型。默认模型初始为 'openai:gpt-4o',但可以使用 set_default_judge_model
函数进行更改。
源代码位于 pydantic_evals/pydantic_evals/evaluators/llm_as_a_judge.py
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
|
judge_input_output async
judge_input_output(
inputs: Any,
output: Any,
rubric: str,
model: Model | KnownModelName | None = None,
model_settings: ModelSettings | None = None,
) -> GradingOutput
根据输入和评分标准对模型输出进行评判。
如果未指定模型,则使用默认模型。默认模型初始为 'openai:gpt-4o',但可以使用 set_default_judge_model
函数进行更改。
源代码位于 pydantic_evals/pydantic_evals/evaluators/llm_as_a_judge.py
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
|
judge_input_output_expected async
judge_input_output_expected(
inputs: Any,
output: Any,
expected_output: Any,
rubric: str,
model: Model | KnownModelName | None = None,
model_settings: ModelSettings | None = None,
) -> GradingOutput
根据输入和评分标准对模型输出进行评判。
如果未指定模型,则使用默认模型。默认模型初始为 'openai:gpt-4o',但可以使用 set_default_judge_model
函数进行更改。
源代码位于 pydantic_evals/pydantic_evals/evaluators/llm_as_a_judge.py
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
|
judge_output_expected async
judge_output_expected(
output: Any,
expected_output: Any,
rubric: str,
model: Model | KnownModelName | None = None,
model_settings: ModelSettings | None = None,
) -> GradingOutput
根据预期输出、实际输出和评分标准对模型输出进行评判。
如果未指定模型,则使用默认模型。默认模型初始为 'openai:gpt-4o',但可以使用 set_default_judge_model
函数进行更改。
源代码位于 pydantic_evals/pydantic_evals/evaluators/llm_as_a_judge.py
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
|
设置默认裁判模型
set_default_judge_model(
model: Model | KnownModelName,
) -> None
设置用于评判的默认模型。
如果在 judge_output
和 judge_input_output
的 model
参数中传递 None
,则使用此模型。
源代码位于 pydantic_evals/pydantic_evals/evaluators/llm_as_a_judge.py
205 206 207 208 209 210 211 |
|