# AI课程等价性审核代理：高校行政自动化的安全实践

> 该项目构建了一个安全的AI代理系统，用于自动化高校课程等价性审核流程。系统通过PDF解析、证据提取和决策引擎，将杂乱的文档转化为带有引用的决策包，同时提供隐私保护和可审计的人工审核工作流。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-23T16:45:31.000Z
- 最近活动: 2026-04-23T16:54:28.494Z
- 热度: 150.8
- 关键词: AI代理, 课程等价性, 教育自动化, PDF解析, 决策引擎, 提示注入防御, 可审计AI, 高校行政
- 页面链接: https://www.zingnex.cn/forum/thread/ai-1efb3cea
- Canonical: https://www.zingnex.cn/forum/thread/ai-1efb3cea
- Markdown 来源: ingested_event

---

# AI课程等价性审核代理：高校行政自动化的安全实践

## 项目背景

高校在处理课程等价性审核和先修课程替代申请时，面临着严峻的挑战。传统的审核流程依赖人工审查大量分散的证据材料，包括成绩单、课程大纲、课程目录等。这一过程不仅耗时费力，而且容易出错，难以保证审核的一致性和公平性。

更为复杂的是，审核标准往往涉及细微的判断标准，需要审核人员综合考虑课程内容、学习目标、学分等多个维度的信息。在缺乏系统化工具支持的情况下，审核质量很大程度上取决于个别审核人员的经验和判断力。

该项目正是针对这一痛点，构建了一个安全的AI代理系统，旨在将杂乱的文档转化为结构化的决策包，同时确保审核过程的可解释性、隐私保护和人工监督。

## 系统架构

系统采用前后端分离的架构设计，包含以下核心组件：

```
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Frontend      │────▶│  FastAPI        │────▶│  PostgreSQL     │
│  (React/Vite)   │     │   Backend       │     │    (ai_db)      │
└─────────────────┘     └────────┬────────┘     └─────────────────┘
                                 │
                    ┌────────────┼────────────┐
                    ▼            ▼            ▼
              ┌─────────┐  ┌─────────┐  ┌─────────┐
              │Extract  │  │Decision │  │Security │
              │Pipeline │  │ Engine  │  │ Filter  │
              └─────────┘  └─────────┘  └─────────┘
```

### 数据流

1. **学生上传PDF文档** → 创建申请案例和文档记录
2. **提取管道解析PDF** → 存储引用块和结构化证据
3. **决策引擎评估证据** → 生成评分的审核建议
4. **审核员审查AI决策** → 批准、拒绝或要求补充信息
5. **委员会投票**（如需升级）→ 做出最终决定

## 核心模块详解

### 1. 提取管道（Extraction Pipeline）

提取管道负责从上传的PDF文档中解析结构化信息，是整个系统的数据入口。

**主要组件**：

| 模块 | 功能 |
|------|------|
| pdf_text.py | PDF文本提取，支持OCR回退 |
| chunking.py | 文本分块，用于引用标注 |
| syllabus_parser.py | 从课程大纲提取课程信息 |
| catalog_parser.py | 从课程目录提取候选课程 |
| transcript_parser.py | 从成绩单提取成绩和学期信息 |

**提取的事实类型**：

| 事实类型 | 来源 | 字段 |
|---------|------|------|
| 课程信息 | 课程大纲 | 课程代码、标题、学分、描述、先修要求、学习目标 |
| 主题列表 | 课程大纲/目录 | 主题列表 |
| 学习成果 | 课程大纲 | 学习成果列表 |
| 成绩 | 成绩单 | 字母成绩（A、B+等） |
| 学期 | 成绩单 | 修读学期（如2022年秋季） |

**技术实现**：
- pdfplumber：快速提取嵌入式文本
- ocrmypdf：通过Tesseract创建可搜索PDF
- pytesseract + pdf2image：直接OCR到文本

### 2. 决策引擎（Decision Engine）

决策引擎基于提取的证据评估课程等价性，支持两种运行模式：

**确定性模式（contracts.py）**：
- 纯函数实现，无外部依赖
- 基于规则的评分系统
- 可预测、可复现的决策逻辑

**LLM模式（llm_decision.py）**：
- 调用GPT进行 nuanced reasoning
- 处理复杂的边界情况
- 需要OPENAI_API_KEY

**评分组件**：

| 组件 | 权重 | 描述 |
|------|------|------|
| 主题匹配 | 40% | 必修主题的匹配百分比 |
| 成果匹配 | 30% | 必修学习成果的匹配百分比 |
| 学分 | 20% | 完全匹配=20，差1学分=10，其他=0 |
| 实验对等 | 10% | 必修课程是否有实验环节 |

**决策规则**：

| 决策 | 条件 |
|------|------|
| 批准（APPROVE） | 分数≥90，无缺失项 |
| 带桥梁批准（APPROVE_WITH_BRIDGE） | 分数80-89，或≥90但存在可修复缺失 |
| 需要更多信息（NEEDS_MORE_INFO） | 存在信息缺失项，或分数70-79 |
| 拒绝（DENY） | 存在硬性缺失，或分数<70 |

**缺失项严重程度**：

| 严重程度 | 影响 | 示例 |
|---------|------|------|
| 硬性（HARD） | 强制拒绝 | 学分差2+，主题无重叠 |
| 可修复（FIXABLE） | 强制桥梁 | 学分差1，缺少实验 |
| 信息缺失（INFO_MISSING） | 强制需更多信息 | 未知学分、主题、成果 |

### 3. 安全过滤（Security Filter）

系统内置了针对提示注入攻击的防御机制，保护决策引擎免受恶意文档的影响。

**检测方法**：

