feat(exam_pkg): 优化出题系统稳定性与推理模型适配
- core/llm_utils: MiMo模型自动注入thinking=disabled参数,全局生效 - config: 新增LLM_DISABLE_THINKING配置项(默认true) - generator: 推理模型自适应max_tokens(1.5x)、429限流重试+指数退避、v2管线补题机制 - generator: analyze_document_for_exam新增max_total参数控制AI出题上限 - generator: validate_questions_schema兼容type和question_type字段 - grader: 主观题max_tokens从1000提升至2000、fuzzy_match增加编辑距离容错 - manager: results变量初始化防NameError、透传max_total参数 - api: /exam/generate-smart支持max_total请求参数
This commit is contained in:
@@ -138,19 +138,22 @@
|
||||
|
||||
#### 4a. 去重
|
||||
|
||||
`_deduplicate_questions(questions, exclude_stems)` — 三层去重:
|
||||
`_deduplicate_questions(questions, exclude_stems)` — 四层去重:
|
||||
|
||||
1. **题干前缀去重**:题干前 80 字相同 → 去掉。
|
||||
2. **知识点+题型去重**:题干前 30 字 + 题型相同 → 去掉。
|
||||
3. **跨调用去重**:`exclude_stems` 中已有题目的题干前 80 字预填入去重集合,新生成的题目如果与之冲突也会被过滤。
|
||||
2. **跨调用排除**(`_matches_exclude`):`exclude_stems` 中已有题目的前缀(≤30 字),新题干前 30 字如果以此为前缀 → 去掉。用 `startswith()` 匹配,解决排除题干短于 30 字时的长度不匹配问题。
|
||||
3. **知识点+题型去重**:题干前 30 字 + 题型相同 → 去掉。
|
||||
4. **跨调用题干去重**:`exclude_stems` 中已有题目的题干前 80 字预填入去重集合,精确匹配过滤。
|
||||
|
||||
#### 4b. 题型平衡
|
||||
|
||||
`_balance_question_types(questions, target_types)` — 按题型分组,每种题型按目标数量截取(多了截断)。
|
||||
|
||||
#### 4c. 补题(仅 v1 结构化路径)
|
||||
#### 4c. 补题
|
||||
|
||||
v1 的 `generate_questions_structured()` 有补题机制 `_makeup_questions()`:如果某题型数量不足,用前 5 个 chunks 重新出一轮补充。v2 路径依赖分配阶段的精确控制,不额外补题。
|
||||
v1 的 `generate_questions_structured()` 有补题机制 `_makeup_questions()`:如果某题型数量不足,用前 5 个 chunks 重新出一轮补充。
|
||||
|
||||
v2 路径(`generate_questions_structured_v2`)同样支持补题:Phase 4.4 检查各题型是否达到目标数量,不足的题型调用 `_makeup_questions()` 补充,补题结果也经过去重处理。
|
||||
|
||||
---
|
||||
|
||||
@@ -272,7 +275,7 @@ v1 的 `generate_questions_structured()` 有补题机制 `_makeup_questions()`
|
||||
| `safe_parse_questions` | generator.py | JSON 安全解析 |
|
||||
| `validate_questions_schema` | generator.py | 题目 Schema 校验 |
|
||||
| `_enrich_with_source_trace` | generator.py | 补充溯源信息 |
|
||||
| `_deduplicate_questions` | generator.py | 三层去重 |
|
||||
| `_deduplicate_questions` | generator.py | 四层去重 |
|
||||
| `_balance_question_types` | generator.py | 题型数量平衡 |
|
||||
| `_generate_questions_fallback` | generator.py | 降级路径(无知识点时) |
|
||||
| `_makeup_questions` | generator.py | v1 补题机制 |
|
||||
|
||||
Reference in New Issue
Block a user