跳转到主要内容

browseruse_bench.utils.eval_utils

评估相关的工具函数和类。

导入

from browseruse_bench.utils import (
    EvaluationModel,
    load_evaluation_model,
    encode_image,
    extract_score_from_response,
    calculate_success,
    normalized_results_file,
)

EvaluationModel

用于任务评估的 OpenAI 模型封装类。
class EvaluationModel:
    def __init__(
        self,
        model: str = "gpt-4o",
        api_key: str = None,
        base_url: str = None
    )
model
str
默认值:"gpt-4o"
模型名称
api_key
str
默认值:"None"
API Key,默认从环境变量读取
base_url
str
默认值:"None"
API Base URL,默认从环境变量读取

generate

生成评估响应,带自动重试。
def generate(
    self,
    messages: List[Dict],
    max_tokens: int = 2048,
    temperature: float = 0.3,
    **kwargs
) -> str

load_evaluation_model

加载评估模型,支持环境变量回退。
def load_evaluation_model(
    model: str = None,
    api_key: str = None,
    base_url: str = None
) -> EvaluationModel

配置

评估模型在根目录 config.yamleval: 段配置:
eval:
  model: gpt-5.4
  api_key: $OPENAI_API_KEY
  base_url: $OPENAI_BASE_URL
api_keybase_url 支持 $VAR 占位符,会在运行时从 .env 解析。

encode_image

将 PIL 图像转换为 base64 字符串。
def encode_image(
    image: PIL.Image,
    scale_factor: float = 1.0
) -> str
image
PIL.Image
必填
PIL Image 对象
scale_factor
float
默认值:"1.0"
图像缩放比例(0.0 到 1.0 之间),例如 0.5 表示缩放到原尺寸的 50%

extract_score_from_response

从评估响应中提取数值分数。
def extract_score_from_response(response: str) -> int
response
str
必填
评估响应文本
return
int
提取出的分数(未找到时返回 0)

calculate_success

根据分数阈值判断任务是否成功。
def calculate_success(
    score: int,
    threshold: int = 60
) -> bool
score
int
必填
任务分数
threshold
int
默认值:"60"
成功阈值
return
bool
分数达到或超过阈值时返回 True

normalized_results_file

上下文管理器,返回一个保证为 JSONL 格式的路径。
@contextmanager
def normalized_results_file(results_file: Path) -> Generator[Path, None, None]
results_file
Path
必填
结果文件路径

使用示例

from browseruse_bench.utils import normalized_results_file

with normalized_results_file(Path("results.json")) as jsonl_path:
    # jsonl_path 保证为 JSONL 格式
    with open(jsonl_path) as f:
        for line in f:
            record = json.loads(line)