sora 13274243a0 Bump vendored EvalScope and add K3-ready DPV4 configs.
Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 07:30:48 +00:00

109 lines
14 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"meta": {
"pretty_name": "Kimi-Vendor-Verifier",
"dataset_id": "kimi_verifier",
"paper_url": null,
"tags": [
"FunctionCalling",
"Agent"
],
"metrics": [
"param_immutable_reject_rate",
"param_default_accept_rate",
"inference_error_rate"
],
"primary_metric": {
"name": "param_immutable_reject_rate",
"aggregation": null,
"dimensions": {}
},
"few_shot_num": 0,
"eval_split": "test",
"train_split": "",
"subset_list": [
"kimi",
"opensource",
"none"
],
"description": "\n## Overview\n\nKimi-Vendor-Verifier is a pre-flight compliance check for Kimi K2 / K2-Thinking deployments. It sends synthetic probe requests to verify that the vendor API correctly **rejects** non-default values of immutable decoding parameters (``temperature``, ``top_p``, ``presence_penalty``, ``frequency_penalty``, ``n``) and **accepts** their defaults. A vendor that silently accepts wrong values risks producing degraded model output that does not match official Moonshot AI behavior. Adapted from [Kimi-Vendor-Verifier/verify_params.py](https://github.com/MoonshotAI/Kimi-Vendor-Verifier/blob/main/verify_params.py).\n\n## Task Description\n\n- **Task Type**: API parameter-compliance probing (deployment health check)\n- **Input**: A minimal chat message plus a single test parameter and thinking-mode `extra_body`\n- **Output**: Whether the vendor accepted (HTTP 200) or rejected (HTTP 400) the request\n- **Dataset**: Fully synthetic — no external dataset is downloaded; probes are generated in code from the K2 spec\n\n## Key Features\n\n- Synthetic probe set: one ``no_param`` sanity probe + 5 default-value (accept) probes + 5 wrong-value (reject) probes per (subset × thinking) combination\n- Three subsets covering all common Kimi deployment shapes:\n - ``kimi`` — official Moonshot SaaS API (``extra_body = {\"thinking\": {\"type\": ...}}``); thinking on/off\n - ``opensource`` — vLLM / SGLang / KTransformers chat-template hook (``extra_body = {\"chat_template_kwargs\": {\"thinking\": ...}}``); thinking on/off\n - ``none`` — non-hybrid model; no thinking parameter sent\n- HTTP 400 responses are treated as the success signal when a reject was expected\n- Single small request per probe; total cost is negligible compared to a full benchmark\n\n## Evaluation Notes\n\n- Default configuration uses **0-shot** synthetic probes\n- Metrics: **param_immutable_reject_rate**, **param_default_accept_rate**, **inference_error_rate**\n- Only HTTP 400 (``BadRequestError``) counts as a real parameter rejection; transport errors (5xx / timeout / 429) are excluded from the reject/accept denominators and surfaced via ``inference_error_rate`` so a flaky vendor doesn't get a free pass\n- A correctly-deployed Kimi K2 vendor should report both rate metrics at **1.0** with ``inference_error_rate = 0``; anything less indicates a parameter-enforcement gap or transport instability\n- For non-Kimi models, expect ``param_immutable_reject_rate = 0`` (no K2 spec to enforce) and ``param_default_accept_rate = 1.0`` (sensible defaults accepted)\n- Select subset via ``dataset_args={'kimi_verifier': {'subset_list': ['kimi']}}`` (or ``opensource`` / ``none``)\n",
"prompt_template": "",
"system_prompt": "",
"few_shot_prompt_template": "",
"aggregation": "mean",
"extra_params": {},
"sandbox_config": {},
"category": "agent"
},
"statistics": {
"total_samples": 55,
"subset_stats": [
{
"name": "kimi",
"sample_count": 22,
"prompt_length_mean": 26,
"prompt_length_min": 26,
"prompt_length_max": 26,
"prompt_length_std": null,
"target_length_mean": null
},
{
"name": "opensource",
"sample_count": 22,
"prompt_length_mean": 26,
"prompt_length_min": 26,
"prompt_length_max": 26,
"prompt_length_std": null,
"target_length_mean": null
},
{
"name": "none",
"sample_count": 11,
"prompt_length_mean": 26,
"prompt_length_min": 26,
"prompt_length_max": 26,
"prompt_length_std": null,
"target_length_mean": null
}
],
"prompt_length": {
"mean": 26,
"min": 26,
"max": 26,
"std": null
},
"target_length_mean": null,
"computed_at": "2026-08-04T14:36:44.807117"
},
"sample_example": {
"data": {
"input": [
{
"id": "b2530131",
"content": "Say 'OK' and nothing else."
}
],
"target": "",
"id": 0,
"group_id": 0,
"subset_key": "kimi",
"metadata": {
"think_mode": "kimi",
"thinking": false,
"param_name": null,
"test_value": null,
"expected_reject": false
}
},
"subset": "kimi",
"truncated": false
},
"readme": {
"en": "# Kimi-Vendor-Verifier\n\n\n## Overview\n\nKimi-Vendor-Verifier is a pre-flight compliance check for Kimi K2 / K2-Thinking deployments. It sends synthetic probe requests to verify that the vendor API correctly **rejects** non-default values of immutable decoding parameters (``temperature``, ``top_p``, ``presence_penalty``, ``frequency_penalty``, ``n``) and **accepts** their defaults. A vendor that silently accepts wrong values risks producing degraded model output that does not match official Moonshot AI behavior. Adapted from [Kimi-Vendor-Verifier/verify_params.py](https://github.com/MoonshotAI/Kimi-Vendor-Verifier/blob/main/verify_params.py).\n\n## Task Description\n\n- **Task Type**: API parameter-compliance probing (deployment health check)\n- **Input**: A minimal chat message plus a single test parameter and thinking-mode `extra_body`\n- **Output**: Whether the vendor accepted (HTTP 200) or rejected (HTTP 400) the request\n- **Dataset**: Fully synthetic — no external dataset is downloaded; probes are generated in code from the K2 spec\n\n## Key Features\n\n- Synthetic probe set: one ``no_param`` sanity probe + 5 default-value (accept) probes + 5 wrong-value (reject) probes per (subset × thinking) combination\n- Three subsets covering all common Kimi deployment shapes:\n - ``kimi`` — official Moonshot SaaS API (``extra_body = {\"thinking\": {\"type\": ...}}``); thinking on/off\n - ``opensource`` — vLLM / SGLang / KTransformers chat-template hook (``extra_body = {\"chat_template_kwargs\": {\"thinking\": ...}}``); thinking on/off\n - ``none`` — non-hybrid model; no thinking parameter sent\n- HTTP 400 responses are treated as the success signal when a reject was expected\n- Single small request per probe; total cost is negligible compared to a full benchmark\n\n## Evaluation Notes\n\n- Default configuration uses **0-shot** synthetic probes\n- Metrics: **param_immutable_reject_rate**, **param_default_accept_rate**, **inference_error_rate**\n- Only HTTP 400 (``BadRequestError``) counts as a real parameter rejection; transport errors (5xx / timeout / 429) are excluded from the reject/accept denominators and surfaced via ``inference_error_rate`` so a flaky vendor doesn't get a free pass\n- A correctly-deployed Kimi K2 vendor should report both rate metrics at **1.0** with ``inference_error_rate = 0``; anything less indicates a parameter-enforcement gap or transport instability\n- For non-Kimi models, expect ``param_immutable_reject_rate = 0`` (no K2 spec to enforce) and ``param_default_accept_rate = 1.0`` (sensible defaults accepted)\n- Select subset via ``dataset_args={'kimi_verifier': {'subset_list': ['kimi']}}`` (or ``opensource`` / ``none``)\n\n\n## Properties\n\n| Property | Value |\n|----------|-------|\n| **Benchmark Name** | `kimi_verifier` |\n| **Dataset ID** | `kimi_verifier` |\n| **Paper** | N/A |\n| **Tags** | `Agent`, `FunctionCalling` |\n| **Metrics** | `param_immutable_reject_rate`, `param_default_accept_rate`, `inference_error_rate` |\n| **Default Shots** | 0-shot |\n| **Evaluation Split** | `test` |\n\n\n## Data Statistics\n\n| Metric | Value |\n|--------|-------|\n| Total Samples | 55 |\n| Prompt Length (Mean) | 26 chars |\n| Prompt Length (Min/Max) | 26 / 26 chars |\n\n**Per-Subset Statistics:**\n\n| Subset | Samples | Prompt Mean | Prompt Min | Prompt Max |\n|--------|---------|-------------|------------|------------|\n| `kimi` | 22 | 26 | 26 | 26 |\n| `opensource` | 22 | 26 | 26 | 26 |\n| `none` | 11 | 26 | 26 | 26 |\n\n## Sample Example\n\n**Subset**: `kimi`\n\n```json\n{\n \"input\": [\n {\n \"id\": \"b2530131\",\n \"content\": \"Say 'OK' and nothing else.\"\n }\n ],\n \"target\": \"\",\n \"id\": 0,\n \"group_id\": 0,\n \"subset_key\": \"kimi\",\n \"metadata\": {\n \"think_mode\": \"kimi\",\n \"thinking\": false,\n \"param_name\": null,\n \"test_value\": null,\n \"expected_reject\": false\n }\n}\n```\n\n## Prompt Template\n\n*No prompt template defined.*\n\n## Usage\n\n### Using CLI\n\n```bash\nevalscope eval \\\n --model YOUR_MODEL \\\n --api-url OPENAI_API_COMPAT_URL \\\n --api-key EMPTY_TOKEN \\\n --datasets kimi_verifier \\\n --limit 10 # Remove this line for formal evaluation\n```\n\n### Using Python\n\n```python\nfrom evalscope import run_task\nfrom evalscope.config import TaskConfig\n\ntask_cfg = TaskConfig(\n model='YOUR_MODEL',\n api_url='OPENAI_API_COMPAT_URL',\n api_key='EMPTY_TOKEN',\n datasets=['kimi_verifier'],\n dataset_args={\n 'kimi_verifier': {\n # subset_list: ['kimi', 'opensource', 'none'] # optional, evaluate specific subsets\n }\n },\n limit=10, # Remove this line for formal evaluation\n)\n\nrun_task(task_cfg=task_cfg)\n```\n\n\n",
"zh": "# Kimi-Vendor-Verifier\n\n\n## 概述\n\nKimi-Vendor-Verifier 是 Kimi K2 / K2-Thinking 部署的预检合规性检查工具。它会发送合成探测请求,验证供应商 API 是否正确地**拒绝**不可变解码参数(``temperature``、``top_p``、``presence_penalty``、``frequency_penalty``、``n``)的非默认值,并**接受**其默认值。如果供应商静默接受错误值,则可能导致模型输出质量下降,无法匹配官方 Moonshot AI 的行为。本工具改编自 [Kimi-Vendor-Verifier/verify_params.py](https://github.com/MoonshotAI/Kimi-Vendor-Verifier/blob/main/verify_params.py)。\n\n## 任务描述\n\n- **任务类型**API 参数合规性探测(部署健康检查)\n- **输入**:一条最小化聊天消息,加上一个测试参数和 thinking-mode 的 `extra_body`\n- **输出**供应商是否接受HTTP 200或拒绝HTTP 400该请求\n- **数据集**:完全合成 —— 无需下载外部数据集;探测请求根据 K2 规范在代码中生成\n\n## 核心特性\n\n- 合成探测集:每个 (子集 × thinking) 组合包含 1 个 ``no_param`` 健康检查探测 + 5 个默认值(应接受)探测 + 5 个错误值(应拒绝)探测\n- 三个子集覆盖所有常见的 Kimi 部署形态:\n - ``kimi`` —— 官方 Moonshot SaaS API``extra_body = {\"thinking\": {\"type\": ...}}``);开启/关闭 thinking\n - ``opensource`` —— vLLM / SGLang / KTransformers 的 chat-template 钩子(``extra_body = {\"chat_template_kwargs\": {\"thinking\": ...}}``);开启/关闭 thinking\n - ``none`` —— 非混合模型;不发送 thinking 参数\n- 当预期应拒绝时HTTP 400 响应被视为成功信号\n- 每个探测仅发送一个小型请求;总开销相比完整基准测试可忽略不计\n\n## 评估说明\n\n- 默认配置使用 **0-shot** 合成探测\n- 评估指标:**param_immutable_reject_rate**、**param_default_accept_rate**、**inference_error_rate**\n- 仅 HTTP 400``BadRequestError``被视为真正的参数拒绝传输错误5xx / 超时 / 429不计入拒绝/接受的分母,而是通过 ``inference_error_rate`` 单独体现,避免不稳定的供应商获得“免费通行证”\n- 正确部署的 Kimi K2 供应商应报告两个比率指标均为 **1.0**,且 ``inference_error_rate = 0``;任何低于此标准的结果均表明存在参数强制执行漏洞或传输不稳定\n- 对于非 Kimi 模型,预期 ``param_immutable_reject_rate = 0``(无 K2 规范可强制执行),而 ``param_default_accept_rate = 1.0``(合理默认值被接受)\n- 可通过 ``dataset_args={'kimi_verifier': {'subset_list': ['kimi']}}``(或 ``opensource`` / ``none``)选择子集\n\n## 属性\n\n| 属性 | 值 |\n|----------|-------|\n| **基准测试名称** | `kimi_verifier` |\n| **数据集ID** | `kimi_verifier` |\n| **论文** | N/A |\n| **标签** | `Agent`, `FunctionCalling` |\n| **指标** | `param_immutable_reject_rate`, `param_default_accept_rate`, `inference_error_rate` |\n| **默认 Shots** | 0-shot |\n| **评估 Split** | `test` |\n\n\n## 数据统计\n\n| 指标 | 值 |\n|--------|-------|\n| 总样本数 | 55 |\n| 提示词长度(平均) | 26 字符 |\n| 提示词长度(最小/最大) | 26 / 26 字符 |\n\n**各子集统计信息:**\n\n| 子集 | 样本数 | 提示词平均长度 | 提示词最小长度 | 提示词最大长度 |\n|--------|---------|-------------|------------|------------|\n| `kimi` | 22 | 26 | 26 | 26 |\n| `opensource` | 22 | 26 | 26 | 26 |\n| `none` | 11 | 26 | 26 | 26 |\n\n## 样例示例\n\n**子集**: `kimi`\n\n```json\n{\n \"input\": [\n {\n \"id\": \"b2530131\",\n \"content\": \"Say 'OK' and nothing else.\"\n }\n ],\n \"target\": \"\",\n \"id\": 0,\n \"group_id\": 0,\n \"subset_key\": \"kimi\",\n \"metadata\": {\n \"think_mode\": \"kimi\",\n \"thinking\": false,\n \"param_name\": null,\n \"test_value\": null,\n \"expected_reject\": false\n }\n}\n```\n\n## 提示模板\n\n*未定义提示模板。*\n\n## 使用方法\n\n### 使用 CLI\n\n```bash\nevalscope eval \\\n --model YOUR_MODEL \\\n --api-url OPENAI_API_COMPAT_URL \\\n --api-key EMPTY_TOKEN \\\n --datasets kimi_verifier \\\n --limit 10 # 正式评估时请删除此行\n```\n\n### 使用 Python\n\n```python\nfrom evalscope import run_task\nfrom evalscope.config import TaskConfig\n\ntask_cfg = TaskConfig(\n model='YOUR_MODEL',\n api_url='OPENAI_API_COMPAT_URL',\n api_key='EMPTY_TOKEN',\n datasets=['kimi_verifier'],\n dataset_args={\n 'kimi_verifier': {\n # subset_list: ['kimi', 'opensource', 'none'] # 可选,用于评估特定子集\n }\n },\n limit=10, # 正式评估时请删除此行\n)\n\nrun_task(task_cfg=task_cfg)\n```",
"content_hash": "9791985dafbb05225cec00a9e7a80686",
"needs_translation": false
},
"updated_at": "2026-08-11T15:30:53.553392",
"translation_updated_at": "2026-08-04T14:37:04"
}