# 参数说明
执行 `evalscope eval --help` 可获取全部参数说明。
## 环境变量
以下环境变量可在启动前设置,用于控制全局默认行为:
| 环境变量 | 说明 | 默认值 |
|----------|------|--------|
| `EVALSCOPE_CACHE` | EvalScope 缓存根目录,用于存放数据集、评测中间文件等 | `~/.cache/evalscope` |
| `EVALSCOPE_LANGUAGE` | 全局默认语言,影响报告等输出语言(`en` 或 `zh`) | `en` |
| `EVALSCOPE_HEARTBEAT_INTERVAL` | 评测进度心跳上报间隔(秒) | `60` |
| `MODELSCOPE_CACHE` | ModelScope 模型与数据集缓存根目录 | `~/.cache/modelscope/hub` |
| `DATASET_TF_BATCH_SIZE` | 数据集转换的批处理大小 | `100` |
## 模型参数
| 参数 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `--model` | `str` | 被评测的模型名称
• ModelScope模型ID(如`Qwen/Qwen2.5-0.5B-Instruct`)
• 本地模型路径(如`/path/to/model`)
• API服务的模型ID(如`Qwen2.5-0.5B-Instruct`) | - |
| `--model-id` | `str` | 模型别名,用于报告展示 | `model`的最后一部分 |
| `--api-url` | `str` | 模型API端点,支持OpenAI兼容格式和OpenAI Responses API根路径
示例:`http://127.0.0.1:8000/v1` 或 `https://api.openai.com/v1` | `None` |
| `--api-key` | `str` | 模型API端点密钥 | `EMPTY` |
| `--model-args` | `str` | 模型加载参数,逗号分隔的`key=value`或JSON字符串
• `revision`: 模型版本
• `precision`: 模型精度
• `device_map`: 设备分配 | `revision=master`
`precision=torch.float16`
`device_map=auto` |
| `--model-task` | `str` | 模型任务类型 | `text_generation`
(可选:`image_generation`) |
| `--chat-template` | `str` | 模型推理模板,支持Jinja模板字符串(仅本地推理支持该参数) | `None`(使用transformers默认) |
**示例:**
```bash
# key=value形式
--model-args revision=master,precision=torch.float16,device_map=auto
# JSON字符串形式
--model-args '{"revision": "master", "precision": "torch.float16", "device_map": "auto"}'
```
## 模型推理参数
`--generation-config` 参数支持以下配置项(逗号分隔的`key=value`或JSON字符串):
| 参数 | 类型 | 说明 | 支持的后端 |
|------|------|------|------------|
| `timeout` | `int`/`float` | 请求超时时间(秒) | 所有 |
| `retries` | `int` | 重试次数,默认为5 | OpenAI兼容 |
| `retry_interval` | `int` | 重试间隔时间(秒),默认10 | OpenAI兼容 |
| `stream` | `bool` | 是否流式返回响应 | 所有 |
| `max_tokens` | `int` | 最大生成token数量 | 所有 |
| `top_p` | `float` | Nucleus采样,考虑概率质量为top_p的token | 所有 |
| `temperature` | `float` | 采样温度,范围0~2,越高越随机 | 所有 |
| `stop_seqs` | `list[str]` | 触发停止生成的序列列表,返回文本不包含该序列 | 所有 |
| `frequency_penalty` | `float` | 范围-2.0~2.0,正值惩罚重复token | OpenAI兼容 |
| `presence_penalty` | `float` | 范围-2.0~2.0,正值惩罚已出现token | OpenAI兼容 |
| `repetition_penalty` | `float` | 对已生成token施加指数惩罚,1.0 表示不惩罚 | OpenAI兼容、HuggingFace、vLLM |
| `logit_bias` | `dict` | token id到偏置值的映射(-100~100)
示例:`"42=10,43=-10"` | OpenAI兼容 |
| `seed` | `int` | 随机种子 | OpenAI兼容 |
| `do_sample` | `bool` | 是否采用采样策略(否则贪婪解码) | Transformers |
| `top_k` | `int` | 从top_k最可能的词中采样 | Anthropic、Google、HuggingFace、vLLM、SGLang |
| `logprobs` | `bool` | 是否返回输出token的对数概率 | OpenAI兼容、HuggingFace、llama-cpp-python |
| `top_logprobs` | `int` | 返回概率最高的前N个token(范围0~20) | OpenAI兼容、HuggingFace |
| `parallel_tool_calls` | `bool` | 工具调用是否支持并行 | OpenAI、Groq |
| `response_schema` | `dict` | 请求结构化输出(JSON Schema),仍需对输出做校验 | OpenAI、Google、Mistral |
| `reasoning_effort` | `str` | reasoning 努力程度,原样透传给服务端(如 `none` / `minimal` / `low` / `medium` / `high` / `xhigh` / `max`),合法取值由具体模型和服务端决定 | OpenAI兼容 |
| `reasoning_tokens` | `int` | reasoning 最大 token 预算(thinking budget) | Anthropic Claude |
| `reasoning_summary` | `str` | reasoning 摘要级别,可选 `concise` / `detailed` / `auto` | OpenAI reasoning 系列 |
| `reasoning_history` | `str` | 多轮对话中如何编码上一轮 assistant 的 `reasoning_content`。可选值:`reasoning_field`(默认,作为独立顶层字段透传,适配 DeepSeek V4 thinking、Qwen3 thinking 等)、`think_tag`(编码为 `...` 塞进 content 字符串,兼容旧版 Together / Groq 等部署)、`none`(完全剥离,DeepSeek R1 等禁止回传 `reasoning_content` 的 legacy 模型必须显式设此值) | OpenAI兼容 |
| `extra_body` | `dict` | 向OpenAI兼容服务发送的额外请求体 | OpenAI兼容服务 |
| `extra_query` | `dict` | 向OpenAI兼容服务发送的额外查询参数 | OpenAI兼容服务 |
| `extra_headers` | `dict` | 向OpenAI兼容服务发送的额外请求头 | OpenAI兼容服务 |
| `height` | `int` | 图像生成模型专用,指定图像高度 | 图像生成模型 |
| `width` | `int` | 图像生成模型专用,指定图像宽度 | 图像生成模型 |
| `num_inference_steps` | `int` | 图像生成模型专用,推理步数 | 图像生成模型 |
| `guidance_scale` | `float` | 图像生成模型专用,指导尺度 | 图像生成模型 |
**示例:**
```bash
# key=value形式
--generation-config do_sample=true,temperature=0.5
# JSON字符串形式(支持更复杂参数)
--generation-config '{"do_sample":true,"temperature":0.5,"extra_body": {"chat_template_kwargs":{"enable_thinking": false}}}'
```
## 数据集参数
| 参数 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `--datasets` | `list[str]` | 数据集名称列表,空格分隔
参考[数据集列表](./supported_dataset/llm.md) | - |
| `--dataset-dir` | `str` | 数据集下载路径 | `~/.cache/modelscope/datasets` |
| `--dataset-hub` | `str` | 数据集下载源 | `modelscope`
(可选:`huggingface`) |
| `--limit` | `int`/`float` | 每个数据集最大评测数据量
• int:评测前N条数据
• float:评测前N%数据
示例:`100`或`0.1` | `None`(全部评测) |
| `--repeats` | `int` | 重复推理一个样例多次 | `1` |
| `--dataset-args` | `str` | 数据集配置参数(JSON字符串),详见下表 | `{}` |
### dataset-args 配置项
`--dataset-args` 为JSON字符串,每个数据集可配置以下参数:
| 参数 | 类型 | 说明 |
|------|------|------|
| `dataset_id` | `str` | 数据集modelscope id/本地路径 |
| `local_path` | `str` | 本地数据集路径,已废弃,请使用`dataset_id` |
| `review_timeout` | `float` | 评测样本超时时间(秒),代码类任务建议设置 |
| `prompt_template` | `str` | Prompt模板,示例:`Question: {query}\nAnswer:` |
| `system_prompt` | `str` | 系统prompt |
| `subset_list` | `list[str]` | 评测数据子集列表 |
| `few_shot_num` | `int` | few-shot示例数量 |
| `few_shot_random` | `bool` | 是否随机采样few-shot数据 |
| `shuffle` | `bool` | 是否打乱数据 |
| `shuffle_choices` | `bool` | 是否打乱选项顺序(仅多选题) |
| `metric_list` | `list[str\|dict]` | 指标列表。应使用 `accuracy` 等规范名称;`acc` 等旧别名仅为兼容用途并会被规范化。 |
| `aggregation` | `str` | 评测结果聚合方式,默认`mean`。可选:`mean_and_pass_at_k`、`mean_and_vote_at_k`、`mean_and_pass_hat_k`(均需设置`repeats=k`)。
• `pass_at_k`:同一样例生成k次至少一次通过的概率(如`humaneval`设`repeats=5`)
• `vote_at_k`:对同一样例k次结果投票后计分
• `pass_hat_k`:同一样例k次全部通过的概率(如`tau2_bench`设`repeats=3`) |
| `filters` | `dict` | 输出过滤器
• `remove_until`: 过滤指定字符串之前的内容
• `extract`: 提取正则匹配的内容 |
| `force_redownload` | `bool` | 是否强制重新下载数据集 |
| `extra_params` | `dict` | 数据集相关的**额外参数**,具体参考[各数据集说明](./supported_dataset/index.md),指定`{:}`即可, `value`的类型(`type`)和选择范围(`choices`)根据具体参数而定。SWE-bench agentic 等基准的扩展参数请参见 [Agent 评测](../user_guides/agent/native.md#用例swe-bench-agentic) |
| `sandbox_config` | `dict` | Sandbox配置(详见下方Sandbox参数) |
**sandbox_config 配置项:**
| 参数 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `image` | `str` | Docker镜像名称 | `python:3.11-slim` |
| `network_enabled` | `bool` | 是否启用网络 | `true` |
| `tools_config` | `dict` | 工具配置字典 | `{'shell_executor': {}, 'python_executor': {}}` |
**示例:**
```bash
--datasets gsm8k arc ifeval hle \
--dataset-args '{
"gsm8k": {
"few_shot_num": 4,
"few_shot_random": false
},
"arc": {
"dataset_id": "/path/to/arc"
},
"ifeval": {
"filters": {
"remove_until": ""
}
},
"hle": {
"extra_params": {
"include_multi_modal": false
}
}
}'
```
## 评测参数
| 参数 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `--eval-type` | `str` | 评测类型
• `llm_ckpt`: 本地模型推理(transformers)
• `openai_api`: OpenAI兼容Chat Completions API服务
• `openai_responses_api`: OpenAI官方Responses API服务
• `anthropic_api`: Anthropic Claude API服务
• `litellm`: LiteLLM多厂商路由(支持100+ LLM服务商)
• `text2image`: 文本转图像模型(diffusers)
• `text2speech`: 文本转语音模型服务
• `image_editing`: 图像编辑模型
• `mock_llm`: 模拟推理(功能验证)
• `custom`: 自定义评测类型 | `None`(自动判断) |
| `--eval-batch-size` | `int` | 评测批量大小,作用于以下阶段:
• 推理阶段:并发请求数(远程 API 模式)或批量大小(`llm_ckpt`模式)
• LLM-judge 评审阶段:并发线程数
• batch_calculate_metrics 阶段:每批次处理的样本数 | `1`(`openai_api`、`openai_responses_api`、`anthropic_api`、`litellm` 等远程 API 模式为`8`) |
| `--eval-backend` | `str` | 评测后端
• `Native`: 默认后端
• `OpenCompass`: 大语言模型评测
• `VLMEvalKit`: 多模态模型评测
• `RAGEval`: RAG/Embedding/Reranker/CLIP评测
• `ThirdParty`: 特殊任务评测 | `Native` |
| `--eval-config` | `str` | 非Native后端的配置文件路径 | - |
## Judge参数
Native LLM Judge 通过一个 typed `judge` 对象配置:Python/YAML 使用 `judge={...}`,CLI 使用
`--judge ''`。
```python
TaskConfig(
model='MODEL',
datasets=['simple_qa'],
judge={
'strategy': 'llm',
'models': {
'model_id': 'JUDGE_MODEL',
'api_url': 'OPENAI_COMPATIBLE_URL',
'api_key': 'JUDGE_API_KEY',
'generation_config': {'temperature': 0.0, 'retries': 3},
},
'repeats': 1,
'position_swap': 'auto',
'aggregation': 'mean',
'min_valid_judges': 1,
},
)
```
`models` 可传单个对象或对象列表。列表表示独立 Judge;重复的 `model_id` 必须显式指定不同的
`judge_id`,唯一 `model_id` 默认同时作为 `judge_id`。
| 字段 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `strategy` | `auto\|rule\|llm\|llm_recall` | `auto` 遵循 benchmark 策略;`llm_recall` 仅复核规则漏判,并取 `max(rule, judge)`。 | `auto` |
| `models` | `object\|list[object]` | 一个或多个 Judge 模型配置;为保证 review cache 可复现,必须给出 `model_id`。 | `[]` |
| `repeats` | `int >= 1` | 每个 Judge 的独立判分观测次数,不等同于 transport retry。 | `1` |
| `position_swap` | `auto\|on\|off` | `auto` 保持 benchmark 官方的位置交换策略。 | `auto` |
| `aggregation` | `mean\|median\|majority_vote` | 普通指标的跨观测聚合方式。 | `mean` |
| `min_valid_judges` | `int >= 1` | 一个指标所需的最少有效 Judge verdict 数。 | `1` |
`models` 的每项支持 `judge_id`、`model_id`、`api_key`、`api_url`、`eval_type`、`model_args` 与
`generation_config`。provider 私有的模型初始化参数放入 `model_args`;transport 重试放入
`generation_config.retries`。
`judge.contract` 仅配置通用单 verdict Judge:`system_prompt`、`prompt_template`、`score_mapping` 和
`score_type`。`pattern` 要求 Judge 在 JSON 中返回 `score_mapping` 之一;`numeric` 要求 JSON 分数位于
`[0, 1]`。框架会在 prompt 中追加 JSON 格式要求,只解析一次普通模型回复;不使用 constrained decoding、
正则提分或纠正性追问。无效回复显示为 unavailable,并从指标中排除,而非记为 0。
对于经过 LLM 判定的样本,报告包含 `JudgeSummary`:覆盖率、失败计数与分歧。当 adapter 通过确定性的
Judge 短路直接判定样本时,得分 metadata 会记录 `judge_skipped=true` 和 `judge_skip_reason`;Web review
面板会将其标为规则直接判分,而非 LLM verdict。native 评测复用 prediction 和 review 前要求缓存的评测身份完全匹配。
设置 `rerun_review=True` 可复用 prediction 并重算 review,新的 review 文件只有成功后才原子替换旧文件;它也是身份
不匹配时唯一的显式覆盖开关,生成的配置会在当前评测版本下记录 prediction 来源。
旧 `judge_strategy` 和单个 mapping `judge_model_args` 仅保留一轮输入迁移并会告警。已删除的
`judge_worker_num` 和 `score_pattern` 会明确报错。
## Sandbox参数
EvalScope 使用嵌套的 `--sandbox` 配置(对应 `SandboxTaskConfig`)统一管理沙箱设置。
### --sandbox 配置项
| 参数 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `enabled` | `bool` | 是否启用沙箱 | `false` |
| `engine` | `str` | 沙箱引擎,可选 `docker`、`volcengine` 等 | `docker` |
| `default_config` | `dict` | 任务级沙箱配置,将与 `BenchmarkMeta.sandbox_config` 合并;同时作为 Agent 模式中每个样本环境的默认配置 | `{}` |
| `manager_config` | `dict` | 转发给 ms_enclave manager 构造函数的参数(如远端 docker daemon 的 `base_url`、volcengine 凭证等) | `{}` |
| `pool_size` | `int \| None` | 池化执行的预热池大小,`None` 时与 `eval_batch_size` 对齐 | `None` |
完整使用方法(含本地与远端管理器配置示例)请参考 [沙箱环境使用](../user_guides/sandbox.md)。
## Agent 参数
`--agent-config` / `agent_config` 用于启用 [Agent 评测](../user_guides/agent/index.md):当设置后,所有基于 `DefaultDataAdapter` 的基准会改用 [内置 AgentLoop](../user_guides/agent/native.md) 进行推理,或通过 [外部 Agent Bridge](../user_guides/agent/bridge.md) 转交给 Claude Code / Codex 等成品 CLI。`AgentLoopAdapter` 子类(如 `swe_bench_*_agentic`)保留 benchmark 默认值,同时接受其支持的显式覆盖,例如策略、步数和工具。
| 参数 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `--agent-config` | `dict \| NativeAgentConfig` | Agent 全局配置,详见下表 | `None`(关闭 Agent 模式) |
### agent-config 配置项
| 字段 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `strategy` | `str` | 策略名称:`function_calling` / `react` / `swe_bench_toolcall` / `swe_bench_backticks` | `function_calling` |
| `tools` | `list[str]` | 工具白名单:`bash` / `python_exec`(`submit` 由策略自动注入) | `[]` |
| `environment` | `str \| None` | Agent 命令执行环境,例如 `local` 或 `docker` | `None` |
| `environment_extra` | `dict` | Agent 环境构造参数;Docker 镜像放在 `sandbox_config.image` | `{}` |
| `max_steps` | `int` | 循环迭代硬上限 | `10` |
| `kwargs` | `dict` | 策略构造参数,例如 `{'system_prompt': '...'}` | `{}` |
```{seealso}
完整使用说明、用例与 Trace 可视化请参见 [Agent 评测](../user_guides/agent/index.md)。
```
## 其他参数
| 参数 | 类型 | 说明 | 默认值 |
|------|------|------|--------|
| `--work-dir` | `str` | 评测输出路径(详见下方目录结构) | `./outputs` |
| `--no-timestamp` | `bool` | 是否不在工作目录中添加时间戳 | `false` |
| `--use-cache` | `str` | 复用本地缓存路径(如`outputs/20241210_194434`)
重用推理结果和评测结果 | `None` |
| `--rerun-review` | `bool` | 配合 `--use-cache` 使用:基于 predictions 缓存重跑评测/打分,并仅在成功后原子替换 reviews 缓存 | `false` |
| `--enable-progress-tracker` | `bool` | 是否开启进度追踪,将层级评测进度实时写入`progress.json`,可通过服务接口查询 | `false` |
| `--collect-perf` | `bool` | 采集每次推理请求的性能指标(延迟、TTFT、Token 用量),汇总后写入评测报告。采集 TTFT 需开启 `--generation-config stream=true`;使用 `--no-collect-perf` 可禁用 | `true` |
| `--seed` | `int` | 随机种子 | `42` |
| `--debug` | `bool` | 是否开启调试模式 | `false` |
| `--ignore-errors` | `bool` | 是否忽略生成过程中的错误 | `false` |
| `--dry-run` | `bool` | 预检参数,不执行推理,只打印参数 | `false` |
### work-dir 目录结构示例
```text
./outputs/{timestamp}/
├── configs/
│ └── task_config_b6f42c.yaml # 任务配置
├── logs/
│ └── eval_log.log # 评测日志
├── predictions/
│ └── {model_id}/
│ └── {dataset}.jsonl # 模型推理结果
├── reports/
│ └── {model_id}/
│ └── {dataset}.json # 评测报告
├── reviews/
│ └── {model_id}/
│ └── {dataset}.jsonl # 评测结果详情
└── progress.json # 进度追踪文件(启用--enable-progress-tracker时生成)
```
`progress.json` 文件格式示例:
```json
{
"status": "running",
"pipeline": "eval",
"total_count": 14042,
"processed_count": 5200,
"percent": 37.03,
"stage": {
"name": "Evaluating", "label": "mmlu",
"current": 1, "total": 3, "status": "running",
"children": [
{"name": "Predicting", "label": "mmlu@test", "current": 1000, "total": 1000, "status": "completed", "children": []},
{"name": "Reviewing", "label": "mmlu@test", "current": 320, "total": 1000, "status": "running", "children": []}
]
},
"updated_at": "2026-03-09T10:05:42Z"
}
```