astron-eval 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/bin/astron-eval.mjs +111 -0
  4. package/package.json +24 -0
  5. package/skills/astron-eval/SKILL.md +60 -0
  6. package/skills/model-evaluation/SKILL.md +180 -0
  7. package/skills/model-evaluation/assets/dimensions//345/206/205/345/256/271/347/233/270/345/205/263/346/200/247/347/273/264/345/272/246.json +20 -0
  8. package/skills/model-evaluation/assets/dimensions//345/206/205/345/256/271/347/262/276/347/241/256/347/273/264/345/272/246.json +19 -0
  9. package/skills/model-evaluation/assets/dimensions//345/207/206/347/241/256/346/200/247/347/273/264/345/272/246-/344/270/252/346/200/247/345/214/226/350/247/204/345/210/222.json +20 -0
  10. package/skills/model-evaluation/assets/dimensions//345/207/206/347/241/256/346/200/247/347/273/264/345/272/246-/344/277/241/346/201/257/345/210/206/346/236/220.json +20 -0
  11. package/skills/model-evaluation/assets/dimensions//345/207/206/347/241/256/346/200/247/347/273/264/345/272/246-/346/227/205/346/270/270/345/207/272/350/241/214.json +20 -0
  12. package/skills/model-evaluation/assets/dimensions//345/207/206/347/241/256/346/200/247/347/273/264/345/272/246.json +20 -0
  13. package/skills/model-evaluation/assets/dimensions//345/210/233/346/204/217/346/200/247-/345/220/270/345/274/225/346/200/247/347/273/264/345/272/246.json +21 -0
  14. package/skills/model-evaluation/assets/dimensions//345/210/233/346/226/260/346/200/247/347/273/264/345/272/246.json +20 -0
  15. package/skills/model-evaluation/assets/dimensions//345/256/214/346/225/264/346/200/247/347/273/264/345/272/246-/344/277/241/346/201/257/345/210/206/346/236/220.json +20 -0
  16. package/skills/model-evaluation/assets/dimensions//345/256/214/346/225/264/346/200/247/347/273/264/345/272/246.json +20 -0
  17. package/skills/model-evaluation/assets/dimensions//345/275/242/345/274/217/347/233/270/345/205/263/346/200/247/347/273/264/345/272/246.json +20 -0
  18. package/skills/model-evaluation/assets/dimensions//345/277/240/350/257/232/345/272/246/347/273/264/345/272/246.json +20 -0
  19. package/skills/model-evaluation/assets/dimensions//346/214/207/344/273/244/351/201/265/345/276/252/347/273/264/345/272/246.json +20 -0
  20. package/skills/model-evaluation/assets/dimensions//346/226/207/346/234/254/345/267/256/345/274/202/345/272/246-TER/347/273/264/345/272/246.json +20 -0
  21. package/skills/model-evaluation/assets/dimensions//346/234/211/346/225/210/346/200/247/347/273/264/345/272/246-/344/270/252/346/200/247/345/214/226/350/247/204/345/210/222.json +20 -0
  22. package/skills/model-evaluation/assets/dimensions//346/234/211/346/225/210/346/200/247/347/273/264/345/272/246-/344/277/241/346/201/257/345/210/206/346/236/220.json +20 -0
  23. package/skills/model-evaluation/assets/dimensions//346/234/211/346/225/210/346/200/247/347/273/264/345/272/246-/346/265/201/347/250/213/350/207/252/345/212/250/345/214/226.json +20 -0
  24. package/skills/model-evaluation/assets/dimensions//346/234/211/346/225/210/346/200/247/347/273/264/345/272/246.json +21 -0
  25. package/skills/model-evaluation/assets/dimensions//346/240/270/345/277/203/345/205/203/347/264/240/347/273/264/345/272/246.json +20 -0
  26. package/skills/model-evaluation/assets/dimensions//346/240/274/345/274/217/351/201/265/345/276/252/347/273/264/345/272/246.json +19 -0
  27. package/skills/model-evaluation/assets/dimensions//347/211/271/350/211/262/344/272/256/347/202/271/347/273/264/345/272/246.json +20 -0
  28. package/skills/model-evaluation/assets/dimensions//347/224/250/344/276/213/347/272/247/350/257/204/346/265/213/347/273/264/345/272/246/346/250/241/346/235/277.json +25 -0
  29. package/skills/model-evaluation/assets/dimensions//347/233/270/344/274/274/345/272/246-BERTScore/347/273/264/345/272/246.json +20 -0
  30. package/skills/model-evaluation/assets/dimensions//347/233/270/344/274/274/345/272/246-Cosine/347/273/264/345/272/246.json +20 -0
  31. package/skills/model-evaluation/assets/dimensions//347/233/270/344/274/274/345/272/246-ROUGE/347/273/264/345/272/246.json +20 -0
  32. package/skills/model-evaluation/assets/dimensions//347/233/270/345/205/263/346/200/247/347/273/264/345/272/246-/344/270/252/346/200/247/345/214/226/350/247/204/345/210/222.json +20 -0
  33. package/skills/model-evaluation/assets/dimensions//347/233/270/345/205/263/346/200/247/347/273/264/345/272/246.json +21 -0
  34. package/skills/model-evaluation/assets/dimensions//347/262/276/347/241/256/346/200/247-BLUE/347/273/264/345/272/246.json +20 -0
  35. package/skills/model-evaluation/assets/dimensions//347/262/276/347/241/256/346/200/247-COMET/347/273/264/345/272/246.json +20 -0
  36. package/skills/model-evaluation/assets/dimensions//351/200/273/350/276/221/345/220/210/347/220/206/346/200/247/347/273/264/345/272/246.json +20 -0
  37. package/skills/model-evaluation/assets/dimensions//351/200/273/350/276/221/350/277/236/350/264/257/346/200/247/347/273/264/345/272/246-/344/270/252/346/200/247/345/214/226/350/247/204/345/210/222.json +20 -0
  38. package/skills/model-evaluation/assets/dimensions//351/200/273/350/276/221/350/277/236/350/264/257/346/200/247/347/273/264/345/272/246-/344/277/241/346/201/257/345/210/206/346/236/220.json +20 -0
  39. package/skills/model-evaluation/assets/dimensions//351/200/273/350/276/221/350/277/236/350/264/257/346/200/247/347/273/264/345/272/246-/346/265/201/347/250/213/350/207/252/345/212/250/345/214/226.json +20 -0
  40. package/skills/model-evaluation/assets/dimensions//351/200/273/350/276/221/350/277/236/350/264/257/346/200/247/347/273/264/345/272/246.json +21 -0
  41. package/skills/model-evaluation/assets/eval-judge.json +11 -0
  42. package/skills/model-evaluation/assets/experts/business-process-automation.json +71 -0
  43. package/skills/model-evaluation/assets/experts/content-generation.json +75 -0
  44. package/skills/model-evaluation/assets/experts/content-match.json +37 -0
  45. package/skills/model-evaluation/assets/experts/information-analysis.json +87 -0
  46. package/skills/model-evaluation/assets/experts/marketing-digital-human.json +27 -0
  47. package/skills/model-evaluation/assets/experts/personalized-planning.json +87 -0
  48. package/skills/model-evaluation/assets/experts/text-translation.json +103 -0
  49. package/skills/model-evaluation/assets/experts/tourism-travel.json +119 -0
  50. package/skills/model-evaluation/assets/templates/custom-dimension.template.json +30 -0
  51. package/skills/model-evaluation/eval-build.md +281 -0
  52. package/skills/model-evaluation/eval-execute.md +196 -0
  53. package/skills/model-evaluation/eval-init.md +237 -0
  54. package/skills/model-evaluation/processes/dimension-process.md +207 -0
  55. package/skills/model-evaluation/processes/evalset-create-process.md +184 -0
  56. package/skills/model-evaluation/processes/evalset-parse-process.md +171 -0
  57. package/skills/model-evaluation/processes/evalset-supplement-process.md +136 -0
  58. package/skills/model-evaluation/processes/keypoint-process.md +148 -0
  59. package/skills/model-evaluation/processes/python-env-process.md +113 -0
  60. package/skills/model-evaluation/references//344/270/255/351/227/264/344/272/247/347/211/251/350/257/264/346/230/216.md +340 -0
  61. package/skills/model-evaluation/references//345/206/205/347/275/256/346/250/241/346/235/277/350/257/264/346/230/216.md +149 -0
  62. package/skills/model-evaluation/references//350/204/232/346/234/254/345/256/232/344/271/211.md +274 -0
  63. package/skills/model-evaluation/references//350/256/244/350/257/201/346/234/215/345/212/241/346/216/245/345/217/243/350/257/264/346/230/216.md +271 -0
  64. package/skills/model-evaluation/references//350/257/204/346/265/213/346/234/215/345/212/241/346/216/245/345/217/243/350/257/264/346/230/216.md +455 -0
  65. package/skills/model-evaluation/references//350/257/204/346/265/213/347/273/264/345/272/246/350/257/264/346/230/216.md +171 -0
  66. package/skills/model-evaluation/scripts/cfg/eval-auth.cfg +16 -0
  67. package/skills/model-evaluation/scripts/cfg/eval-server.cfg +1 -0
  68. package/skills/model-evaluation/scripts/clients/__init__.py +33 -0
  69. package/skills/model-evaluation/scripts/clients/api_client.py +97 -0
  70. package/skills/model-evaluation/scripts/clients/auth_client.py +96 -0
  71. package/skills/model-evaluation/scripts/clients/http_client.py +199 -0
  72. package/skills/model-evaluation/scripts/clients/oauth_callback.py +397 -0
  73. package/skills/model-evaluation/scripts/clients/token_manager.py +53 -0
  74. package/skills/model-evaluation/scripts/eval_auth.py +588 -0
  75. package/skills/model-evaluation/scripts/eval_dimension.py +240 -0
  76. package/skills/model-evaluation/scripts/eval_set.py +410 -0
  77. package/skills/model-evaluation/scripts/eval_task.py +324 -0
  78. package/skills/model-evaluation/scripts/files/__init__.py +38 -0
  79. package/skills/model-evaluation/scripts/files/file_utils.py +330 -0
  80. package/skills/model-evaluation/scripts/files/streaming.py +245 -0
  81. package/skills/model-evaluation/scripts/utils/__init__.py +128 -0
  82. package/skills/model-evaluation/scripts/utils/constants.py +101 -0
  83. package/skills/model-evaluation/scripts/utils/datetime_utils.py +60 -0
  84. package/skills/model-evaluation/scripts/utils/errors.py +244 -0
  85. package/skills/model-evaluation/scripts/utils/keypoint_prompts.py +73 -0
  86. package/skills/skill-driven-eval/SKILL.md +456 -0
  87. package/skills/skill-driven-eval/agents/grader.md +144 -0
  88. package/skills/skill-driven-eval/eval-viewer/__init__.py +1 -0
  89. package/skills/skill-driven-eval/eval-viewer/generate_report.py +485 -0
  90. package/skills/skill-driven-eval/eval-viewer/viewer.html +767 -0
  91. package/skills/skill-driven-eval/references/schemas.md +282 -0
  92. package/skills/skill-driven-eval/scripts/__init__.py +1 -0
  93. package/skills/skill-driven-eval/scripts/__main__.py +70 -0
  94. package/skills/skill-driven-eval/scripts/aggregate_results.py +681 -0
  95. package/skills/skill-driven-eval/scripts/extract_transcript.py +294 -0
  96. package/skills/skill-driven-eval/scripts/test_aggregate.py +244 -0
