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,455 @@
1
+ ---
2
+ name: eval-service-api
3
+ description: Use when needing to understand evaluation service API endpoints for dataset management and task execution
4
+ ---
5
+
6
+ # 评测服务接口说明
7
+
8
+ 本文档定义评测服务的 API 接口,包括评测集管理和评测任务管理。
9
+
10
+ ---
11
+
12
+ ## 快速参考
13
+
14
+ | 接口 | 方法 | 路径 | 说明 |
15
+ |------|------|------|------|
16
+ | 上传评测集 | POST | `/open/api/v1/evalset` | 上传评测数据 |
17
+ | 下载评测集 | GET | `/open/api/v1/evalset/:id` | 分批下载评测数据 |
18
+ | 查询评测集数量 | GET | `/open/api/v1/evalset/:id/count` | 查询条目总数 |
19
+ | 提交评测任务 | POST | `/open/api/v1/eval/tasks` | 创建评测任务 |
20
+ | 查询任务列表 | GET | `/open/api/v1/eval/tasks` | 分页查询任务 |
21
+ | 查询任务详情 | GET | `/open/api/v1/eval/tasks/:id` | 获取任务状态和产物 |
22
+ | 取消任务 | DELETE | `/open/api/v1/eval/tasks/:id` | 取消运行中任务 |
23
+ | 查询任务产物 | GET | `/open/api/v1/eval/tasks/:id/artifacts` | 获取产物列表 |
24
+ | 查询评测报告 | GET | `/open/api/v1/eval/tasks/:id/report` | 获取报告摘要 |
25
+
26
+ ---
27
+
28
+ ## 1. 概述
29
+
30
+ ### 1.1 统一响应格式
31
+
32
+ 所有接口返回 JSON 格式:
33
+
34
+ ```json
35
+ {
36
+ "code": 0,
37
+ "message": "success",
38
+ "data": {}
39
+ }
40
+ ```
41
+
42
+ | 字段 | 类型 | 说明 |
43
+ |------|------|------|
44
+ | `code` | `int` | 业务状态码。`0` 表示成功,非 `0` 表示失败 |
45
+ | `message` | `string` | 状态描述信息 |
46
+ | `data` | `object` | 业务数据(仅成功时返回) |
47
+
48
+ ### 1.2 分页响应格式
49
+
50
+ 分页列表接口增加 `total` 字段:
51
+
52
+ ```json
53
+ {
54
+ "code": 0,
55
+ "message": "success",
56
+ "data": [],
57
+ "total": 100
58
+ }
59
+ ```
60
+
61
+ **分页请求参数**:
62
+
63
+ | 参数 | 类型 | 必填 | 默认值 | 约束 | 说明 |
64
+ |------|------|------|--------|------|------|
65
+ | `page` | `int` | 否 | `1` | `≥ 1` | 页码 |
66
+ | `page_size` | `int` | 否 | `20` | `1 ~ 100` | 每页数量 |
67
+
68
+ ### 1.3 认证方式
69
+
70
+ | Header | 必填 | 说明 |
71
+ |--------|------|------|
72
+ | `Authorization` | 是 | `Bearer <access_token>` |
73
+ | `Content-Type` | 是 | `application/json` |
74
+
75
+ **认证失效处理**:
76
+
77
+ ```json
78
+ {
79
+ "code": 10002,
80
+ "message": "鉴权Token已失效,请重新登录授权"
81
+ }
82
+ ```
83
+
84
+ ### 1.4 错误码
85
+
86
+ #### 通用错误码 (10000-19999)
87
+
88
+ | 错误码 | HTTP状态码 | 说明 |
89
+ |--------|------------|------|
90
+ | `10000` | 500 | 内部服务错误 |
91
+ | `10001` | 400 | 请求参数无效 |
92
+ | `10002` | 401 | 未授权 |
93
+ | `10003` | 403 | 权限不足 |
94
+ | `10004` | 404 | 资源不存在 |
95
+
96
+ #### 评测集错误码 (80000-89999)
97
+
98
+ | 错误码 | HTTP状态码 | 说明 |
99
+ |--------|------------|------|
100
+ | `80001` | 400 | 评测集参数无效 |
101
+ | `80002` | 500 | 评测集上传失败 |
102
+ | `80003` | 500 | 评测集下载失败 |
103
+ | `80004` | 500 | 评测集数量查询失败 |
104
+
105
+ #### 评测任务错误码 (90000-99999)
106
+
107
+ | 错误码 | HTTP状态码 | 说明 |
108
+ |--------|------------|------|
109
+ | `90001` | 400 | 任务定义无效 |
110
+ | `90002` | 500 | 任务提交失败 |
111
+ | `90003` | 404 | 任务不存在 |
112
+ | `90004` | 500 | 任务停止失败 |
113
+ | `90005` | 404 | 任务产物不存在 |
114
+ | `90007` | 409 | 已有运行中任务,需稍后提交 |
115
+
116
+ ---
117
+
118
+ ## 2. 评测集接口
119
+
120
+ 评测集(Evalset)是评测任务的数据源,包含需要评测的对话条目。
121
+
122
+ ### 2.1 上传评测集
123
+
124
+ **接口URL**:`POST /open/api/v1/evalset`
125
+
126
+ **请求参数**:
127
+
128
+ | 字段 | 类型 | 必填 | 说明 |
129
+ |------|------|------|------|
130
+ | `evalset_id` | `string` | 否 | 评测集唯一标识(不传则自动生成) |
131
+ | `items` | `array[EvalsetItem]` | 是 | 评测数据条目列表(1-500条) |
132
+
133
+ **EvalsetItem 定义**:
134
+
135
+ | 字段 | 类型 | 必填 | 说明 |
136
+ |------|------|------|------|
137
+ | `case_id` | `string` | 是 | 用例唯一标识 |
138
+ | `model` | `string` | 是 | 模型标识 |
139
+ | `question` | `string` | 是 | 用户问题 |
140
+ | `answer` | `string` | 是 | 模型回答 |
141
+ | `system` | `string` | 否 | 系统提示词 |
142
+ | `history` | `string` | 否 | 历史对话(JSON字符串) |
143
+ | `context` | `string` | 否 | 上下文信息 |
144
+ | `category` | `string` | 否 | 分类标签 |
145
+ | `reference` | `string` | 否 | 参考答案 |
146
+ | `keypoint` | `string` | 否 | 评测点列表(JSON字符串数组) |
147
+ | `extends` | `object` | 否 | 自定义扩展字段 |
148
+ | `metainfo` | `object` | 否 | 元信息 |
149
+
150
+ **请求示例**:
151
+
152
+ ```json
153
+ {
154
+ "evalset_id": "my-evalset-001",
155
+ "items": [
156
+ {
157
+ "case_id": "case-001",
158
+ "model": "gpt-4",
159
+ "question": "什么是大语言模型?",
160
+ "answer": "大语言模型是...",
161
+ "reference": "参考答案"
162
+ }
163
+ ]
164
+ }
165
+ ```
166
+
167
+ **响应参数**:
168
+
169
+ | 字段 | 类型 | 说明 |
170
+ |------|------|------|
171
+ | `data.received` | `int` | 实际接收的条目数量 |
172
+
173
+ ---
174
+
175
+ ### 2.2 下载评测集
176
+
177
+ **接口URL**:`GET /open/api/v1/evalset/:id`
178
+
179
+ **路径参数**:
180
+
181
+ | 字段 | 类型 | 必填 | 说明 |
182
+ |------|------|------|------|
183
+ | `id` | `string` | 是 | 评测集标识 |
184
+
185
+ **查询参数**:
186
+
187
+ | 字段 | 类型 | 必填 | 默认值 | 说明 |
188
+ |------|------|------|--------|------|
189
+ | `offset` | `int` | 否 | `0` | 起始偏移量 |
190
+ | `limit` | `int` | 否 | `300` | 返回条目数(1-500) |
191
+
192
+ **请求示例**:`GET /open/api/v1/evalset/my-evalset-001?offset=0&limit=100`
193
+
194
+ ---
195
+
196
+ ### 2.3 查询评测集数量
197
+
198
+ **接口URL**:`GET /open/api/v1/evalset/:id/count`
199
+
200
+ **响应参数**:
201
+
202
+ | 字段 | 类型 | 说明 |
203
+ |------|------|------|
204
+ | `data.count` | `int` | 评测集条目总数 |
205
+
206
+ ---
207
+
208
+ ## 3. 评测任务接口
209
+
210
+ 评测任务(Eval Task)是评测的执行单元。
211
+
212
+ ### 3.1 提交评测任务
213
+
214
+ **接口URL**:`POST /open/api/v1/eval/tasks`
215
+
216
+ **请求参数**:
217
+
218
+ | 字段 | 类型 | 必填 | 说明 |
219
+ |------|------|------|------|
220
+ | `apiVersion` | `string` | 是 | 工作流模版版本(如 `v1`) |
221
+ | `models` | `array[TaskModel]` | 否 | 参与评测的模型列表 |
222
+ | `agents` | `array[TaskAgent]` | 否 | 评委列表 |
223
+ | `spec` | `object(TaskSpec)` | 是 | 任务执行步骤定义 |
224
+
225
+ **TaskModel 定义**:
226
+
227
+ | 字段 | 类型 | 必填 | 说明 |
228
+ |------|------|------|------|
229
+ | `id` | `string` | 否 | 模型唯一标识 |
230
+ | `name` | `string` | 否 | 模型显示名称 |
231
+ | `type` | `string` | 否 | 模型类型(如 `openai`) |
232
+ | `api_key` | `string` | 否 | API密钥 |
233
+ | `api_url` | `string` | 否 | API地址 |
234
+ | `model` | `string` | 否 | 模型名称 |
235
+ | `concurrency` | `int` | 否 | 并发调用数 |
236
+ | `params` | `object` | 否 | 模型推理参数 |
237
+
238
+ **TaskAgent 定义**:
239
+
240
+ | 字段 | 类型 | 必填 | 说明 |
241
+ |------|------|------|------|
242
+ | `id` | `string` | 否 | 评委唯一标识 |
243
+ | `name` | `string` | 否 | 评委显示名称 |
244
+ | `type` | `string` | 否 | 评委类型 |
245
+ | `api_key` | `string` | 否 | API密钥 |
246
+ | `api_url` | `string` | 否 | API地址 |
247
+ | `flow_id` | `string` | 否 | 关联流程ID |
248
+ | `concurrency` | `int` | 否 | 并发调用数 |
249
+ | `params` | `object` | 否 | 评委参数 |
250
+
251
+ **TaskSpec 定义**:
252
+
253
+ | 字段 | 类型 | 必填 | 说明 |
254
+ |------|------|------|------|
255
+ | `templates` | `array[TaskTemplate]` | 是 | 步骤模版列表(至少1个`evaluation`类型) |
256
+
257
+ **TaskTemplate 定义**:
258
+
259
+ | 字段 | 类型 | 必填 | 说明 |
260
+ |------|------|------|------|
261
+ | `name` | `string` | 是 | 步骤显示名称 |
262
+ | `type` | `string` | 是 | 步骤类型 |
263
+ | `parameters` | `object` | 否 | 步骤参数 |
264
+
265
+ **TaskTemplate.type 枚举**:
266
+
267
+ | 类型 | 必填 | 说明 |
268
+ |------|------|------|
269
+ | `evalset` | 否 | 评测集准备步骤 |
270
+ | `evaluation` | 是 | 模型评测步骤(必需) |
271
+ | `report-upload` | 否 | 报告上传步骤 |
272
+ | `database` | 否 | 数据入库步骤 |
273
+
274
+ **EvalItem 定义**(evaluation步骤的parameters.eval字段):
275
+
276
+ | 字段 | 类型 | 必填 | 说明 |
277
+ |------|------|------|------|
278
+ | `name` | `string` | 否 | 评测项名称 |
279
+ | `type` | `string` | 否 | 评测类型(`llm-score`/`agent-score`/`builtin`) |
280
+ | `judge_id` | `string` | 否 | 评委ID |
281
+ | `params` | `object` | 否 | 评测参数 |
282
+ | `prompt` | `object` | 否 | 提示词配置 |
283
+ | `weight` | `float64` | 否 | 权重 |
284
+ | `func` | `string` | 否 | 评测函数(builtin类型时必填) |
285
+
286
+ **Prompt 定义**:
287
+
288
+ | 字段 | 类型 | 说明 |
289
+ |------|------|------|
290
+ | `role` | `string` | 角色设定 |
291
+ | `definition` | `string` | 维度定义 |
292
+ | `instruct` | `string` | 评分标准 |
293
+ | `step` | `string` | 评测步骤 |
294
+ | `body` | `object` | 用例级评测字段注入配置,如 `{"keypoint": true, "context": true}` |
295
+
296
+ **请求示例**:
297
+
298
+ ```json
299
+ {
300
+ "apiVersion": "v1",
301
+ "models": [
302
+ {
303
+ "id": "ID_AJ001",
304
+ "name": "DeepSeek-R1",
305
+ "type": "api-openai",
306
+ "model": "xdeepseekr1",
307
+ "concurrency": 50,
308
+ "params": {
309
+ "max_tokens": 16384,
310
+ "temperature": 0
311
+ }
312
+ }
313
+ ],
314
+ "spec": {
315
+ "templates": [
316
+ {
317
+ "name": "模型评测",
318
+ "type": "evaluation",
319
+ "parameters": {
320
+ "evalset": "eval-bw7adghvb",
321
+ "eval": [
322
+ {
323
+ "name": "相关性",
324
+ "type": "llm-score",
325
+ "judge_id": "ID_AJ001",
326
+ "weight": 0.3,
327
+ "prompt": {
328
+ "definition": "助手响应是否和用户问题强相关",
329
+ "instruct": "5分:内容紧扣核心主题...",
330
+ "step": "请遵循下面的步骤进行评判..."
331
+ }
332
+ }
333
+ ]
334
+ }
335
+ }
336
+ ]
337
+ }
338
+ }
339
+ ```
340
+
341
+ ---
342
+
343
+ ### 3.2 查询任务列表
344
+
345
+ **接口URL**:`GET /open/api/v1/eval/tasks`
346
+
347
+ **查询参数**:
348
+
349
+ | 字段 | 类型 | 必填 | 默认值 | 说明 |
350
+ |------|------|------|--------|------|
351
+ | `page` | `int` | 否 | `1` | 页码 |
352
+ | `page_size` | `int` | 否 | `20` | 每页数量 |
353
+ | `status` | `string` | 否 | - | 按状态筛选 |
354
+
355
+ **任务状态枚举**:
356
+
357
+ | 状态值 | 说明 |
358
+ |--------|------|
359
+ | `Pending` | 待执行 |
360
+ | `Running` | 运行中 |
361
+ | `Succeeded` | 已成功 |
362
+ | `Failed` | 已失败 |
363
+ | `Cancelled` | 已取消 |
364
+
365
+ ---
366
+
367
+ ### 3.3 查询任务详情
368
+
369
+ **接口URL**:`GET /open/api/v1/eval/tasks/:id`
370
+
371
+ **路径参数**:
372
+
373
+ | 字段 | 类型 | 必填 | 说明 |
374
+ |------|------|------|------|
375
+ | `id` | `string` | 是 | 评测任务标识 |
376
+
377
+ **TaskResponse 定义**:
378
+
379
+ | 字段 | 类型 | 说明 |
380
+ |------|------|------|
381
+ | `id` | `string` | 任务唯一标识 |
382
+ | `name` | `string` | 任务名称 |
383
+ | `status` | `string` | 任务状态 |
384
+ | `progress` | `string` | 执行进度(如 `2/4`) |
385
+ | `message` | `string` | 状态描述 |
386
+ | `duration` | `int64` | 执行耗时(秒) |
387
+ | `step_status` | `array[StepStatus]` | 步骤状态列表 |
388
+ | `artifacts` | `array[Artifact]` | 产物列表 |
389
+ | `created_at` | `string` | 创建时间 |
390
+ | `updated_at` | `string` | 更新时间 |
391
+
392
+ **StepStatus 定义**:
393
+
394
+ | 字段 | 类型 | 说明 |
395
+ |------|------|------|
396
+ | `name` | `string` | 步骤名称 |
397
+ | `type` | `string` | 步骤类型 |
398
+ | `phase` | `string` | 执行阶段(Pending/Running/Succeeded/Failed) |
399
+ | `message` | `string` | 状态描述 |
400
+ | `started_at` | `string` | 开始时间 |
401
+ | `finished_at` | `string` | 结束时间 |
402
+
403
+ **Artifact 定义**:
404
+
405
+ | 字段 | 类型 | 说明 |
406
+ |------|------|------|
407
+ | `id` | `int64` | 产物唯一标识 |
408
+ | `type` | `string` | 产物类型 |
409
+ | `name` | `string` | 产物名称 |
410
+ | `url` | `string` | 访问地址 |
411
+ | `metadata` | `object` | 产物元数据 |
412
+ | `expires_at` | `string` | 过期时间 |
413
+ | `created_at` | `string` | 创建时间 |
414
+
415
+ **Artifact.type 枚举**:
416
+
417
+ | 类型 | 说明 |
418
+ |------|------|
419
+ | `report_file` | 评测报告文件 |
420
+ | `platform_page` | 平台报告页面 |
421
+ | `raw_data` | 原始评测数据 |
422
+ | `inference_result` | 推理结果数据 |
423
+
424
+ ---
425
+
426
+ ### 3.4 取消任务
427
+
428
+ **接口URL**:`DELETE /open/api/v1/eval/tasks/:id`
429
+
430
+ ---
431
+
432
+ ### 3.5 查询任务产物列表
433
+
434
+ **接口URL**:`GET /open/api/v1/eval/tasks/:id/artifacts`
435
+
436
+ **查询参数**:
437
+
438
+ | 字段 | 类型 | 必填 | 说明 |
439
+ |------|------|------|------|
440
+ | `type` | `string` | 否 | 按产物类型筛选 |
441
+
442
+ ---
443
+
444
+ ### 3.6 查询评测报告摘要
445
+
446
+ **接口URL**:`GET /open/api/v1/eval/tasks/:id/report`
447
+
448
+ **TaskReportResponse 定义**:
449
+
450
+ | 字段 | 类型 | 说明 |
451
+ |------|------|------|
452
+ | `task_id` | `string` | 任务标识 |
453
+ | `status` | `string` | 任务状态 |
454
+ | `artifacts` | `array[ArtifactBrief]` | 产物简要信息 |
455
+ | `summary` | `object` | 评测结果摘要 |
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: dimension-config
3
+ description: Use when creating or modifying evaluation dimension configurations
4
+ ---
5
+
6
+ # 评测维度配置说明
7
+
8
+ 本文档说明评测维度配置的格式规范与设计方法。
9
+
10
+ ---
11
+
12
+ ## 1. 评测类型选择
13
+
14
+ type 字段决定评测类型,是配置的核心决策点。
15
+
16
+ ### 主观评测 vs 客观评测
17
+
18
+ | 维度 | 主观评测(llm-score/llm-judge) | 客观评测(builtin) |
19
+ |------|-------------------------------|-------------------|
20
+ | 评测方式 | 评委模型打分或判断 | 内置算法计算指标 |
21
+ | 结果形式 | 分数(1-5)或通过/不通过 | 数值指标(如 0.85) |
22
+ | 适用场景 | 语义理解、创意质量、用户体验 | 翻译质量、文本相似度、格式校验 |
23
+
24
+ ### 选择决策
25
+
26
+ | 场景特征 | 推荐 type | 说明 |
27
+ |----------|-----------|------|
28
+ | 评估语义理解深度 | llm-score | "回答是否准确理解用户意图" |
29
+ | 评估创意或质量 | llm-score | "文案是否有创意、吸引人" |
30
+ | 判断是否符合规范 | llm-judge | "回答是否包含有害内容" |
31
+ | 翻译/摘要质量 | builtin | 使用 BLEU、ROUGE 等标准指标 |
32
+ | 格式正确性校验 | builtin | 使用 EQUAL、JSONFORMAT |
33
+
34
+ ### 常见场景推荐
35
+
36
+ | 评测场景 | 推荐维度 | 推荐类型 |
37
+ |----------|----------|----------|
38
+ | 知识问答 | 准确性、完整性、相关性 | llm-score |
39
+ | 内容创作 | 创意性、流畅性、风格契合 | llm-score |
40
+ | 翻译任务 | BLEU、COMET | builtin |
41
+ | 对话系统 | 帮助性、安全性、流畅性 | llm-score + llm-judge |
42
+ | 格式转换 | EQUAL、JSONFORMAT | builtin |
43
+
44
+ ---
45
+
46
+ ## 2. 字段填充规则
47
+
48
+ ### 字段决策表
49
+
50
+ | 字段 | llm-score | llm-judge | builtin |
51
+ |------|-----------|-----------|---------|
52
+ | name | 必填 | 必填 | 必填 |
53
+ | type | `"llm-score"` | `"llm-judge"` | `"builtin"` |
54
+ | judge_id | 必填,从 eval-judge.json 读取 | 必填,从 eval-judge.json 读取 | **不需要此字段** |
55
+ | func | `""` | `""` | 必填 |
56
+ | weight | 必填,[0, 1] | 必填,[0, 1] | 必填,[0, 1] |
57
+ | prompt | 必填 | 必填 | 可填空对象 |
58
+ | params | 可选,默认见下方 | 可选 | 可选 |
59
+
60
+ **params 默认值**:`{"answer": "answer", "reference": "reference"}`
61
+
62
+ ### 内置函数(func)
63
+
64
+ | func | 适用场景 |
65
+ |------|----------|
66
+ | BLEU | 机器翻译,基于 n-gram 精确度 |
67
+ | ROUGE | 文本摘要,基于最长公共子序列 |
68
+ | BERTScore | 语义相似度,基于 BERT |
69
+ | COMET | 翻译质量,上下文感知模型 |
70
+ | TER | 翻译错误率,基于编辑距离 |
71
+ | Cosine | 余弦相似度,基于句子嵌入 |
72
+ | EQUAL | 精确匹配 |
73
+ | JSONFORMAT | JSON 格式校验 |
74
+
75
+ ### prompt 字段(主观评测必填)
76
+
77
+ | 字段 | 必填 | 说明 |
78
+ |------|------|------|
79
+ | role | 否 | 角色背景,可填 `""` |
80
+ | definition | 是 | 维度定义,清晰描述"评测什么" |
81
+ | instruct | 是 | 评价标准,如"5分:... 3分:... 1分:..." |
82
+ | step | 是 | 评测步骤,3-5 步 |
83
+ | body | 否 | 用例级评测字段注入配置,如 `{"keypoint": true, "context": true}` |
84
+
85
+ **instruct 设计模板**:
86
+ - llm-score:`5分:{最高标准} 3分:{中等标准} 1分:{最低标准}`
87
+ - llm-judge:`通过:{通过条件} 不通过:{不通过条件}`
88
+
89
+ ---
90
+
91
+ ## 3. 配置文件格式
92
+
93
+ ```json
94
+ {
95
+ "name": "{评测场景名称}",
96
+ "description": "{评测场景描述}",
97
+ "evals": [
98
+ { "维度对象1" },
99
+ { "维度对象2" }
100
+ ]
101
+ }
102
+ ```
103
+
104
+ **根节点字段**:
105
+
106
+ | 字段 | 类型 | 必填 | 说明 |
107
+ |------|------|------|------|
108
+ | name | String | 是 | 评测场景名称 |
109
+ | description | String | 否 | 评测场景描述 |
110
+ | evals | Array | 是 | 评测维度数组 |
111
+
112
+ ---
113
+
114
+ ## 4. 配置示例
115
+
116
+ **完整示例(多维度混合)**:
117
+
118
+ ```json
119
+ {
120
+ "name": "知识问答",
121
+ "description": "开放问答场景评测",
122
+ "evals": [
123
+ {
124
+ "name": "准确性",
125
+ "type": "llm-score",
126
+ "judge_id": "ID_AJ001",
127
+ "func": "",
128
+ "weight": 0.5,
129
+ "prompt": {
130
+ "role": "",
131
+ "definition": "回答内容是否准确无误",
132
+ "instruct": "5分:完全准确无错误\n3分:基本准确有少量瑕疵\n1分:存在关键错误",
133
+ "step": "1. 识别关键信息点\n2. 验证各点准确性\n3. 检查遗漏或错误\n4. 给出评分"
134
+ }
135
+ },
136
+ {
137
+ "name": "完整性",
138
+ "type": "llm-score",
139
+ "judge_id": "ID_AJ001",
140
+ "func": "",
141
+ "weight": 0.3,
142
+ "prompt": {
143
+ "role": "",
144
+ "definition": "回答是否覆盖问题的所有要点",
145
+ "instruct": "5分:完全覆盖\n3分:覆盖主要要点\n1分:严重缺失",
146
+ "step": "1. 提取问题要点\n2. 检查覆盖情况\n3. 给出评分"
147
+ }
148
+ },
149
+ {
150
+ "name": "格式规范",
151
+ "type": "builtin",
152
+ "func": "JSONFORMAT",
153
+ "weight": 0.2,
154
+ "prompt": {}
155
+ }
156
+ ]
157
+ }
158
+ ```
159
+
160
+ ---
161
+
162
+ ## 5. 生成配置检查清单
163
+
164
+ - [ ] 根节点包含 `name`、`description`、`evals` 字段
165
+ - [ ] `evals` 数组为扁平结构,无 `config` 嵌套
166
+ - [ ] 主观评测的 `judge_id` 已从 `eval-judge.json` 读取
167
+ - [ ] 主观评测的 `func` 为空字符串 `""`
168
+ - [ ] 客观评测无 `judge_id` 字段
169
+ - [ ] 客观评测的 `func` 已填写具体函数名
170
+ - [ ] 所有维度的 `weight` 总和为 1.0
171
+ - [ ] 主观评测的 `prompt` 包含 `definition`、`instruct`、`step`
@@ -0,0 +1,16 @@
1
+ # 认证服务配置
2
+ auth_init_url: "https://in.iflyaicloud.com/astron/bifrost-heimdallr/api/auth/init"
3
+ token_url: "https://in.iflyaicloud.com/astron/bifrost-heimdallr/api/oauth/token"
4
+
5
+ # 客户端标识
6
+ # callback_client_id: 回调模式使用(自动接收授权码)
7
+ # oob_client_id: 手动模式使用(OOB 模式)
8
+ callback_client_id: "eval_skill_prod_callback"
9
+ oob_client_id: "eval_skill_prod"
10
+
11
+ # 回调模式配置
12
+ # 注意:使用回调模式时,redirect_uri 由脚本动态生成
13
+ # 服务端需要将 loopback 地址加入白名单,如:
14
+ # - http://127.0.0.1:51943/callback
15
+ # - http://127.0.0.1:8080/callback
16
+ callback_port: 51943
@@ -0,0 +1 @@
1
+ base_url: "https://public-in.pro-api.iflyaicloud.com/maas"
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ 客户端模块
4
+
5
+ 包含所有与外部服务交互的客户端组件:
6
+ - BaseHttpClient: HTTP 基类
7
+ - AuthClient: 认证服务客户端
8
+ - ApiClient: 评测服务 API 客户端
9
+ - TokenManager: Token 管理
10
+ - OAuthCallbackServer: OAuth 回调服务器
11
+ """
12
+
13
+ from .http_client import BaseHttpClient
14
+ from .auth_client import AuthClient
15
+ from .api_client import ApiClient
16
+ from .token_manager import TokenManager
17
+ from .oauth_callback import (
18
+ generate_pkce_pair,
19
+ generate_state_token,
20
+ OAuthCallbackServer,
21
+ run_callback_server,
22
+ )
23
+
24
+ __all__ = [
25
+ 'BaseHttpClient',
26
+ 'AuthClient',
27
+ 'ApiClient',
28
+ 'TokenManager',
29
+ 'generate_pkce_pair',
30
+ 'generate_state_token',
31
+ 'OAuthCallbackServer',
32
+ 'run_callback_server',
33
+ ]