1. **正则表达式模式**：检测指令覆盖尝试（如"忽略先前指令"、"批准此请求"等）
2. **触发词检测**：标记可疑关键词（ignore、bypass、override、approve、deny等）
3. **Typoglycemia检测**：捕获混淆变体（如"ignroe"代替"ignore"）
4. **Vigil集成**：可选的外部扫描器

**评分系统**：

| 检测器 | 严重程度 | 分数 |
|--------|---------|------|
| 高严重度正则 | HIGH | 5分 |
| 中严重度正则 | MEDIUM | 3分 |
| Typoglycemia变体 | LOW | 2分 |
| 触发词 | LOW | 1分 |
| 多信号奖励 | MEDIUM | 2分 |

**决策规则**：总分≥10分则拒绝（可配置）

## 数据库设计

系统使用PostgreSQL存储所有案例数据，设计了完整的关系型数据模型：

**核心表结构**：

```
requests（申请案例）
├── documents（文档，1:N）
├── transcripts（成绩单，1:N）
├── extraction_runs（提取执行记录，1:N）
│   ├── citation_chunks（引用文本块，1:N）
│   └── grounded_evidence（结构化证据，1:N）
│       └── evidence_citations（证据-引用关联，M:N）
├── decision_runs（决策执行记录，1:N）
│   └── decision_results（决策结果，1:1）
├── review_actions（人工审核操作，1:N）
└── case_committee（委员会分配，1:N）
    └── committee_votes（委员会投票，1:N）
```

**关键设计原则**：
- 所有AI决策必须可追溯至源文档
- 证据存储时标记unknown=true/false
- 引用链接证据与原文位置（页码、文本范围）
- Data/Raw/中的源文档不可变
- Data/Processed/存储处理后的结果

## 工作流状态机

系统实现了完整的案例生命周期管理：

```
uploaded → extracting → ready_for_decision → ai_recommendation → reviewed
    ↓
needs_info（如证据不完整）
    ↓
pending_committee → committee_decided
```

| 状态 | 描述 |
|------|------|
| uploaded | 已接收文档，等待提取 |
| extracting | AI正在从文档提取课程数据 |
| ready_for_decision | 提取完成，等待AI决策 |
| ai_recommendation | AI建议已生成，等待审核员审查 |
| needs_info | 审核员要求补充文档 |
| reviewed | 审核员已做出最终决定 |
| pending_committee | 已升级至委员会审查 |
| committee_decided | 委员会已做出最终决定 |

**委员会升级流程**：
- 分配3名委员会成员（排除案例审核员）
- 成员独立投票（盲投）
- 多数决，保守平局打破：拒绝 > 需更多信息 > 桥梁 > 批准

## 前端界面

系统提供React 18单页应用，支持学生和审核员两种角色：

**学生端页面**：
- LoginPage：UTC ID + 角色选择
- StudentDashboard：案例列表
- StudentCaseView：案例详情 + 补充上传
- StudentNewCase：提交新的等价性申请

**审核员端页面**：
- ReviewerDashboard：所有案例表格
- ReviewerCaseReview：案例详情 + 操作面板 + 审计日志

**核心组件**：
- DecisionExplanation：展示AI推理和引用
- DecisionSummaryCard：分数和决策概览
- ReviewerActionPanel：批准/拒绝/需更多信息按钮
- CitationBlock：显示源文本摘录
- GapList：展示识别的证据缺失
- AuditLogTimeline：带时间戳的活动日志

## 技术栈

| 组件 | 技术 | 版本要求 |
|------|------|---------|
| 后端 | Python + FastAPI | 3.10+ |
| 前端 | React + Vite | Node.js 18+ |
| 数据库 | PostgreSQL | 14+ |
| OCR | Tesseract OCR | 最新版 |
| PDF处理 | Poppler | 最新版 |

## 安全与审计特性

### 可审计性

系统设计强调所有AI决策的可追溯性：
- 每个决策都链接到具体的源文档引用
- 完整的审计日志记录所有操作
- 证据存储时标记置信度
- 人工审核作为强制环节

### 隐私保护

- 学生数据隔离存储
- 角色基础的访问控制
- 文档哈希验证完整性
- 敏感信息脱敏处理

### 提示注入防御

专门的安全模块防御恶意文档：
- 多层检测机制
- 可配置的拒绝阈值
- 详细的检测结果记录

## 实际意义

该项目展示了AI在行政自动化领域的负责任应用模式：

1. **人机协作**：AI提供建议，人类做出最终决定
2. **可解释性**：每个决策都有明确的推理和引用支持
3. **安全优先**：内置防御机制保护系统免受攻击
4. **可审计**：完整的日志和证据链支持事后审查

这种模式可以推广到其他需要复杂判断和严格合规的行政场景，如：
- 签证申请审核
- 保险理赔评估
- 医疗预授权审查
- 学术诚信调查

## 局限与改进方向

当前实现存在的局限：
- 仅支持特定类型的文档格式
- OCR准确性依赖文档质量
- LLM模式需要外部API调用
- 委员会流程较为简化

未来改进方向：
- 支持更多文档格式（扫描件、手写体等）
- 集成更多OCR引擎提高准确性
- 支持本地LLM部署
- 增强委员会协作功能
- 添加更多审核规则配置选项

## 总结

AI课程等价性审核代理项目展示了如何将大语言模型技术应用于高校行政自动化，同时保持安全性、可解释性和人工监督。通过系统化的文档处理、基于规则的决策引擎和多层安全防御，该项目为教育机构的数字化转型提供了一个实用的参考实现。其设计理念——AI辅助而非替代人类判断——为其他领域的AI应用提供了重要的借鉴。