@@ -0,0 +1,237 @@
1
+ ---
2
+ name: eval-init
3
+ description: Use when starting a new evaluation task or resuming an existing one, before any build or execute operations
4
+ ---
5
+
6
+ # 初始化阶段
7
+
8
+ ## 目标
9
+
10
+ 完成Python环境检测、鉴权验证、会话目录确认后,进入构建阶段。
11
+
12
+ 核心原则:**缓存优先,按序执行,失败即止**。
13
+
14
+ ## 何时使用
15
+
16
+ - 开始新的评测任务时
17
+ - 继续历史评测任务时
18
+ - 环境或鉴权状态不明时
19
+
20
+ ---
21
+
22
+ ## 阶段完成标志
23
+
24
+ **验证顺序**(按序执行,任一失败则执行对应任务):
25
+
26
+ 1. 检查 `{work-dir}/.eval/env.cfg` 存在且字段完整 → 否则执行任务1
27
+ 2. 检查 `{work-dir}/.eval/auth.json` 存在且Token有效 → 否则执行任务2
28
+ 3. 检查 `{work-dir}/.eval/{session-id}/` 目录存在 → 否则执行任务3
29
+
30
+ 全部通过后,进入构建阶段(加载 `eval-build.md`)。
31
+
32
+ ---
33
+
34
+ ## 任务列表
35
+
36
+ ### 任务1:环境及依赖检测
37
+
38
+ #### 步骤1:检查环境缓存文件
39
+
40
+ 检查 `{work-dir}/.eval/env.cfg` 是否存在。
41
+
42
+ - **文件存在** → 进入步骤2(验证缓存有效性)
43
+ - **文件不存在** → 进入步骤3(执行环境检测)
44
+
45
+ ---
46
+
47
+ #### 步骤2:验证缓存有效性
48
+
49
+ 读取 `{work-dir}/.eval/env.cfg` 文件,检查以下字段:
50
+
51
+ | 字段 | 要求 |
52
+ |------|------|
53
+ | `python_cmd` | 非空 |
54
+ | `python_env` | 非空 |
55
+ | `deps_required` | 非空 |
56
+
57
+ - **字段完整** → 设置 `{python-cmd}` 为 `python_cmd` 值,设置 `{python-env}` 为 `python_env` 值,完成本任务
58
+ - **字段缺失** → 缓存无效 → 步骤3
59
+
60
+ ---
61
+
62
+ #### 步骤3:执行环境检测
63
+
64
+ 调用 [Python 环境检测流程](processes/python-env-process.md),依次执行:
65
+
66
+ 1. 检测 Python 命令 → 确定 `{python-cmd}`
67
+ 2. 检测依赖 → 确保必需依赖已安装
68
+ 3. 检测编码环境 → 确定 `{python-env}`
69
+
70
+ **输出变量**:
71
+
72
+ | 变量 | 说明 |
73
+ |------|------|
74
+ | `{python-cmd}` | Python 命令(`python3` 或 `python`) |
75
+ | `{python-env}` | 环境变量前缀(Windows GBK 为 `PYTHONUTF8=1 `,其他为空) |
76
+
77
+ - **检测成功** → 进入步骤4
78
+ - **检测失败** → 根据错误提示用户安装或配置
79
+
80
+ ---
81
+
82
+ #### 步骤4:生成环境缓存文件
83
+
84
+ 创建 `{work-dir}/.eval/env.cfg`:
85
+
86
+ ```ini
87
+ python_cmd={python-cmd}
88
+ python_env={python-env}
89
+ deps_required=requests
90
+ deps_optional={可选依赖,已安装为pandas,openpyxl,未安装为空}
91
+ # 说明:pandas 用于数据处理,openpyxl 是 pandas 读取 Excel 的引擎
92
+ created_at={当前时间戳}
93
+ ```
94
+
95
+ 完成本任务。
96
+
97
+ ---
98
+
99
+ > **重要提示**:执行脚本时使用 `{python-env}` 前缀
100
+ >
101
+ > 在后续所有脚本调用中,必须使用 `{python-env}{python-cmd}` 格式执行命令:
102
+ >
103
+ > ```bash
104
+ > {python-env}{python-cmd} {skill-dir}/scripts/eval_auth.py check --output {work-dir}/.eval/auth.json
105
+ > ```
106
+ >
107
+ > Windows GBK终端下,`{python-env}` 为 `PYTHONUTF8=1 `,实际执行:`PYTHONUTF8=1 python scripts/eval_auth.py check --output {work-dir}/.eval/auth.json`
108
+
109
+ ---
110
+
111
+ ### 任务2:确保鉴权Token有效
112
+
113
+ #### 步骤1:检查鉴权文件
114
+
115
+ 检查 `{work-dir}/.eval/auth.json` 是否存在。
116
+
117
+ - **文件不存在** → 进入步骤2
118
+ - **文件存在** → 进入步骤3
119
+
120
+ ---
121
+
122
+ #### 步骤2:智能登录授权
123
+
124
+ **⚠️ 不可跳过**:用户必须在浏览器完成授权后输入授权码,此流程无法绕过。
125
+
126
+ 执行智能登录命令:
127
+ ```bash
128
+ {python-env}{python-cmd} {skill-dir}/scripts/eval_auth.py login --config {skill-dir}/scripts/cfg/eval-auth.cfg --output {work-dir}/.eval/auth.json
129
+ ```
130
+
131
+ 脚本自动检测运行环境并选择登录模式。
132
+
133
+ **输出处理**:
134
+
135
+ | status | 说明 | 后续动作 |
136
+ |--------|------|----------|
137
+ | `success` | 自动完成,Token已获取 | 完成本任务 |
138
+ | `manual_url` | 需手动授权 | 执行下方手动授权流程 |
139
+
140
+ **手动授权流程**(status=`manual_url`时执行):
141
+
142
+ 1. 展示输出中的 `login_url`,提示用户访问并完成授权
143
+ 2. 等待用户返回授权码(用户主动输入,不使用 AskUserQuestion)
144
+ 3. 获取授权码后执行token命令:
145
+ ```bash
146
+ {python-env}{python-cmd} {skill-dir}/scripts/eval_auth.py token --code {授权码} --state_token {输出中的state_token} --config {skill-dir}/scripts/cfg/eval-auth.cfg --output {work-dir}/.eval/auth.json
147
+ ```
148
+
149
+ **可选参数**:`--mode auto|manual`(强制指定模式)。
150
+
151
+ ---
152
+
153
+ #### 步骤3:验证Token有效性
154
+
155
+ ```bash
156
+ {python-env}{python-cmd} {skill-dir}/scripts/eval_auth.py check --output {work-dir}/.eval/auth.json
157
+ ```
158
+
159
+ | status | 说明 | 后续动作 |
160
+ |--------|------|----------|
161
+ | `valid` | Token有效 | 完成本任务 |
162
+ | `invalid` | Token已失效 | 进入步骤2 |
163
+ | `not_found` | 文件不存在 | 进入步骤2 |
164
+
165
+ ---
166
+
167
+ ### 任务3:确认会话目录
168
+
169
+ #### 步骤1:分析用户意图
170
+
171
+ 结合分析历史对话,分析用户意图。判断如下:
172
+
173
+ | 用户意图 | 判断依据 | 后续动作 |
174
+ |----------|----------|----------|
175
+ | 新建评测任务 | 对话中提及"新建"、"创建"、"开始新的" | → 步骤3 |
176
+ | 继续旧任务 | 对话中提及会话ID或"继续"某任务 | → 步骤2 |
177
+ | 无法判断 | 无历史对话或意图不明确 | → 步骤2 |
178
+
179
+ ---
180
+
181
+ #### 步骤2:选择历史会话
182
+
183
+ 扫描并展示历史会话列表,格式:`| 会话ID | 评测场景 | 状态 |`。
184
+
185
+ - **选择历史任务** → 使用对应的 `{session-id}`,完成本任务
186
+ - **输入 'new'** → 进入步骤3
187
+
188
+ ---
189
+
190
+ #### 步骤3:创建新会话目录
191
+
192
+ 命名规则:`session-{8位字母数字}`,示例:`session-a3c8f4ci`
193
+ ```bash
194
+ session_id="session-$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 8)"
195
+ ```
196
+
197
+ ```bash
198
+ mkdir -p {work-dir}/.eval/{session-id}
199
+ ```
200
+
201
+ ---
202
+
203
+ ## Red Flags
204
+
205
+ | 违规行为 | 简洁理由 |
206
+ |----------|----------|
207
+ | 跳过缓存检测 | 缓存优先原则 |
208
+ | 跳过重新授权 | Token失效必须重新授权 |
209
+ | 未验证环境继续执行 | 环境验证是前置条件 |
210
+
211
+ > 通用违规行为见 [SKILL.md Red Flags](./SKILL.md#red-flags---停止并检查)
212
+
213
+ **常见借口**:
214
+
215
+ | 借口 | 现实 |
216
+ |------|------|
217
+ | "评测集可以先问用户" | 评测集属于构建阶段,不可提前询问 |
218
+ | "场景可以提前确认" | 场景属于构建阶段,不可提前询问 |
219
+
220
+ > 用户明确指明跳转时,可直接进入对应阶段。
221
+
222
+ ## 常见错误
223
+
224
+ | 错误 | 原因 | 解决方案 |
225
+ |------|------|----------|
226
+ | Python命令不可用 | 未安装Python 3.x | 提示安装Python 3.x |
227
+ | Python版本不兼容 | 系统默认Python 2.x | 创建别名或使用正确命令 |
228
+ | Token已失效 | Token过期或被撤销 | 引导用户重新授权 |
229
+ | 浏览器打开失败 | 服务器终端无图形界面 | 用户手动访问登录链接 |
230
+ | 非交互式终端 | 在管道或脚本中运行 | 使用 `login` 和 `token` 子命令分步执行 |
231
+ | 跳过缓存直接检测 | 忽略步骤顺序 | 严格按步骤1→8顺序执行 |
232
+
233
+ ---
234
+
235
+ ## 变量速查
236
+
237
+ 变量定义见 [SKILL.md 变量速查](./SKILL.md#变量速查)
@@ -0,0 +1,207 @@
1
+ ---
2
+ name: dimension-process
3
+ description: Use when need to configure evaluation dimensions for case-level or dimension-level evaluation
4
+ ---
5
+
6
+ # 维度配置流程
7
+
8
+ 本文档包含两种评测方式的维度配置流程,由 eval-build.md 任务2步骤3按需调用。
9
+
10
+ **调用条件**:专家模板匹配失败,需自定义评测配置。
11
+
12
+ ---
13
+
14
+ ## 流程速查
15
+
16
+ | 编号 | 流程名称 | 触发条件 | 调用方 |
17
+ |------|----------|----------|--------|
18
+ | 流程5 | 定制用例级评测配置 | 用户选择定制用例级评测 | eval-build.md 任务2步骤3 |
19
+ | 流程6 | 通用维度级评测配置 | 用户选择通用维度级评测 | eval-build.md 任务2步骤3 |
20
+
21
+ ---
22
+
23
+ ## 流程5:自定义用例级评测配置
24
+
25
+ **触发条件**:eval-build.md 任务2步骤2确定评测方式为定制用例级。
26
+
27
+ **目标**:基于内置用例级评测维度模板,输出维度配置。
28
+
29
+ > ⚠️ 注意:定制用例级评测只有一个评测维度。
30
+
31
+ ---
32
+
33
+ ### 步骤1:查阅内置用例级评测维度模板
34
+
35
+ 参考 `{skill-dir}/references/内置模板说明.md` 第2.2节"定制用例级评测模板",读取模板文件:
36
+ ```
37
+ {skill-dir}/assets/dimensions/用例级评测维度模板.json
38
+ ```
39
+
40
+ ---
41
+
42
+ ### 步骤2:评估模板适配情况
43
+
44
+ | 情况 | 说明 | 动作 |
45
+ |------|------|------|
46
+ | 完全适配 | 内置模板满足评测场景 | 直接使用内置模板 |
47
+ | 部分适配 | 需调整部分字段内容 | 基于模板调整字段 |
48
+
49
+ **可调整字段**:
50
+ - `name`:维度名称
51
+ - `description`:维度描述
52
+ - `prompt.role`:评委角色设定
53
+ - `prompt.definition`:有效性定义
54
+ - `prompt.instruct`:通过/不通过判定标准
55
+
56
+ **保持不变的字段**:
57
+ - `type`:固定为 `llm-judge`
58
+ - `prompt.body`:固定依赖评测要点(keypoint)、上下文(context)、历史(history)
59
+
60
+ ---
61
+
62
+ ### 步骤3:保存维度配置
63
+
64
+ **参考**:维度配置结构转化规则
65
+
66
+ **保存路径**:`{work-dir}/.eval/{session-id}/eval-dimension.json`
67
+
68
+ ---
69
+
70
+ **返回**:任务2步骤4
71
+
72
+ ---
73
+
74
+ ## 流程6:自定义通用维度级评测配置
75
+
76
+ **触发条件**:eval-build.md 任务2步骤2确定评测方式为通用维度级。
77
+
78
+ **目标**:根据评测场景构建评测维度,确保全面覆盖。
79
+
80
+ ---
81
+
82
+ ### 步骤1:选择评测维度
83
+
84
+ 根据用户场景,从内置评测维度模板中选择合适的维度:
85
+
86
+ 1. 参考 `{skill-dir}/references/内置模板说明.md` 第2节"维度配置模板"
87
+ 2. 根据评测场景匹配适用的内置维度
88
+
89
+ ---
90
+
91
+ ### 步骤2:评估维度覆盖情况
92
+
93
+ | 情况 | 说明 | 动作 |
94
+ |------|------|------|
95
+ | 全部内置 | 内置维度完全覆盖评测场景 | 直接使用内置维度 |
96
+ | 部分覆盖 | 内置维度覆盖部分评测场景 | 补充生成缺失维度 |
97
+ | 无匹配 | 无适用的内置维度 | 全部自动生成 |
98
+
99
+ **自动生成维度**:参考 `{skill-dir}/references/评测维度说明.md`,重点关注第1节评测类型选择、第2节字段填充规则。
100
+
101
+ ---
102
+
103
+ ### 步骤3:保存维度配置
104
+
105
+ 合并维度后设置权重(总和=1.0),保存至会话目录。
106
+
107
+ **参考**:维度配置结构转化规则
108
+
109
+ **保存路径**:`{work-dir}/.eval/{session-id}/eval-dimension.json`
110
+
111
+ ---
112
+
113
+ **返回**:任务2步骤4
114
+
115
+ ---
116
+
117
+ ## 通用说明
118
+
119
+ ### 维度配置结构转化规则
120
+
121
+ 维度模板文件与会话目录下的 `eval-dimension.json` 结构不同,保存前需进行转化。
122
+
123
+ **转化步骤**:
124
+ 1. 提取模板的 `config` 字段内容作为维度对象
125
+ 2. 将维度对象放入 `evals` 数组
126
+ 3. 从 `eval-judge.json` 读取 `judge_id` 并填充
127
+
128
+ **结构对比**:
129
+
130
+ | 对比项 | 模板文件结构 | 目标文件结构 |
131
+ |--------|-------------|-------------|
132
+ | 根节点 | `config: {...}` | `evals: [{...}]` |
133
+ | judge_id | 空字符串 | 需从 eval-judge.json 读取 |
134
+
135
+ **单维度转化示例**(流程5):
136
+
137
+ 模板文件:
138
+ ```json
139
+ {
140
+ "name": "有效性(用例级)",
141
+ "description": "...",
142
+ "config": {
143
+ "name": "有效性",
144
+ "type": "llm-judge",
145
+ "judge_id": "",
146
+ ...
147
+ }
148
+ }
149
+ ```
150
+
151
+ 目标文件:
152
+ ```json
153
+ {
154
+ "name": "有效性(用例级)",
155
+ "description": "...",
156
+ "evals": [
157
+ {
158
+ "name": "有效性",
159
+ "type": "llm-judge",
160
+ "judge_id": "ID_AJ001",
161
+ ...
162
+ }
163
+ ]
164
+ }
165
+ ```
166
+
167
+ **多维度合并示例**(流程6):
168
+
169
+ 多个模板文件的 `config` 内容合并到 `evals` 数组:
170
+ ```json
171
+ {
172
+ "name": "知识问答",
173
+ "description": "...",
174
+ "evals": [
175
+ { "name": "准确性", "type": "llm-score", "judge_id": "", ... },
176
+ { "name": "完整性", "type": "llm-score", "judge_id": "", ... },
177
+ { "name": "格式规范", "type": "builtin", "func": "JSONFORMAT", ... }
178
+ ]
179
+ }
180
+ ```
181
+
182
+ **保存前检查**:
183
+ - [ ] `evals` 为数组结构(非 `config` 嵌套)
184
+ - [ ] `judge_id` 已填充(非空字符串,客观评测除外)
185
+ - [ ] 多维度时权重总和为 1.0
186
+
187
+ ---
188
+
189
+ ## 对比参考
190
+
191
+ | 对比项 | 通用维度级评测(流程6) | 定制用例级评测(流程5) |
192
+ |--------|------------------------|------------------------|
193
+ | 触发条件 | 选择通用维度级评测 | 选择定制用例级评测且未匹配到专家模板 |
194
+ | 核心定位 | 宏观全面覆盖 | 细节偏好对齐 |
195
+ | 维度来源 | 内置模板优先,不足则自动生成 | 内置模板优先,按需调整字段 |
196
+ | 维度数量 | 多维度组合 | 单一维度 |
197
+ | 后续流程 | 无 | 流程4:评测点生成 |
198
+
199
+ ---
200
+
201
+ ## 变量速查
202
+
203
+ | 变量 | 说明 |
204
+ |------|------|
205
+ | `{work-dir}` | 当前工作目录 |
206
+ | `{session-id}` | 会话目录名,格式 `session-{8位字母数字}` |
207
+ | `{skill-dir}` | 技能安装目录 |
@@ -0,0 +1,184 @@
1
+ ---
2
+ name: evalset-create-process
3
+ description: Use when user has no evaluation dataset and needs AI to generate one from scratch
4
+ ---
5
+
6
+ # 评测集生成流程
7
+
8
+ 本文档定义生成评测集流程,AI 根据评测场景从零生成完整评测集。
9
+
10
+ ---
11
+
12
+ ## 触发条件
13
+
14
+ 用户无评测集,需AI生成。
15
+
16
+ ---
17
+
18
+ ## 目标
19
+
20
+ AI 根据评测场景生成完整评测集,保存为 JSONL 格式。
21
+
22
+ ---
23
+
24
+ ## 步骤1:确认评测场景
25
+
26
+ 从任务1获取已确认的评测场景。
27
+
28
+ - **已确认** → 输出场景名称,进入步骤2
29
+ - **未确认** → 提示用户先完成场景确认
30
+
31
+ ---
32
+
33
+ ## 步骤2:确认评测模式
34
+
35
+ **判断1**:分析历史对话意图
36
+
37
+ | 用户意图 | 判断依据 | 后续动作 |
38
+ |----------|----------|----------|
39
+ | 单模型评测 | 对话中提及"单个模型"、"评测一个模型" | → 设置 `{eval-mode}` 为 `single`,进入步骤3 |
40
+ | 多模型评测 | 对话中提及"多个模型"、"横评"、"对比评测" | → 设置 `{eval-mode}` 为 `multi`,进入步骤3 |
41
+ | 无法判断 | 无相关提及 | → 判断2 |
42
+
43
+ **判断2**:询问评测模式
44
+
45
+ ```
46
+ 请选择评测模式:
47
+ 1. 单模型评测 - 评测单个模型的表现
48
+ 2. 多模型评测 - 多个模型横向对比
49
+ ```
50
+
51
+ - **选择1** → 设置 `{eval-mode}` 为 `single`,进入步骤3
52
+ - **选择2** → 设置 `{eval-mode}` 为 `multi`,进入步骤3
53
+
54
+ ---
55
+
56
+ ## 步骤3:询问生成数量
57
+
58
+ **⚠️ 必须等待用户输入**:用户未输入时才使用默认值。
59
+
60
+ **单模型模式**(`{eval-mode}` = `single`):
61
+
62
+ ```
63
+ 请输入要生成的问题数量(默认10条):
64
+ ```
65
+
66
+ 用户未输入则使用默认值 10 条。
67
+
68
+ **多模型模式**(`{eval-mode}` = `multi`):
69
+
70
+ ```
71
+ 请输入要生成的问题数量(默认10条):
72
+ 请输入模型数量,或提供模型名称列表(如:model_a, model_b):
73
+ ```
74
+
75
+ - 仅输入数量 → 使用占位符 `model_1`, `model_2` ...
76
+ - 输入模型名称 → 使用指定名称
77
+
78
+ ---
79
+
80
+ ## 步骤4:AI 生成评测集
81
+
82
+ ### 字段定义
83
+
84
+ | 字段 | 必填 | 含义 | 说明 |
85
+ |------|------|------|------|
86
+ | case_id | 是 | 用例唯一标识 | **同一问题的多模型回答共享相同 case_id** |
87
+ | model | 是 | 模型标识 | 待评测模型的名称或标识符 |
88
+ | question | 是 | 评测问题 | 用户输入的提示词或问题 |
89
+ | answer | 是 | 模型输出 | 待评测模型生成的实际回答,**不可为空** |
90
+ | reference | 否 | 参考答案 | 理想答案,用于评分对比或生成评测点 |
91
+ | context | 否 | 上下文信息 | 问题背景,用于理解场景 |
92
+ | category | 否 | 分类标签 | 用于结果统计分析 |
93
+
94
+ **⚠️ 重要区分**:
95
+ - `answer`:待评测模型的实际输出,是评测的核心对象
96
+ - `reference`:参考答案,用于提炼评测要点或作为评分标准
97
+
98
+
99
+ ### 生成说明与要求
100
+
101
+ 根据评测场景、模式和数量生成符合上述**字段定义**格式的数据。
102
+
103
+ > 注意,如果用户是用例级评测,评测点 keypoint 字段不在该阶段生成。
104
+
105
+ **执行方式**:
106
+ - 数据量 ≤50 条:主 Agent 直接生成
107
+ - 数据量 >50 条:可选使用 SubAgent 分批生成,每批次生成同类型问题
108
+ - 主 Agent context 满载时:必须使用 SubAgent 分批生成
109
+
110
+ **生成要求**:
111
+ - 覆盖不同难度(简单/中等/困难)
112
+ - 覆盖不同类型(开放式/封闭式/场景化)
113
+ - 参考内置专家模板的问题风格
114
+ - 答案采用理想参考答案风格
115
+
116
+ **单模型模式**生成格式示例:
117
+ ```jsonl
118
+ {"case_id": "case-0001", "model": "model_a", "question": "问题内容", "answer": "答案内容", "category": "分类"}
119
+ {"case_id": "case-0002", "model": "model_a", "question": "问题内容", "answer": "答案内容", "category": "分类"}
120
+ ```
121
+
122
+ **多模型模式**生成格式示例(同一问题共享 case_id):
123
+ ```jsonl
124
+ {"case_id": "case-0001", "model": "model_a", "question": "问题内容", "answer": "模型A回答", "category": "分类"}
125
+ {"case_id": "case-0001", "model": "model_b", "question": "问题内容", "answer": "模型B回答", "category": "分类"}
126
+ {"case_id": "case-0002", "model": "model_a", "question": "问题内容", "answer": "模型A回答", "category": "分类"}
127
+ {"case_id": "case-0002", "model": "model_b", "question": "问题内容", "answer": "模型B回答", "category": "分类"}
128
+ ```
129
+
130
+
131
+ 保存至:`{work-dir}/.eval/{session-id}/evalset/evalset-prepared.jsonl`
132
+
133
+ ---
134
+
135
+ ## 步骤5:预览与确认
136
+
137
+ 展示前3条数据,等待用户确认:
138
+
139
+ ```
140
+ 是否确认保存?(Y/n/重新生成)
141
+ ```
142
+
143
+ **⚠️ 不可跳过**:此步骤必须等待用户确认。
144
+
145
+ - **Y** → 返回解析流程
146
+ - **n** → 取消生成,返回步骤3
147
+ - **重新生成** → 返回步骤4
148
+
149
+ ---
150
+
151
+ ## 返回点
152
+
153
+ 流程结束后返回 **eval-build.md 任务4步骤3**(执行解析流程)。
154
+
155
+ ---
156
+
157
+ ## 常见错误
158
+
159
+ | 错误 | 原因 | 解决方案 |
160
+ |------|------|----------|
161
+ | 生成的 case_id 不唯一 | 多模型模式同一问题使用不同 case_id | 检查多模型模式下同一问题是否共享相同 case_id |
162
+ | JSONL 格式无效 | 每行不是独立 JSON 对象 | 确保每行是完整 JSON,无跨行结构 |
163
+ | 答案风格不一致 | 多个 SubAgent 生成风格差异 | 主 Agent 后处理统一风格,或单 Agent 生成 |
164
+ | 问题覆盖不均衡 | 缺少困难题或特定类型 | 检查生成要求覆盖清单,补充缺失类型 |
165
+ | 用户确认被跳过 | ClaudeCode 直接保存 | 预览步骤标注 `⚠️ 不可跳过`,必须等待确认 |
166
+
167
+ ---
168
+
169
+ ## 产物命名规范
170
+
171
+ | 产物 | 说明 |
172
+ |------|------|
173
+ | `evalset-prepared.jsonl` | JSONL 格式评测集(标准字段格式) |
174
+
175
+ ---
176
+
177
+ ## 变量速查
178
+
179
+ | 变量 | 说明 |
180
+ |------|------|
181
+ | `{work-dir}` | 当前工作目录 |
182
+ | `{session-id}` | 会话目录名,格式 `session-{8位字母数字}` |
183
+ | `{eval-mode}` | 评测模式:`single`(单模型)或 `multi`(多模型) |
184
+ | `{model-list}` | 模型名称列表,多模型模式使用 |