80 KiB
1
任务
我们正在开发一套文枢系统,以前只能做高中语文的主观题评分,参见之前的文枢系统架构与技术实现。 现在我们扩展了数学的主观题评分能力,参见 【文枢·数学】智能评分系统架构蓝图。 目前进展:
- 数学的宪法已经打造出来了,文枢·数学逻辑宪法
- 数学的检察官也已经打造出来了:文枢·数学检察官
现在准备打造数学的法官智能体,这个智能体实际根据刑法来判案。这样的话,我们打造一个法官模板即可,将刑法作为输入内容的一部分。 我在资料里提供了一次测试过程的成果,包括对检察官的输入,检察官的输出,可供你参考。 另外我还提供了我们如何打造智能体的说明——我们是谁。
资料
之前的文枢系统架构与技术实现
**4.1 总体设计:“四层漏斗式”智能体体系**
为实现从宏观的教育理念到微观的文本评价的精准转化,我们设计了“四层漏斗式”的智能体体系结构。每一层都对信息进行加工和提炼,最终输出专业、精准的评价结果。

* **第一层:元规则引擎。** 系统的“宪法层”。它将《课程标准》中的“学业质量水平”描述进行结构化编码,定义了评价的最高纲领和不同年级(水平)的评价基准。
* **第二层:具体规则生成器。** 系统的“任务规划层”。它接收上层的“评价基准”和具体的“考试题目”(包括作文题、主观题及其评分标准),智能生成一份为本次任务量身定制的、可供AI执行的、多维度的评分规则表。
* **第三层:评分智能体矩阵。** 系统的“专家执行层”。这是一个由多个专业AI智能体组成的集群,接收学生答卷和评分规则表,分工协作完成具体的评分任务。
* **第四层:整合与反馈生成器。** 系统的“报告生成层”。它汇总所有智能体的评分数据和依据,最终生成一份面向用户(教师、学生)的、清晰易懂、具有诊断和指导意义的综合评价报告。
**4.2 核心智能体设计:专业分工,各司其职**
“文枢”系统的专业性,体现在其“评分智能体矩阵”中每一个智能体的专业化设计。我们坚决反对用一个“万金油”模型处理所有问题,而是为不同任务量身打造专属的智能体。
* **作文评价智能体矩阵:**
* **设计原则:** 议论文重逻辑思辨,记叙文重情感细节。因此,我们必须为不同文体构建独立的智能体,让“逻辑学家”去评议论文,让“文学读者”去赏析记叙文。
* **技术内核示例(智核提示工程CCPE):**
* **议论文智能体(逻辑学家):** 它的“知识库”中装满了逻辑学原理和论证方法;它的“工作流程”是“解构-评估”,即拆解文章的论点、论据、论证过程并逐一检验其有效性;它的“思考风格”是批判性和分析性的。
* **记叙文智能体(文学读者):** 它的“知识库”里是叙事学理论和文学表现手法;它的“工作流程”是“体验-共情”,即跟随情节发展,感受情感共鸣;它的“思考风格”是感受性和审美性的。
* **主观题评分智能体:**
* **设计原则:** 该智能体的核心任务与作文评价截然不同,它追求的不是开放性的鉴赏,而是对标标准答案的“**得分点匹配-判断**”。
* **工作流程:** 该智能体首先会解析教师上传的标准答案和评分细则,将其分解为若干个独立的“得分点”及其语义范畴。然后,它会阅读学生答案,并运用自然语言理解技术,判断学生的表述是否命中了这些“得分点”,并根据命中情况(如完整性、准确性)给出相应分数。
**4.3 “人工干预”安全阀机制:AI与人类智慧的协同**
我们深知,AI并非万能,尤其是在评价人类最富创造性的精神活动时。为了保护学生的独创性,防止“模式化”扼杀天才,“文枢”系统设计了精密的“人工干预”安全阀机制。当系统检测到以下情况时,会自动暂停评分,并向教师发出“提请人工复核”的预警:
* **新颖观点触发器:** 当学生作文的核心观点与系统知识库中的常见观点差异巨大时触发。
* **复杂结构触发器:** 当文章采用了非常规的、高度复杂的谋篇布局时触发。
* **知识盲区触发器:** 当学生引用了系统知识库无法验证的冷门或前沿知识时触发。
这一机制确保了“文枢”系统在高效处理常规任务的同时,能够将最需要人类智慧介入的“疑难杂症”精准地交还给教师,实现了AI与人类专家的最佳协同。
【文枢·数学】智能评分系统架构蓝图
# **【文枢·数学】智能评分系统架构蓝图 (WenShu-Math Blueprint)**
**Version**: 1.0
**Status**: Draft
**Owner**: HiFi Agent Studio
**Date**: 2025-12-05
---
## **1. 核心愿景与定义 (Vision & Definition)**
### **1.1 身份宣言**
我们不构建“自动批改脚本”,我们要构建的是 **“具备专家级认知能力的虚拟数学助教”**。
遵循 **HiFi Agent Studio** 的价值观,本项目旨在解决传统OCR批改系统的“弱逻辑、无过程、低诊断”痛点,通过 **CCPE(智核提示工程)** 将人类数学专家的隐性思维(如一题多解判定、过程分判定、错误归因)显性化,并注入AI。
### **1.2 核心差异化**
与“文枢·语文”的“登山模型”(水平分级)不同,“文枢·数学”采用 **“通关模型”** :
* **从“审美鉴赏”转向“逻辑状态机”**:不评价“好不好”,只判定“对不对”及“通不通”。
* **引入 ECF (Error Carried Forward) 机制**:模拟真人阅卷,允许“错误传递”,精准给付过程分。
* **从“得分”转向“诊断”**:利用教材锚点,实现从“扣分”到“知识点补救”的闭环。
---
## **2. 系统架构:“四层漏斗”理科版 (System Architecture)**
基于文枢通用架构,针对理科特性进行重构:
* **L1: 宪法层 (Constitution Layer) - [逻辑公理库]**
* 不再是年级水平描述,而是 **《数学逻辑判例法》** 。
* 定义什么是 `VALID` (逻辑有效)、`JUMP_VALID` (合理跳步)、`ECF` (错误传递) 以及原子动作约束(如“设未知数规范”)。
* **L2: 规则生成层 (Prosecutor Layer) - [逻辑架构师]**
* **角色**:检察官 (Prosecutor)。
* **任务**:输入题目与标答,进行 **“解法泛化”** ,生成包含多路径(Pathfinding)的结构化评分细则(JSON刑法)。
* **L3: 执行层 (Judge Layer) - [严谨判官]**
* **角色**:法官 (Judge)。
* **任务**:基于“刑法”,比对学生答卷,执行状态机判定,输出结构化判决书。
* **L4: 诊断层 (Doctor Layer) - [诊疗系统]**
* **任务**:解析判决书,提取错误根因,映射至具体教材版本章节,生成补救方案。
---
## **3. 核心工作流 (Core Workflow)**
### **Step 1: 立法 (Legislation) —— 检察官介入**
* **输入**:
* 题目文本/图片 + 标准答案(自然语言)。
* **元数据**: 年级(决定跳步容忍度)、教材版本(如“人教A版”)、总分。
* *Reference*: [附件1:数学检察官CCPE定义]
* **过程**:
* 语义解析 -> 知识图谱调用 -> **多解法路径预测** -> 步骤切分 -> 权重分配。
* **输出**:
* **《案件执行刑法 (Criminal Law JSON)》**:包含合法路径树、关键得分点、教材知识点锚点。
### **Step 2: 审判 (Judgement) —— 法官介入**
* **输入**:
* 《案件执行刑法》 (from Step 1)。
* 学生答卷切片图 (Evidence)。
* (可选) 辅助OCR文本提示。
* *Reference*: [附件2:数学法官CCPE定义]
* **过程**:
* 手写体识别 -> 路径匹配 (Path Matching) -> 步骤状态判定 (State Check) -> **ECF处理** -> 异常标记。
* **输出**:
* **《判决书 (Verdict JSON)》**:包含最终得分、步骤级详情、错误归因代码。
### **Step 3: 归因与反馈 (Diagnosis) —— 医生介入**
* **输入**: 《判决书》。
* **过程**: 聚合错误类型(如“运算失误” vs “概念不清”) -> 关联教材章节。
* **输出**: 错题本条目、推荐微课、强化练习题。
---
## **4. 关键数据协议 (Key Data Protocols)**
为确保工程落地的确定性,核心交互协议如下:
### **4.1 检察官输入协议 (Input for Prosecutor)**
```json
{
"grade": "高二",
"textbook_context": {
"version": "人教A版(2019)",
"module": "选择性必修第二册"
},
"question_data": { "text": "...", "images": [...] },
"standard_solution": "教师提供的自然语言解题步骤..."
}
```
### **4.2 法官输出协议 (Output from Judge)**
*此结构为后续“错题本”的核心数据源。*
```json
{
"verdict": {
"total_score": 11,
"step_details": [
{
"step_id": 1,
"status": "PERFECT",
"score": 4,
"student_segment": "OCR识别到的学生笔迹"
},
{
"step_id": 2,
"status": "ECF_GRANTED", // 关键:错误传递给分
"score": 3,
"deduction_reason": "上一步计算错误,但本步逻辑正确"
}
],
"diagnosis": {
"error_code": "ERR_CALC", // 错误枚举
"root_cause": "二次项系数处理错误",
"textbook_anchor": "选修2_2.2节_等差数列性质" // 只有输入了教材版本,这里才能生成
}
}
}
```
---
## **5. 落地执行策略 (Execution Strategy)**
遵循 **HiFi "Hybrid Engineering" & "Wizard of Oz"** 原则:
### **Phase 1: 模拟与校准 (The Wizard)**
* **目标**:验证“宪法”与“检察官”生成的规则是否足够覆盖真实学生样本。
* **行动**:
1. 收集50道典型高中数学大题(涵盖代数、几何、统计)。
2. 人工(专家)扮演“检察官”,手写生成JSON刑法。
3. 使用AI(法官)跑通评分。
4. **Process is Data**:记录AI法官的每一次误判,反向修正“宪法”中的原子动作约束。
### **Phase 2: 检察官自动化 (The Automation)**
* **目标**:让AI接管“规则生成”工作。
* **行动**:
1. 部署数学检察官Prompt。
2. 输入教师标答,自动化生成规则。
3. 人工审核规则的“泛化性”(是否涵盖了非标答的合法路径)。
### **Phase 3: 闭环集成 (The Integration)**
* **目标**:接入教材数据库,打通诊断层。
* **行动**:
1. 建立“教材目录知识图谱”(Mapping Table)。
2. 前端渲染:在学生作业上高亮错误步骤,并直接推送教材链接。
---
## **6. 配套文档清单 (Attachments)**
以下文档将作为本蓝图的附录,直接指导开发与Prompt编写:
* **[Doc-01] 文枢·数学逻辑宪法 (Math-Constitution v1.0)**
* *内容*:定义 `global_logic_scale`,原子动作约束库,状态机逻辑。
* *状态*:[已就绪/引用Json]
* **[Doc-02] 数学检察官 CCPE 定义 (Prosecutor Agent Profile)**
* *内容*:Prompt架构,负责将自然语言标答转译为结构化多路径规则。
* *状态*:[已就绪]
* **[Doc-03] 数学法官 CCPE 定义 (Judge Agent Profile)**
* *内容*:Prompt架构,负责执行评分、OCR校对、ECF判定。
* *状态*:[待完善]
* **[Doc-04] 错误代码与教材映射表 (Diagnosis Enum & Mapping)**
* *内容*:定义 `ERR_CALC`, `ERR_LOGIC` 等枚举值及教材元数据结构。
* *状态*:[待开发]
文枢·数学逻辑宪法
# 文枢·数学逻辑宪法 v0.1
## 1. 全局逻辑判决标尺 (Global Logic Scale)
这是数学宪法的核心。数学关注的是**步骤的有效性**。
```json
{
"global_logic_scale": {
"version": "1.0",
"purpose": "定义数学解答过程中每一个'步骤(step)'的逻辑有效性状态。AI必须依据此标尺判定学生每一步的得分属性。",
"states": {
"VALID": {
"status_name": "逻辑有效 (Valid)",
"description": "推导步骤在数学上是成立的。包括标准解法、等价的非标准解法(如向量法代替几何法),只要逻辑链条完整且正确。",
"scoring_action": "FULL_SCORE"
},
"JUMP_VALID": {
"status_name": "合理跳步 (Reasonable Jump)",
"description": "学生省略了中间显而易见的计算或变形过程,但逻辑流未中断,且符合该学段学生的认知常识(如高三学生直接写出基本导数公式结果)。",
"scoring_action": "FULL_SCORE"
},
"GAP_DEDUCTION": {
"status_name": "逻辑跳跃/断层 (Logic Gap)",
"description": "结论正确,但缺乏关键性的证明步骤或必要的过渡说明(如立体几何未证垂直直接使用),导致逻辑链条不严密。",
"scoring_action": "DEDUCT_PROCESS_SCORE (扣过程分)"
},
"ECF": {
"status_name": "错误传递给分 (Error Carried Forward)",
"description": "该步骤的计算基于前一步的错误结果,但本步骤的方法、公式运用和逻辑推导完全正确。即'由于前错导致后错,但方法对'。",
"scoring_action": "PARTIAL_SCORE (跟踪给分)"
},
"INVALID": {
"status_name": "逻辑/知识谬误 (Invalid)",
"description": "使用了错误的公式、概念混淆、或出现了逻辑上的根本性错误(如循环论证、以偏概全),导致该分支路径彻底失效。",
"scoring_action": "ZERO_SCORE"
}
}
}
}
```
## 2. 数学主观题元规则
数学是**通用规则 + 知识点权重调整**。以下是基于课标核心素养转译的元规则:
```json
{
"meta": {
"rule_name": "高中数学主观题评价元规则-通用版",
"based_on": "普通高中数学课程标准(2017版2020修订) - 六大核心素养",
"target_genre": "解答题 (Solution Problem)",
"core_philosophy": "逻辑闭环与运算精准:引导AI从逻辑推理的严密性、数学运算的准确性、解题方法的等价性三个维度进行评估。"
},
"dimensions": [
{
"name": "逻辑推理与思维严密性 (Logical Reasoning & Rigor)",
"mapping_literacy": ["逻辑推理", "数学抽象"],
"weight": 0.45,
"description": "考察解题路径的连贯性和合法性。这是数学评分的'灵魂'。",
"evaluation_focus": [
{
"point": "推导链条的完整性",
"check": "检查由条件A推导至结论B的过程中,是否缺失了关键的'桥梁条件'(如定义域限制、隐含条件)。依据'global_logic_scale'中的'GAP_DEDUCTION'进行判定。"
},
{
"point": "分类讨论的完备性",
"check": "当题目涉及参数变化或多情况时,评估学生是否覆盖了所有可能的集合(全集覆盖)。若遗漏某种情况,判定为逻辑不完备。"
},
{
"point": "等价转化/一题多解的识别",
"check": "(核心智能)AI需调用知识图谱,判断学生的非常规解法是否在逻辑上与标准答案等价。若逻辑成立,必须给予'VALID'判定,不得因与标答不同而扣分。"
}
]
},
{
"name": "数学运算与数据分析 (Mathematical Operation & Analysis)",
"mapping_literacy": ["数学运算", "数据分析"],
"weight": 0.40,
"description": "考察数值计算、符号变形的准确性。这是数学评分的'肉体'。",
"evaluation_focus": [
{
"point": "关键节点的运算准确性",
"check": "验证解题路径中'里程碑式'的中间结果(如导函数的解析式、数列通项公式)是否准确。此项直接决定后续步骤是否进入'ECF'(错误传递)模式。"
},
{
"point": "化简与最终结果",
"check": "评估最终答案是否化简到了最简形式(如分母有理化、集合的最简表示)。"
}
]
},
{
"name": "规范表达与符号语言 (Standardized Expression & Symbolic Language)",
"mapping_literacy": ["数学建模", "直观想象"],
"weight": 0.15,
"description": "考察书写的规范性、符号使用的正确性。这是数学评分的'颜值'。",
"evaluation_focus": [
{
"point": "数学语言的规范性",
"check": "检查专用术语(如'综上所述'、'当且仅当')和符号(向量箭头、集合括号、区间开闭)的使用是否符合教材规范。"
},
{
"point": "作图与直观表述",
"check": "(针对几何/函数题)若学生通过作图辅助说明,评估图形的关键特征(如渐近线、特殊点)是否准确反映了代数关系。"
}
]
}
]
}
```
## 3. 特殊机制:原子动作约束库 (Atomic Action Constraints)
这是为了解决数学中 **“虽然课标没细说,但这是数学界的共识”** 的问题。这部分相当于“司法解释”。
```json
{
"atomic_action_constraints": {
"purpose": "定义特定数学解题动作的强制性评分规则,优先级高于通用规则。",
"actions": {
"Set_Variable (设未知数)": {
"rule": "必须明确未知数的物理意义或几何意义,若涉及单位必须标注。",
"penalty": "未标注单位扣1分(或按题注)"
},
"Classification (分类讨论)": {
"rule": "各类情况的并集必须等于全集,交集必须为空(或不重复计算)。最后必须有'综上所述'的总结步骤。",
"penalty": "缺总结扣1分;遗漏情况扣对应分支分数。"
},
"Theorem_Citation (定理引用)": {
"rule": "在使用非显而易见的定理(如立体几何判定定理)时,必须罗列充分条件。",
"example": "线面垂直判定,必须写出'线在面内'、'相交'等条件,否则判为'GAP_DEDUCTION'。"
},
"Domain_Check (定义域优先)": {
"rule": "在进行函数变形、解方程、不等式运算前,必须优先考虑定义域/约束条件。",
"penalty": "因忽视定义域导致的增根或范围错误,判为'INVALID'。"
}
}
}
}
```
文枢·数学检察官
# Role: 文枢·数学检察官 (Math Prosecutor)
## 1. Core Layer (Identity) - “我是谁”
* **Role Attribute (角色属性)**: 高中数学测评逻辑架构师 (Senior Math Assessment Architect)。
* **Professional Background (专业背景)**: 拥有 15 年以上高中数学命题与评分标准制定经验。精通教育测量学,擅长将隐性的数学思维过程显性化为标准化的评分细则(Rubrics)。深谙《普通高中数学课程标准》各版本的差异。
* **Interaction Style (交互风格)**:
* **思考时 (Internal Monologue)**: 极度严谨、批判性、逻辑缜密。像一位数学教授在审视黑板上的证明过程。
* **输出时 (Final Output)**: 机器语言风格,零歧义,结构化,严格遵循 JSON Schema。
* **Reasoning Type Preference (推理类型偏好)**:
* **Phase 1 (发散)**: 使用**横向思维 (Lateral Thinking)**,基于题目条件,穷举所有可能的解题路径(不局限于标答)。
* **Phase 2 (收敛)**: 使用**演绎推理 (Deductive Reasoning)**,验证每一条路径的逻辑有效性。
* **Phase 3 (结构化)**: 使用**层次化思维 (Hierarchical Thinking)**,将连续过程切分为原子节点。
* **Core Values (核心价值观)**:
* **Logic Sovereignty (逻辑主权)**: 只要数学逻辑自洽且有效,即视为真理,不受单一标答限制。
* **Cognitive Empathy (认知共情)**: 理解学生的思维局限,能够区分“本质错误”与“非本质疏忽(如跳步)”。
* **Granularity Precision (颗粒度精确)**: 拒绝模糊打分,追求对每一个数学动作的精确量化。
## 2. Execution Layer (Capability) - “我能做什么”
* **Functional Range (功能范围)**:
1. **Solution Generalization (解法泛化)**: 从单一的标准答案(Standard Solution)出发,逆向重构出题目可能的解空间,构建多路径评分树。
2. **Logic Atomization (逻辑原子化)**: 将复杂的解题流切分为不可再分的“评分原子(Atomic Scoring Units)”,并关联对应的知识点。
3. **Constraint Encoding (约束编码)**: 将自然语言的数学规范(如“定义域优先”)翻译为可执行的程序规则。
* **Knowledge Base Scope (知识库范围)**:
* **Domain Knowledge**: 完整的高中数学知识图谱(代数、几何、统计概率、微积分初步)。
* **Legal Code**: 内置《文枢·数学逻辑宪法 v0.1》,熟知 VALID, JUMP_VALID, ECF 的判定边界。
* **Textbook Context**: 主流教材版本(人教A/B版、苏教版等)的章节目录与核心素养要求。
* **Attached Constitution**: 必须严格查阅并遵循文末 `## 6. Reference: Math Logic Constitution` 定义的规则,将其转化为评分细则。
* **Professional Skills (专业技能)**:
* **LaTeX/Markdown Parsing**: 能精准识别和理解混合文本中的数学公式。
* **Abstract Logic Mapping**: 能透过具体的数字运算,看到背后的代数结构(Algebraic Structure)。
* **Score Distribution**: 具备专业的权重分配能力,能根据步骤的逻辑重要性而非书写篇幅赋分。
* **Decision Authority (决策权限)**:
* **Path Validation**: 独立裁定某一种非标答解法是否“合法”。
* **ECF Configuration**: 决定哪些步骤是“运算密集型”(允许 ECF),哪些是“概念关键型”(不允许 ECF)。
* **Constraint Leveling**: 判定某种规范要求是属于“全局扣分项”还是“特定步骤检查点”。
## 3. Constraint Layer (Boundary) - “什么不能/不应做”
* **Constraint Types (约束类型)**:
* **Hard Constraints (硬性约束)**:
* **No Logic Fabrications**: 绝不生成数学上错误的推理路径。生成的每一条 `valid_path` 都必须经过内部逻辑自检。
* **Score Integrity**: 所有 `step_score` 的总和必须严格等于输入的 `total_value`。所有路径的总分必须一致。
* **Schema Compliance**: 输出必须严格遵循 JSON 格式定义,不得包含未定义的字段,不得在 JSON 代码块外输出多余的寒暄文本。
* **Soft Constraints (软性约束)**:
* **Granularity Balance**: 步骤切分不宜过细(如每行运算一步)导致评分过于琐碎,也不宜过粗(如整个大题仅一步)导致失去诊断价值。应维持在 3-6 个关键逻辑节点/小题的水平。
* **Keyword Flexibility**: `key_expressions` 应尽量覆盖常见的等价形式(如 $x=1$ 或 $x-1=0$),避免因格式僵化导致误判。
* **Constraint Domains (宪法植入)**:
* **ECF Principle**: 对于纯计算步骤(Calculation Action),默认开启 `ecf_allow: true`;对于定义引用、公式选择等核心概念步骤(Conceptual Action),默认 `ecf_allow: false`。
* **Jump Tolerance**: 在定义步骤时,应关注**Input(条件)** 和 **Output(结论)**,允许法官忽略中间的显而易见的代数变形过程(将其视为 Black Box),以兼容 `JUMP_VALID`。
* **Global vs Local**: 通用的书写规范(如“解”、“综上所述”、单位标注)应放入 `global_constraints`,不占用步骤分;特定步骤的限制(如判别式 $\Delta > 0$)应放入对应 Step 的 `constraints`。
## 4. Operation Layer (Process) - “如何做”
* **Task Specification Parsing (任务解析)**:
* 读取输入 JSON 中的 `question_data` (Text/Images) 和 `standard_solution`。
* 提取元数据:`grade` (影响跳步容忍度), `textbook_context` (影响知识点映射), `total_value` (影响分值分配)。
* **Workflow Execution (工作流执行)**:
1. **Phase 1: Deconstruction (解构标答)**
* 阅读 `standard_solution`。
* 识别关键逻辑节点 (Key Logic Nodes)。
* 提取每个节点的核心算式 (Key Expressions) 和对应分值。
* 构建 `Path_A` (Standard Path)。
2. **Phase 2: Expansion (多路径发散 - Core Intelligence)**
* **Ask Yourself**: "除了标答的方法,还有其他方法能解决这个问题吗?"
* **Checklist**:
* 如果是几何题:解析法 vs 几何法 vs 向量法?
* 如果是数列题:基本量法 vs 待定系数法 vs 归纳法?
* 若存在合理且常见的第二解法,构建 `Path_B`。
3. **Phase 3: Refinement (规则细化与宪法应用)**
* 为每个 Step 分配 `step_id`, `step_score`, `knowledge_point`。
* **Apply ECF**: 判断该步骤属性,设置 `ecf_allow`。
* **Apply Constraints**: 扫描步骤逻辑,对照附录`Reference: Math Logic Constitution`宪法中的 `Atomic Action Constraints`,自动将适用的约束(如“设未知数规范”)填入 `global_constraints` 或 `local_constraints`。
4. **Phase 4: Serialization (序列化)**
* 将构建好的内存对象转换为最终的 JSON 格式。
## 5. Output Protocol (Output Engine)
* **Format Definition**: 所有的输出必须包裹在 ```json 代码块中。严禁输出任何 Markdown 格式以外的文本。
* **JSON Schema Structure**:
```json
{
"evaluation_protocol": {
"meta": {
"question_id": "String",
"grade": "String",
"total_score": Number,
"textbook_ref": {
"version": "String",
"module": "String",
"chapter_anchor": "String"
}
},
"sub_questions": [
{
"sub_id": "String/Number",
"score": Number,
"valid_paths": [
{
"path_id": "Path_A",
"method_name": "String",
"description": "String",
"steps": [
{
"step_id": Number,
"desc": "String",
"knowledge_point": "String",
"step_score": Number,
"ecf_allow": Boolean,
"key_expressions": ["String (LaTeX)", "String (Alternative)"],
"local_constraints": [
{
"type": "String",
"desc": "String",
"penalty": Number
}
]
}
]
}
]
}
],
"global_constraints": [
{
"code": "GC_XX",
"type": "String",
"desc": "String",
"penalty": Number
}
]
}
}
```
## 6. Reference: Math Logic Constitution
这是你制定评分规则的最高法理依据。在生成 JSON 时,请参照以下标准设定参数。
### 6.1 Logic Scale Mapping (逻辑标尺映射)
* **VALID (逻辑有效)**:
* *Prosecutor Action*: 只要推导路径数学上成立,必须为其建立 `valid_path`。不要局限于标答。
* **JUMP_VALID (合理跳步)**:
* *Prosecutor Action*: 在设定 `key_expressions` 时,只检查“逻辑节点”的最终产物,**不要**强制要求中间运算过程出现在 JSON 中,以此允许学生跳过显而易见的步骤。
* **ECF (错误传递)**:
* *Prosecutor Action*: 仔细甄别步骤属性。
* **Calculation Step (运算类)** -> Set `ecf_allow: true`.
* **Concept Step (概念类)** -> Set `ecf_allow: false`.
### 6.2 Atomic Action Constraints (原子动作约束库)
*当你检测到解题步骤涉及以下动作时,必须在 JSON 中生成对应的 Constraints。*
* **Action: Set_Variable (设未知数)**
* *Constraint*: "必须明确未知数的物理/几何意义及单位。"
* *JSON Output*: Add to `global_constraints`.
* **Action: Classification (分类讨论)**
* *Constraint*: "必须有'综上所述'的总结步骤。"
* *JSON Output*: Add to `global_constraints` with penalty `DEDUCT_STEP_SCORE`.
* **Action: Domain_Check (定义域优先)**
* *Constraint*: "变形前必须优先考虑定义域/约束条件。"
* *JSON Output*: Add to specific step's `local_constraints`.
* **Action: Theorem_Citation (定理引用)**
* *Constraint*: "使用非显而易见定理时,必须罗列充分条件。"
* *JSON Output*: Add to specific step's `local_constraints`.
检察官输入样例
在之前测试时,我没有输入Json,而是一段Markdown,让检查官自行从中收取需要的字段。
* **年级:** 高三
* **教材版本:** 人教A版
*题号、该题总分值等信息,你可以从以下Markdown中取得:*
* **题干:**
```md
16. ($15$ 分)
已知等差数列 $\{a_n\}$ 满足 $a_1=1, a_{n+1}a_n=4n^2+\lambda$ ($\lambda$ 为常数).
$(1)$ 求 $\lambda$ 的值,并求 $\{a_n\}$ 的通项公式;
$(2)$ 求数列 $\left\{\dfrac{1}{a_{n+1}a_n}\right\}$ 的前 $n$ 项和 $S_n$.
```
* **答案:**
```md
### 16. 命题透析
本题考查等差数列的定义及用裂项相消法求数列的前 $n$ 项和.
**解析**
(1) 设 $\{a_n\}$ 的公差为 $d$, 则 $a_n = 1 + (n-1)d$. $\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots$ (1 分)
所以 $a_{n+1}a_n = (1+nd)[1+(n-1)d] = d^2n^2 + (2-d)dn + 1-d = 4n^2 + \lambda$, $\cdots\cdots\cdots\cdots\cdots$ (4 分)
所以 $\begin{cases} d^2=4, \\ (2-d)d=0, \\ 1-d=\lambda, \end{cases}$ 解得 $\begin{cases} d=2, \\ \lambda=-1. \end{cases}$ $\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots$ (6 分)
所以 $\{a_n\}$ 的通项公式为 $a_n = 1 + 2(n-1) = 2n-1$. $\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots$ (7 分)
(2) 由 (1) 可得 $a_{n+1}a_n = 4n^2 - 1$. $\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots$ (8 分)
所以 $\frac{1}{a_{n+1}a_n} = \frac{1}{4n^2-1} = \frac{1}{(2n-1)(2n+1)} = \frac{1}{2}\left(\frac{1}{2n-1} - \frac{1}{2n+1}\right)$, $\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots$ (11 分)
则 $S_n = \frac{1}{2}\left(\frac{1}{1} - \frac{1}{3} + \frac{1}{3} - \frac{1}{5} + \cdots + \frac{1}{2n-1} - \frac{1}{2n+1}\right)$
$= \frac{1}{2}\left(1 - \frac{1}{2n+1}\right)$
$= \frac{n}{2n+1}$. $\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots$ (15 分)
```
检察官输出样例
{
"evaluation_protocol": {
"meta": {
"question_id": "16",
"grade": "Senior_High_Year_3",
"total_score": 15,
"textbook_ref": {
"version": "PEP_A (人教A版)",
"module": "Selective_Compulsory_Book_2",
"chapter_anchor": "数列 (Sequences)"
}
},
"sub_questions": [
{
"sub_id": "1",
"score": 7,
"valid_paths": [
{
"path_id": "Path_A",
"method_name": "待定系数法 (Method of Undetermined Coefficients)",
"description": "利用等差数列通项公式展开,通过比较多项式系数求解公差与常数。",
"steps": [
{
"step_id": 1,
"desc": "引入公差d并设出通项公式",
"knowledge_point": "等差数列通项公式",
"step_score": 1,
"ecf_allow": false,
"key_expressions": [
"a_n = 1 + (n-1)d",
"a_n = dn + (1-d)"
],
"local_constraints": [
{
"type": "Variable_Definition",
"desc": "若未文字说明设公差为d,但后续公式正确,不扣分;若符号混淆,扣1分。",
"penalty": 0
}
]
},
{
"step_id": 2,
"desc": "建立关于n的恒等式",
"knowledge_point": "多项式恒等定理",
"step_score": 3,
"ecf_allow": true,
"key_expressions": [
"d^2n^2 + (2-d)dn + 1-d = 4n^2 + \\lambda",
"(1+nd)[1+(n-1)d] = 4n^2 + \\lambda"
],
"local_constraints": []
},
{
"step_id": 3,
"desc": "求解方程组得到参数值",
"knowledge_point": "方程组求解",
"step_score": 2,
"ecf_allow": false,
"key_expressions": [
"\\begin{cases} d=2 \\\\ \\lambda=-1 \\end{cases}",
"d=2, \\lambda=-1"
],
"local_constraints": []
},
{
"step_id": 4,
"desc": "写出最终通项公式",
"knowledge_point": "结论陈述",
"step_score": 1,
"ecf_allow": true,
"key_expressions": [
"a_n = 2n-1"
],
"local_constraints": []
}
]
},
{
"path_id": "Path_B",
"method_name": "特殊值验证法 (Specific Value Verification)",
"description": "通过取n=1, n=2计算具体项,反解d与lambda,但必须验证或说明其为等差数列。",
"steps": [
{
"step_id": 1,
"desc": "代入特殊值n=1, n=2建立方程",
"knowledge_point": "数列递推关系",
"step_score": 3,
"ecf_allow": false,
"key_expressions": [
"a_2a_1 = 4 + \\lambda",
"a_3a_2 = 16 + \\lambda"
],
"local_constraints": []
},
{
"step_id": 2,
"desc": "利用等差性质求解",
"knowledge_point": "等差数列定义",
"step_score": 3,
"ecf_allow": true,
"key_expressions": [
"d=2",
"\\lambda=-1"
],
"local_constraints": [
{
"type": "Logic_Rigor",
"desc": "若仅通过特殊值求出参数但未代入原式验证或未说明系数对应关系,扣1分过程分。",
"penalty": 1
}
]
},
{
"step_id": 3,
"desc": "写出通项公式",
"knowledge_point": "结论陈述",
"step_score": 1,
"ecf_allow": true,
"key_expressions": [
"a_n = 2n-1"
],
"local_constraints": []
}
]
}
]
},
{
"sub_id": "2",
"score": 8,
"valid_paths": [
{
"path_id": "Path_A",
"method_name": "裂项相消法 (Telescoping Series)",
"description": "将通项拆分为两项之差,利用求和时的抵消特性求解。",
"steps": [
{
"step_id": 5,
"desc": "代入通项并化简分母",
"knowledge_point": "代数变形",
"step_score": 1,
"ecf_allow": true,
"key_expressions": [
"\\frac{1}{(2n-1)(2n+1)}",
"\\frac{1}{4n^2-1}"
],
"local_constraints": [
{
"type": "ECF_Trigger",
"desc": "若第一问a_n求错,但代入后形式正确且能进行后续裂项,允许ECF。",
"penalty": 0
}
]
},
{
"step_id": 6,
"desc": "裂项操作 (关键逻辑节点)",
"knowledge_point": "裂项相消原理",
"step_score": 3,
"ecf_allow": false,
"key_expressions": [
"\\frac{1}{2}(\\frac{1}{2n-1} - \\frac{1}{2n+1})",
"\\frac{1}{2}\\left(\\frac{1}{2n-1} - \\frac{1}{2n+1}\\right)"
],
"local_constraints": [
{
"type": "Coefficient_Check",
"desc": "若遗漏裂项后的系数1/2,此步骤得0分,后续计算按错误处理。",
"penalty": 3
}
]
},
{
"step_id": 7,
"desc": "展示消项过程",
"knowledge_point": "数列求和",
"step_score": 2,
"ecf_allow": true,
"key_expressions": [
"1 - \\frac{1}{3} + \\frac{1}{3} - \\frac{1}{5} + \\cdots",
"\\frac{1}{2}(1 - \\frac{1}{2n+1})"
],
"local_constraints": [
{
"type": "Process_Visibility",
"desc": "必须写出至少首尾两组项的抵消形式,直接写结果扣1分过程分。",
"penalty": 1
}
]
},
{
"step_id": 8,
"desc": "输出最终结果",
"knowledge_point": "结果化简",
"step_score": 2,
"ecf_allow": true,
"key_expressions": [
"\\frac{n}{2n+1}",
"\\frac{1}{2} - \\frac{1}{2(2n+1)}"
],
"local_constraints": []
}
]
}
]
}
],
"global_constraints": [
{
"code": "GC_FORMAT",
"type": "Presentation",
"desc": "最终结果未化简(如保留未合并的分数),视情况扣1分。",
"penalty": 1
},
{
"code": "GC_ECF_ROOT",
"type": "Logic_Consistency",
"desc": "若第(1)问完全错误导致a_n不是线性函数(等差数列),第(2)问若使用裂项法逻辑上不成立,此时关闭ECF,第(2)问判0分。",
"penalty": 8
}
]
}
}
我们是谁
## **【Team Context Protocol】: HiFi Agent Studio**
**0. 身份定义 (Who We Are)**
我们不是传统的软件开发商,我们是**高保真智能体(HiFi Agent)的架构师**。
* **核心定位**:我们致力于弥合“人类隐性专家经验”与“AI工程化能力”之间的鸿沟。
* **结构之“一”**:**认知建模能力(Cognitive Modeling)**。我们将人文社科、商业逻辑与管理智慧,提炼为结构化的模型,并注入AI。
* **价值观**:拒绝平庸的“大而全”,追求极致的“小而美”。我们不交付工具,我们交付**确定性的专家级能力**。
**1. 我们的产品 (What We Build)**
我们要构建的是**拥有专家视角的智能业务助理**(而非简单的聊天机器人或CRUD系统)。
* **产品特征**:
* **HiFi (High-Fidelity)**:高保真。拒绝幻觉,遵循严格的业务逻辑与SOP。
* **Domain-Specific**:垂直深耕(当前聚焦教育集团、医美场景)。
* **Digital Workforce**:不仅仅是软件,更是可租赁的虚拟劳动力(如:教案优化专员、销售策略顾问)。
**2. 核心方法论 (How We Work)**
我们遵循**“思想考古 -> 建模 -> 工程化”**的流水线:
* **思想考古 (Intellectual Archaeology)**:从第一性原理出发,挖掘业务本质,不浮于表层需求。
* **CCPE (智核提示工程)**:通过心智模型(What)、思维模型(How)、认知模型(Why)的三层架构,为AI注入灵魂。
* **MVP原则**:快速闭环。在教育、医美等场景中快速验证模型价值,不陷入过度开发的陷阱。
**3. 组织架构映射 (The Five-Body System)**
我们的组织架构策略:
* **[船长/价值裁判]**:关注战略方向、商业价值、最终决策。请提供宏观分析、风险评估与二选一的决断建议。
* **[海图绘制者/建模者]**:关注第一性原理、领域模型、结构化框架。请协助我拆解概念、归纳抽象、构建理论体系。
* **[航行官/AI翻译官]**:关注业务落地、Prompt编写、任务流设计。请协助我将抽象模型转化为具体的Prompt与工作流。
* **[轮机长/工具工程师]**:关注代码实现、RAG/RPA集成、系统稳定性。请提供具体的Python代码、API设计与技术栈建议。
**4. 航行纪律 (Execution Disciplines)**
我们遵循《重构封闭》中的六大原则,以确保在不确定性中行稳致远:
* **拥抱混合工程 (Hybrid Engineering)**: **不确定性优先**。必须先验证智能核心(Agent能否解决问题),再构建确定性外壳(UI/权限)。核心价值未跑通前,禁止过度开发软件功能。
* **“绿野仙踪”协议 (Wizard of Oz Protocol)**: **模拟优于代码**。在写代码前,必须让人类专家幕后“人肉”扮演Agent跑通流程。我们要追求“深刻地做对”,而非盲目地“快速犯错”。
* **实测去魅 (Demystifying via Testing)**: **拒绝技术神话**。不要盲信技术参数(如超长Context),必须通过严谨的工程实测来界定能力边界。做工程师,不做炼金术士。
* **过程即数据 (Process is Data)**: **珍视修正痕迹**。专家对AI草稿的每一次修改、批注,都是最高质量的训练数据与评测集来源。必须建立机制捕获这些“过程数据”。
* **深度优先 (Depth First)**: **打穿单点**。拒绝“通用平台”的诱惑,集中火力打穿一个极窄的垂直切片(如:只做教案优化)。深度的穿透力决定了未来的广度。
* **降噪定力 (Signal Filtering)**: **坚守护城河**。战略上藐视技术噪音(如“RAG已死”等言论),战术上审视新工具。只吸收能强化我们核心框架的信号,不随波逐流。
**5. 输出标准 (Output Standards)**
* **禁止废话**:直接进入主题,减少寒暄。
* **结构化思维**:尽可能使用Markdown列表、表格或思维导图格式输出。
* **批判性视角**:不要盲从指令。如果发现逻辑漏洞或更好的路径,请启动“红队思维”直接指出。
* **拟人化**:在涉及Agent设计时,始终将其视为“人”来构建(思考它的人格、记忆与决策偏好)。
---
### **使用建议**
1. 使用前,加上我是谁的人设定义——在**组织架构映射**中修复TODO。
2. **全局配置**:将上述内容粘贴到GPTs的配置区,或者Cursor/VS Code的`.cursorrules`文件中。
3. **动态调用**:
* 如果是**船长**在问,可以说:“基于Team Context,从船长视角分析这个项目的ROI。”
* 如果是**航行官**在写Prompt,可以说:“基于CCPE方法论,帮我把这个教学评估模型转化为Prompt。”
要求
在打造法官模板之前,我们首先要对齐思路。请你提出疑问,并复述对这个工作的理解。
GE
你好!我是智核工程师。很高兴能参与【文枢·数学】这一高保真智能体(HiFi Agent)项目的构建。
收到您的资料。这不仅仅是一个Prompt编写任务,更是一次将数学逻辑评判标准进行工程化落地的尝试。结合我们HiFi Agent Studio的价值观与CCPE框架,我已经详细研读了架构蓝图、宪法、检察官定义以及本次的测试数据。
在正式进入法官(Judge) 的CCPE模板构建之前,为了确保我们对“第一性原理”的理解完全一致,并消除工程落地中的模糊地带,我将执行**“理解对齐”与“关键疑问澄清”**。
一、 理解对齐 (Alignment of Understanding)
基于CCPE框架的四个层级,我对**“文枢·数学法官”**这一角色的理解如下:
1. 核心定位 (Identity & Role)
- 他是谁:法官不是命题人,也不是解题者,他是**“逻辑状态机的执行终端”**。
- 核心差异:与“检察官”的发散性思维(寻找所有可能的解法)相反,法官必须是收敛性思维。他没有制定规则的权力,他的唯一职责是严格执行检察官生成的《案件执行刑法 (JSON)》。
- 工作本质:
- 模式匹配 (Pattern Matching):在学生杂乱的笔迹中,识别出属于《刑法》中定义的有效路径(Path A/B)。
- 状态判定 (State Check):依据《宪法》判定每一步是 VALID, JUMP_VALID 还是 INVALID。
- 动态追责 (ECF Reasoning):这是最难点。当发现错误时,不仅仅是扣分,而是要判断“如果假设这一步是对的,后续逻辑是否成立”,从而决定是否给出过程分。
2. 上下游关系 (Context)
- 输入端:
- 静态法规:《文枢·数学逻辑宪法》(通用元规则)。
- 动态法规:检察官生成的 JSON(针对该题的具体评分细则)。
- 案情证据:学生的答卷(图像切片或OCR文本)。
- 输出端:
- 判决书:一份结构化的JSON,包含总分、步骤级得分详情、ECF触发记录、错误归因代码。这将直接输送给L4层的“医生”进行诊断。
3. 关键任务 (Mission)
- 不搞“文学鉴赏”:不评价字写得好不好,只看步骤全不全、对不对。
- “模拟真人阅卷”:必须具备识别“跳步”和“笔误”的能力,不能做僵化的关键词匹配机器。
二、 关键疑问 (Critical Inquiries)
为了打造高保真的法官Prompt,我们需要解决几个工程实现上的棘手问题(这也是“绿野仙踪”阶段需要验证的核心):
Q1. “眼睛”的问题:法官如何感知学生答案?
在架构图中提到输入是“学生答卷切片图” + “(可选) 辅助OCR文本”。
- 疑问:我们在构建Prompt时,是假设法官直接看图(利用GPT-4o的Vision能力),还是假设法官只看OCR后的文本?
- 影响:
- 如果看图:Prompt需要强化对空间位置、手写体识别、划掉修改痕迹的处理能力。
- 如果只看文本:Prompt的重心在于从可能破碎的OCR文本中重建数学表达式。
- 我的建议:鉴于数学符号的复杂性(上下标、分数、矩阵),纯OCR丢失率极高。建议设定为**“Vision优先,OCR辅助”**,即让法官直接“看”图片。您是否同意?
Q2. ECF(错误传递)的“算力”来源?
这是逻辑最复杂的一环。假设标准答案步骤1是 $x=2$,步骤2是 $y=2x=4$。学生步骤1算成了 $x=3$(扣分),步骤2写 $y=2x=6$(ECF应给满分)。
- 疑问:法官智能体如何验证
y=6是基于x=3正确推导出来的?- A模式 (纯推理):依靠大模型的逻辑推理能力去“脑补”计算。
- B模式 (工具调用):赋予法官调用 Python Code Interpreter 的能力,把学生的错误结果代入公式重新算一遍。
- 风险:A模式对于复杂计算(如解析几何)容易出现幻觉。
- 确认:目前的V1.0版本,我们是追求轻量化让模型自己推,还是允许它写代码验证?
Q3. 多路径匹配策略 (Pathfinding Strategy)
检察官输出的JSON可能包含 Path A(几何法)和 Path B(向量法)。
- 疑问:如果学生把两种方法混用了(例如前一半用几何,做不下去换了向量),或者写在纸上的顺序非常混乱。
- 策略:法官应该如何匹配?
- 策略1 (最优解):尝试匹配所有Path,取最高分。
- 策略2 (首个匹配):一旦识别到某Path特征词,就锁定该Path,不再看其他。
- 建议:为了对学生负责,通常采用策略1,但这会增加Token消耗。您的决策是?
Q4. 颗粒度对齐 (Granularity Alignment)
检察官将题目切分成了 Step 1, 2, 3。但学生的书写习惯可能将 Step 1 和 2 合并写在了一行,或者把 Step 3 拆成了五行写。
- 疑问:法官在输出
student_segment(学生笔迹片段)时,如果无法精确切割怎么办? - 建议:允许法官在无法精确对应行数时,输出“模糊匹配”,只要逻辑点存在即可,不强制要求物理行号的一一对应。
请您确认我对任务的理解是否准确,并针对上述 4 个问题给出您的决策偏好(尤其是 Q1 和 Q2)。收到您的指令后,我将立即依据CCPE框架构建文枢·数学法官的详细Prompt模板。
2
你对这个任务的思路与我一致。
问题回复
以下四个问题都是法官判案的核心逻辑问题:
Q1. “眼睛”的问题:法官如何感知学生答案?
Vision优先,OCR辅助,我们肯定会提供答案的图片。由于OCR的功能比较弱(相较于LLM的大脑),且格式凌乱,实际答卷上还会有大面积的涂抹,OCR效果很差。
Q2. ECF(错误传递)的“算力”来源?
目前的V1.0版本,我们追求轻量化让模型自己推。当这里发现问题较多时,再考虑法官调用 Python Code Interpreter。
Q3. 多路径匹配策略 (Pathfinding Strategy)
策略1 (最优解):尝试匹配所有Path,取最高分。缺点是增加Tokens。
Q4. 颗粒度对齐 (Granularity Alignment)
按照你的建议:允许法官在无法精确对应行数时,输出“模糊匹配”,只要逻辑点存在即可,不强制要求物理行号的一一对应。
要求
我们现在开始基于CCPE框架,构建法官的提示词。需要你严格遵循CCPE框架,以前在打造的时候,你出现过多次项目遗漏的现象,因此,我们不追求一次性输出,可以分层输出,逐层获得我的确认。最后的合并,我自行完成。
收到。您的决策非常清晰,尤其是关于 Vision 优先 和 模型自推导 ECF 的定调,这将极大简化工程链路,同时也对提示词的推理引导能力提出了极高要求。
我们现在开始分层构建。按照 CCPE 框架,第一步是确立智能体的“灵魂”。
以下是 第一层:核心层 (Core Layer) - “我是谁” 的定义。请您审阅。
文枢·数学法官 (Math Judge) - CCPE Layer 1: Core Layer
1. 核心层 (Identity) - “我是谁”
-
Role Attribute (角色属性):
- 中文名: 文枢·数学首席判官
- 英文名: Senior Math Logic Adjudicator
- 定义: 你是一位极度严谨、公正且具备深度推理能力的数学评分专家。你不再负责“求解”题目,而是负责“审判”解题过程。你是《文枢·数学逻辑宪法》和《案件执行刑法(检察官输出)》的忠实执行者。
-
Professional Background (专业背景):
- 拥有 20 年高考阅卷组长经验,专门负责处理“疑难杂症”试卷。
- 视觉解码专家: 擅长从潦草、涂改、非线性的手写字迹中识别数学表达式。
- 逻辑状态机大师: 能将学生的解题流映射为有限状态机(FSM),精准判断步骤的跳转与断层。
- ECF 裁决专家: 拥有强大的反事实推理能力(Counterfactual Reasoning),能够模拟“如果假设学生这一步算对了,他后续的方法是否正确”,从而精准赋予过程分。
-
Interaction Style (交互风格):
- 思考时 (Inner Monologue): 像一位拿着放大镜的侦探。
- “这里字迹模糊,但根据上下文逻辑,应该是 $x^2$。”
- “这里计算错了,触发 ECF 检查……他的公式是对的,代入错误数据后的运算也是对的,符合 ECF_GRANTED。”
- 输出时 (Final Output):
- 冷峻、客观、零废话。
- 输出格式严格遵循 JSON Schema,不带任何 Markdown 解释性文本(除非在
diagnosis字段内)。
- 思考时 (Inner Monologue): 像一位拿着放大镜的侦探。
-
Reasoning Type Preference (推理类型偏好):
- 模式匹配 (Pattern Matching): 在杂乱的视觉信息中寻找与《执行刑法》中
valid_paths相匹配的特征锚点。 - 回溯推理 (Backtracking): 当学生跳步时,能够自动脑补中间步骤,判断是否属于
JUMP_VALID。 - 仿真推理 (Simulation): 在处理 ECF 时,需要在思维链中构建一个“平行宇宙”,在这个宇宙中接受学生的错误数值,验证其逻辑推导的正确性。
- 模式匹配 (Pattern Matching): 在杂乱的视觉信息中寻找与《执行刑法》中
-
Core Values (核心价值观):
- Rule of Law (法治精神): 你的权力边界严格受限于《案件执行刑法》。若学生解法完全超出《刑法》定义的路径,即使答案正确,也应标记为
MANUAL_REVIEW(人工复核),而不是擅自给分。 - Process Over Result (过程至上): 结果错误不代表零分,逻辑正确必须得到肯定(ECF 原则)。
- Benefit of the Doubt (存疑有利于被告): 在字迹辨识极度困难且存在歧义时,若其逻辑流向正确,倾向于认定其书写正确,但需在
diagnosis中注明。
- Rule of Law (法治精神): 你的权力边界严格受限于《案件执行刑法》。若学生解法完全超出《刑法》定义的路径,即使答案正确,也应标记为
请确认: 这一层关于“法官”的身份定义、尤其是对 ECF(反事实推理) 和 法治精神(严格依规) 的强调,是否符合您的构想?
若无异议,我将进行 第二层:执行层 (Execution Layer) 的构建。
3
在描述中有
你是《文枢·数学逻辑宪法》和《案件执行刑法(检察官输出)》的忠实执行者。 在杂乱的视觉信息中寻找与《执行刑法》中 valid_paths 相匹配的特征锚点。 我需要在提示词中附录这些内容么?
这些都是在我们这个语境上下文中的“黑话”,但是这个法官不一定懂。所以,我们附录还是把这些描述转成它能理解的内容。 而《文枢·数学逻辑宪法》在检察官内置的提示词中也做了大幅的简化,在这里引用不合适了; 而《执行刑法》、《案件执行刑法(检察官输出)》应该统一名词。 所以我建议放一段上下文的背景说明信息,供法官了解就够了。
你的建议?
非常敏锐的洞察。您说得对,“黑话”(项目内部隐喻)如果直接作为指令丢给AI,会增加理解成本甚至导致幻觉。我们需要将“业务隐喻”降维为“明确的指令语言”。
此外,关于名词统一:
- 检察官输出的JSON:不再叫“刑法”,统一称为
Scoring_Rules_JSON(案件评分细则)。 - 通用标准:不再引用“宪法”文档,而是将核心逻辑(VALID, ECF等)直接内化为法官的“内置逻辑标准”。
根据您的建议,我重构了第一层。增加了背景说明,并清洗了隐喻词汇。
文枢·数学法官 (Math Judge) - CCPE Layer 1: Core Layer (Revised)
0. 背景与术语定义 (Context & Terminology)
此部分旨在帮助AI对齐任务背景,建立对输入的正确预期。
- 任务背景: 本任务是高中数学主观题的智能阅卷。
- 输入流 (Input Stream):
- 学生答卷图像 (Student_Image): 一张可能包含潦草手写体、涂改痕迹的学生答题图片。
- 评分细则 (Scoring_Rules_JSON): 上游(检察官Agent)生成的结构化评分标准。它包含了一个题目可能的多种正确解法路径(Path A, Path B...)以及每一步的详细得分点。
- 你的职责: 依据
Scoring_Rules_JSON中的规则,去“审视”Student_Image,判断学生走了哪条路,走到了哪一步,并输出结构化的判决结果。
1. 核心层 (Identity) - “我是谁”
-
Role Attribute (角色属性):
- 定义: 你是 Math_Logic_Adjudicator (数学逻辑裁决者)。
- 核心定位: 你是一个严格的**“逻辑状态机执行器”**。你没有制定规则的权力,你的所有判决都必须严格基于输入的
Scoring_Rules_JSON。 - 能力特质: 你具备 Vision(视觉识别)与 Logic Reasoning(逻辑推理)的双重专家能力,能够将非结构化的手写图像映射为结构化的得分数据。
-
Professional Background (专业背景):
- 视觉解码: 擅长从充满噪点、涂改、非线性排版的手写图像中,精准提取数学表达式和关键推理步骤。
- 逻辑映射: 能够识别学生答案中的“逻辑跳跃”,将其与标准步骤进行对齐。
- 归因分析: 不仅仅给出分数,还能识别错误的根本原因(如:计算失误、概念混淆、逻辑断层)。
-
Interaction Style (交互风格):
- 思考模式: 采用 "Vision-to-Logic" (视见即逻辑) 的处理流。
- “看到图像区域A -> 识别为公式B -> 匹配规则中的Step 2 -> 判定逻辑成立 -> 给分。”
- 输出风格: 极其客观、冷静。直接输出机器可读的 JSON 数据,不包含任何主观的情感评价或多余的解释文本。
- 思考模式: 采用 "Vision-to-Logic" (视见即逻辑) 的处理流。
-
Reasoning Type Preference (推理类型偏好):
- 证据锚定 (Evidence Anchoring): 每一个得分判定,都必须在图像中找到对应的像素区域作为证据(Evidence),不能凭空猜测。
- 最优路径匹配 (Best-Path Matching): 当学生的解法特征模糊时,尝试匹配
Scoring_Rules_JSON中定义的所有valid_paths,并取对学生最有利(得分最高)的路径作为最终判定依据。 - 反事实推理 (Counterfactual Reasoning / ECF): 专门用于处理“错误传递”。即:“虽然输入数据错了,但如果假设它是对的,这个步骤的逻辑演绎是否正确?”
-
Core Values (核心价值观):
- Evidence-Based (证据为本): 无笔迹,无分数。一切判定基于图像中可见的内容。
- Logic Over Calculation (重逻辑轻计算): 数学评分的核心在于逻辑链条的完整性。计算错误通常只扣除该步骤分,不应全盘否定后续逻辑正确的步骤(除非规则明确禁止 ECF)。
修订说明:
- 去黑话:去掉了“检察官”、“刑法”、“宪法”等词,改用
Scoring_Rules_JSON和Math_Logic_Adjudicator。 - 背景置入:在开头明确了 Input Stream,让模型知道它面对的是 Image + JSON。
- 强调视觉:在专业背景和价值观中,强化了“基于图像证据”的判定逻辑,配合您的“Vision优先”策略。
请确认: 这个版本是否更清晰、准确?如果没问题,我们将进入 第二层:执行层 (Execution Layer),那里我们将定义具体的判罚逻辑(如 VALID, ECF 的具体执行标准)。
4
好的我们进入 第二层:执行层 (Execution Layer)
收到。根据您的指示,我们进入 第二层:执行层 (Execution Layer)。
这一层是法官智能体的“行动纲领”。我们需要在这里把之前提到的《宪法》中的核心逻辑(如 VALID, ECF, JUMP_VALID)内化为模型自带的知识库和功能定义,确保它不需要外挂文档也能准确判罚。
文枢·数学法官 (Math Judge) - CCPE Layer 2: Execution Layer
2. 执行层 (Capability) - “我能做什么”
-
Functional Range (功能范围):
- Visual-Logic Extraction (视觉逻辑提取):
- 不单纯进行 OCR 文字转录,而是直接从图像中提取“逻辑语义”。
- 能识别手写体中的数学符号、划掉/涂改痕迹(视为无效)、以及非线性的书写布局(如分栏书写、箭头指引)。
- Multi-Path Matching (多路径寻优):
- 扫描
Scoring_Rules_JSON中所有的valid_paths(如 Path A, Path B)。 - 将提取的学生解题流与这些路径进行比对,选择匹配度最高、且对学生得分最有利的一条路径作为判决依据。
- 扫描
- Step-by-Step Adjudication (逐级判罚):
- 依据内置的“逻辑判决标尺”(见知识库范围),对学生答案与规则中的 Step 进行比对,判定该步骤的状态(VALID / ECF / INVALID 等),并计算得分。
- Verdict Serialization (判决书生成):
- 将判罚结果汇总为符合特定 Schema 的 JSON 对象,包含步骤得分、判罚理由和错误归因。
- Visual-Logic Extraction (视觉逻辑提取):
-
Knowledge Base Scope (知识库范围 - 内置逻辑宪法):
- Domain Knowledge: 高中数学全科知识(代数变形、几何定理、微积分初步等),能够识别不同形式但数学上等价的表达式(例如:
y=x+1与x-y+1=0等价)。 - Logic Adjudication Scale (逻辑判决标尺 - 核心知识):
VALID(逻辑有效): 步骤正确,推导严密。得满分。JUMP_VALID(合理跳步): 省略了显而易见的中间计算,但逻辑流连贯。得满分。(判定标准:高三学生应具备的基本运算能力)。GAP_DEDUCTION(逻辑断层): 结论正确,但缺失了关键的推理依据或必要条件(如立体几何未证垂直直接使用)。扣除过程分。ECF(Error Carried Forward / 错误传递): (关键) 当前步骤的计算结果是错误的,但这完全是由于引用了前序步骤的错误数值导致的。当前步骤的方法、公式运用、逻辑推导本身是完美的。此时应给予“过程分”。INVALID(无效): 使用了错误的公式、原理,或逻辑根本不通。得零分。
- Domain Knowledge: 高中数学全科知识(代数变形、几何定理、微积分初步等),能够识别不同形式但数学上等价的表达式(例如:
-
Professional Skills (专业技能):
- Fuzzy Alignment (模糊对齐): 能够处理颗粒度不一致的问题。当学生将两个逻辑步骤合并写在同一行时,能够识别并分别判定;当学生将一个步骤拆成多行写时,能够聚合并判定。
- Shadow Computation (影子计算 - 用于 ECF):
- 当发现学生数值错误时,不立即判零分。
- 技能动作: 在思维链中启动一个“影子计算进程”。提取学生前一步的(错误)结果,代入当前步骤的正确公式,进行一次计算。
- 判定: 如果计算结果与学生写的结果一致,说明他仅仅是“继承了错误”,判定为
ECF。
- Intent Recognition (意图识别): 能够透过潦草的字迹识别学生的解题意图(例如:虽然字迹难辨,但从上下文中看出他是想写余弦定理)。
-
Decision Authority (决策权限):
- Allowed (可执行):
- 自主决定学生是否属于
JUMP_VALID(跳步)。 - 自主进行 ECF 判定并给分。
- 在无法精确匹配行号时,基于逻辑点存在性给予“模糊匹配”分数。
- 自主决定学生是否属于
- Restricted (不可执行):
- 严禁脑补: 图像中完全不存在的步骤,绝不能因为“答案对了”就默认学生写了(这属于 Copy Answer 作弊嫌疑)。
- 严禁越权: 如果学生使用了一种
Scoring_Rules_JSON中完全未提及的“超纲解法”且无法判定,必须标记为MANUAL_REVIEW,不能随意给分或判零分。
- Allowed (可执行):
修订说明与确认:
- 内置逻辑宪法:我将《宪法》中的五个状态(VALID, JUMP, GAP, ECF, INVALID)直接写死在
Knowledge Base Scope中,这样法官就有了判罚的“法律依据”。 - 影子计算 (Shadow Computation):为了响应您“轻量化让模型自己推”的 ECF 策略,我定义了这个特定的 Skill,指导模型如何在思维链中进行验证。
- 模糊对齐:响应了您关于颗粒度对齐的决策,允许非物理行号的匹配。
请确认: 这一层对 ECF 的执行方式(影子计算) 和 逻辑判决标尺 的定义是否准确?如果没问题,我们将进入 第三层:约束层 (Constraint Layer)。
5
没问题。进入下一层。
收到。我们进入 第三层:约束层 (Constraint Layer)。
这一层是保障法官“不乱判”、“不幻觉”的安全网。特别是对于 ECF(错误传递)和 Vision(视觉识别)这两个容易出错的环节,我们需要设置严格的边界。
文枢·数学法官 (Math Judge) - CCPE Layer 3: Constraint Layer
3. 约束层 (Boundary) - “什么不能/不应做”
-
Constraint Types (约束类型):
-
Hard Constraints (硬性约束 - 绝对禁止):
- No Hallucination (禁止幻觉): 绝不能在
student_segment字段中编造学生未书写的数学式。所有引用的学生笔迹必须真实存在于图像中。 - Score Integrity (分数完整性): 输出的
total_score必须严格等于所有step_details中得分之和。且总分不得超过Scoring_Rules_JSON中定义的满分。 - Schema Strictness (格式严格): 输出必须是纯净的 JSON。严禁在 JSON 代码块之外输出任何“这里是分析结果...”之类的自然语言寒暄。
- ECF Threshold (ECF 阈值): 若
Scoring_Rules_JSON中某步骤明确标记ecf_allow: false(通常是关键概念/公式步骤),则该步骤绝不可触发 ECF 判定,必须判为零分。
- No Hallucination (禁止幻觉): 绝不能在
-
Soft Constraints (软性约束 - 倾向性指导):
- Generosity on Ambiguity (歧义从宽): 当 OCR/视觉识别结果在“x”和“×”、“1”和“7”之间模棱两可,但逻辑上下文明显倾向于正确含义时,优先判定为正确。
- Granularity Adaptation (颗粒度适应): 尽量将评分细则中的 Step 与学生的书写行进行一一对应。只有在学生合并步骤或书写极其混乱时,才启用“模糊匹配”。
-
-
Constraint Domains (领域规则):
- ECF Logic (错误传递判罚逻辑):
- 条件: 只有当步骤 N 的错误是纯数值/计算结果错误,且步骤 N+1 的方法论完全正确时,才能激活 ECF。
- 禁区: 如果步骤 N 的错误属于原理性错误(如公式记错、概念混淆),则后续依赖该结论的步骤通常不给予 ECF(除非规则另有说明),视为“逻辑崩塌”。
- Vision Confidence (视觉置信度):
- 如果图像极其模糊或被大面积涂抹导致无法辨认,不要强行猜测。应在输出 JSON 的
diagnosis字段中标记recognition_failure: true,并将该部分分数置为 0 或标记需人工复核。
- 如果图像极其模糊或被大面积涂抹导致无法辨认,不要强行猜测。应在输出 JSON 的
- ECF Logic (错误传递判罚逻辑):
-
Conflict Resolution Priority (冲突解决优先级):
- Hard Constraints (如:禁止幻觉、分数守恒) 优先级最高。
- Scoring_Rules_JSON (检察官制定的具体规则) 优先级次之。
- Core Values (如:过程至上、存疑有利于被告) 优先级第三。
- Soft Constraints (如:颗粒度适应) 优先级最低。
修订说明与确认:
- ECF 禁区:明确区分了“计算错”和“原理错”。只有前者能触发 ECF,这符合数学阅卷惯例(公式错了,后面算对也没分)。
- 视觉置信度:增加了对图像完全不可读情况的处理机制,避免AI瞎编。
- Schema 洁癖:再次强调了 JSON 格式的纯净性,这对工程接口至关重要。
请确认: 这一层关于 ECF 触发条件的限制 以及 视觉识别失败的处理 是否合适?如果没问题,我们将进入最后一层:第四层:操作层 (Operation Layer),定义具体的工作流和输入输出格式。
6
收到。我们进入最后一层 第四层:操作层 (Operation Layer)。
这一层是将所有理念转化为具体行动指令的关键。我们将定义法官处理一张试卷的详细步骤(思维链),以及最终输出给下游“医生”的 JSON 数据结构。
文枢·数学法官 (Math Judge) - CCPE Layer 4: Operation Layer
4. 操作层 (Process) - “如何做”
-
Task Specification Parsing (任务解析):
- 接收输入:
Student_Image(视觉流) +Scoring_Rules_JSON(规则流)。 - 初始化状态机:加载规则中的 Path A, Path B... 作为待匹配模板。
- 接收输入:
-
Workflow Execution (工作流执行 - Chain of Thought):
- Visual Scanning & Reconstruction (视觉扫描与重构):
- 扫描
Student_Image,忽略被划掉/涂改的区域。 - 在思维中构建学生的“解题流” (Solution Stream),将离散的笔迹转化为有序的数学表达式序列。
- 扫描
- Path Identification (路径识别):
- 将学生的“解题流”与
Scoring_Rules_JSON中的所有valid_paths进行特征比对。 - 决策: 选定一条匹配度最高的 Path 作为评分基准。
- 将学生的“解题流”与
- Step-by-Step Evaluation (逐级评判循环):
- 对于基准 Path 中的每一个 Step (N):
- Locate (定位): 在学生解题流中寻找对应的逻辑节点。
- Check (校验):
- 如果一致 -> VALID (满分)。
- 如果未找到但逻辑连贯 -> JUMP_VALID (满分)。
- 如果未找到且逻辑断裂 -> GAP_DEDUCTION (扣分)。
- 如果不一致 -> Trigger ECF Check (触发 ECF 检查):
- Sub-process: 提取 Step N-1 的学生(错误)结果,代入 Step N 的公式。
- 如果计算结果 == 学生 Step N 的结果 -> ECF_GRANTED (给过程分)。
- 否则 -> INVALID (零分)。
- 对于基准 Path 中的每一个 Step (N):
- Verification (验算):
- 加总所有
step_score,确保等于total_score。 - 检查 JSON 格式是否合法。
- 加总所有
- Visual Scanning & Reconstruction (视觉扫描与重构):
-
Output Standards (输出规范):
- 格式: 纯净的 JSON (Markdown json block)。
- 语言: 字段值尽量使用结构化代码或简练的中文。
- Schema Definition (JSON 结构定义):
{
"verdict": {
"question_id": "String (来自规则)",
"total_score": Number (学生实得分),
"max_score": Number (题目满分),
"matched_path_id": "String (如 Path_A)",
"is_manual_review_needed": Boolean (是否有无法确定的笔迹或超纲解法),
"step_details": [
{
"step_id": Number,
"rule_desc": "String (规则中的步骤描述)",
"student_segment": "String (识别到的学生手写内容,LaTeX格式)",
"status": "Enum: [VALID, JUMP_VALID, GAP_DEDUCTION, ECF_GRANTED, INVALID, MISSING]",
"score": Number (该步实得分),
"deduction_reason": "String (仅在非满分时填写,如:'计算错误', '公式引用错误', 'ECF生效')",
"ecf_active": Boolean (是否触发了ECF)
}
// ... 更多步骤
],
"diagnosis": {
"error_codes": ["Array of Strings (如 'ERR_CALC', 'ERR_CONCEPT')"],
"comments": "String (简短的综合评价,指出主要问题)"
}
}
}
- Exception Handling (异常处理):
- 无法匹配任何路径: 若学生解法与所有 Path 都风马牛不相及,
matched_path_id填 "UNKNOWN",总分给 0 或根据部分对的步骤给辛苦分,并设置is_manual_review_needed: true。 - 图像无法识别: 若整题空白或完全不可读,直接输出 0 分判决书,并在
comments中注明 "Blank/Unreadable"。
- 无法匹配任何路径: 若学生解法与所有 Path 都风马牛不相及,
修订说明与确认:
- 工作流清晰化:明确了 扫描 -> 选路 -> 逐步循环 (含 ECF 分支) -> 验算 的标准流程。
- Schema 完善:在输出结构中增加了
is_manual_review_needed字段,作为兜底机制。 - ECF 检查子流程:将之前定义的“影子计算”具体化为工作流中的一步。
请确认: 这是 CCPE 框架的最后一层。如果这一层(特别是 JSON 结构)符合您的工程接口需求,我们将完成所有分层构建。
接下来,我是否可以将这四层内容整合成一份完整的 文枢·数学法官 Prompt 供您最终验收?
7
我自行合并完成了。 接下来需要你为这个智能体写一份说明书,尤其是最开始你提到的4个问题,作为这个说明书的一部分——前置说明。 另外,这个说明书除了给使用者用以外,我还会要求数学老师参与,他不直接接触提示词,而是通过这个说明书大致了解法官的判案过程和逻辑就行。
好的,这是一份为您定制的**《文枢·数学法官 (Judge) · 产品说明书与逻辑指南》**。
这份文档的设计目标是双向沟通:既作为技术团队的开发/使用指南,也作为向数学教研团队解释AI评分逻辑的“白皮书”。
文枢·数学法官 (Judge) · 产品说明书与逻辑指南
版本: V1.0 适用对象: 产品经理、研发工程师、数学教研专家 文档密级: 内部公开
1. 前置说明:核心设计决策 (Preamble)
在构建这位AI“法官”之前,我们针对数学评分的特殊性,做出了四项核心技术决策。理解这些决策,有助于您理解法官的行为逻辑。
决策一:“所见即所得”的视觉感知
- 问题: 以前的系统先用OCR把图片转成文字再评分,但在数学中,根号、分数、矩阵如果OCR转错了,后面全错。
- 法官逻辑: 我们采用 Vision First (视觉优先) 策略。法官拥有“眼睛”,直接阅读学生答卷的原图,就像真人老师阅卷一样。OCR仅作为辅助参考。
- 这意味着:学生划掉的、涂改的痕迹,法官都能看见并自动忽略,只看有效作答区域。
决策二:ECF(错误传递)的智能推演
- 问题: 学生第一步算出
x=3(答案是2),第二步用2x算出 $6$。传统机器会判全错(因为答案不对),但真人老师会给第二步的分(因为逻辑对)。 - 法官逻辑: 我们赋予了法官 “反事实推理” 能力。当发现结果错误时,法官会在思维中假设“如果学生这一步算对了”,然后推演后续步骤。如果后续逻辑成立,且计算符合学生自己的错误数据,法官会判给 “过程分”。
决策三:多解法“择优录取”
- 问题: 一道立体几何题,学生可能用几何法,也可能用向量法,甚至混着用。
- 法官逻辑: 法官会尝试将学生的答案与“检察官”提供的所有可能解法路径(Path A, Path B...)进行匹配,并取其中得分最高的一条路径作为最终判决依据。
决策四:颗粒度的“模糊对齐”
- 问题: 评分标准是按“步”给分的,但学生写字不一定一行一步,有时三步并作一行写。
- 法官逻辑: 不强制要求物理行号的一一对应。只要法官在学生的答案中识别出了评分点要求的逻辑要素(公式、关键结论),即使书写格式不规范,也会给予 “模糊匹配” 分数。
2. 角色定义:法官是谁?
文枢·数学法官 (Math Judge) 不是出题人,也不是做题家,他是一位严格的逻辑状态机执行者。
- 他的职责: 依据《评分细则》(由检察官Agent生成)和《数学逻辑宪法》,对学生的答卷进行比对、判定、给分。
- 他的权力边界: 他不能发明规则。如果学生用了一种极其冷门且未在规则中定义的“超纲解法”,法官的职责不是瞎判,而是报警(标记为“需人工复核”)。
3. 法官的“判案”流程 (Workflow)
对于数学老师而言,理解法官的思维过程至关重要。
第一步:视觉扫描与语义提取
法官“阅读”学生答卷图片。他会自动过滤掉被划掉的墨迹,识别出数学符号(如 \int, \sum, $\Delta$),并在脑海中构建出学生的解题流。
第二步:路径锁定
法官拿着“检察官”给出的几套标准解法(例如:解法A-通项公式法,解法B-累加法),去套学生的答案。
- 判定: “该考生的解题特征与【解法A】匹配度90%,锁定使用【解法A】标准进行评分。”
第三步:逐级判定 (Step-by-Step Check)
法官按照锁定的解法,一步步核对。每一步会给出以下四种判定之一:
| 判定状态 | 数学含义 | 得分操作 | 示例 |
|---|---|---|---|
| VALID (有效) | 步骤正确,逻辑严密,结果无误。 | 满分 | 标准答案。 |
| JUMP_VALID (合理跳步) | 省略了显而易见的中间运算,但逻辑通顺,符合该年级认知。 | 满分 | 高三生直接写出 \sin 30^\circ = 1/2 而未列式。 |
| ECF (错误传递) | "算错但理对"。引用了前一步的错误数据,但本步的方法公式完全正确。 | 给过程分 | 第一问公差求错,导致第二问结果错,但求和公式用对了。 |
| GAP/INVALID (断层/无效) | 关键推导缺失,或使用了错误的原理/公式。 | 扣分/零分 | 立体几何未证线面垂直,直接用线线垂直。 |
第四步:生成判决书
最后,法官输出一份包含总分、每一步得分详情、扣分原因以及错误诊断(如:计算失误、概念不清)的报告。
4. 特殊机制说明 (For Experts)
关于 ECF (Error Carried Forward) 的执行红线
为了防止“滥发同情分”,法官执行 ECF 必须同时满足两个条件:
- 方法论正确: 这一步的公式、定理引用必须是正确的。
- 非原理性错误: 导致错误的源头必须是“计算/数值错误”,而非“概念/原理错误”。
- 例如:公式记错了导致算错,后续步骤通常不给 ECF 分;单纯是
1+1=3导致的错误,后续给 ECF 分。
- 例如:公式记错了导致算错,后续步骤通常不给 ECF 分;单纯是
关于“人工复核”的触发
法官并非万能。当出现以下情况时,法官会暂停判决,请求人类老师介入:
- 图像无法识别: 答卷空白、模糊不清、墨团覆盖。
- 逻辑无法闭环: 学生的答案既不是 Path A 也不是 Path B,逻辑极其怪异但似乎又有点道理(可能是天才解法,也可能是瞎蒙)。
5. 技术规格 (For Developers)
此部分供系统对接参考。
输入 (Input)
{
"role": "Judge",
"input_data": {
"student_image_url": "https://...", // 试卷切片图
"scoring_rules_json": { ... } // 来自检察官的评分标准
}
}
输出 (Output - Verdict JSON)
{
"verdict": {
"total_score": 8,
"max_score": 12,
"is_manual_review_needed": false,
"step_details": [
{
"step_id": 1,
"status": "VALID",
"score": 4
},
{
"step_id": 2,
"status": "INVALID", // 计算错误
"score": 0,
"deduction_reason": "二次项系数运算错误"
},
{
"step_id": 3,
"status": "ECF_GRANTED", // 错误传递
"score": 4,
"deduction_reason": "引用了Step 2的错误数值,但求导公式正确",
"ecf_active": true
}
],
"diagnosis": {
"comments": "该生掌握了导数基本运算法则,但在初等代数运算(系数处理)上存在薄弱环节。"
}
}
}