|
|
hai 2 meses | |
|---|---|---|
| .. | ||
| README.md | hai 2 meses | |
| run_test.bat | hai 2 meses | |
| test_sensitive_check.py | hai 2 meses | |
| test_sensitive_check_standalone.py | hai 2 meses | |
本测试模块针对 AIReviewEngine.check_sensitive 方法进行单元测试,包含完整的大模型二审功能,支持自定义文本检查。
测试 core/construction_review/component/ai_review_engine.py 文件中第 450-460 行的 check_sensitive 方法。
review() 方法进行深度审查check_sensitive_with_llm_review()async def check_sensitive_with_llm_review(
trace_id_idx: str, # 追踪ID索引
review_content: str, # 审查内容
review_references: str, # 审查参考信息
review_location_label: str, # 审查位置标签
state: Dict, # 状态字典
stage_name: str # 阶段名称
) -> Any:
执行流程:
步骤1: 关键词匹配检测
↓
检测到敏感词?
↓ 是
步骤2: 格式化敏感词信息
↓
步骤3: 调用大模型二审
↓
└─→ self.ai_review_engine.review(
"sensitive_check",
trace_id,
"basic",
"sensitive_word_check",
review_content,
formatted_sensitive_words,
...
)
↓
返回大模型审查结果
↓ 否(未检测到敏感词)
步骤2: 构造成功返回体
↓
返回 ReviewResult(success=True)
cd h:\UGit\LQAgentPlatform
python utils_test/Sensitive_Test/test_sensitive_check_standalone.py
cd h:\UGit\LQAgentPlatform\utils_test\Sensitive_Test
run_test.bat
运行程序后,会提示输入要检查的文本:
================================================================================
请输��要检查的文本内容
================================================================================
提示:
1. 可以输入多行文本,输入完成后单独一行输入 'END' 结束
2. 直接按回车(输入空行)将跳过自定义输入
================================================================================
>>>
示例 1:单行文本
>>> 本工程为住宅楼建设项目,采用框架结构
... END
示例 2:多行文本
>>> 本施工方案编制依据包括:
... 1. 《建筑工程施工质量验收统一标准》GB50300-2013
... 2. 《混凝土结构工程施工质量验收规范》GB50204-2015
... 3. 施工图纸及相关设计文件
... END
示例 3:跳过输入
>>> [直接按回车]
[INFO] ================================================================================
[INFO] 初始化敏感词检查测试类
[INFO] ================================================================================
[INFO] AI审查引擎初始化成功
[INFO] 正在初始化敏感词检测器...
[INFO] 敏感词检测器初始化成功: {'total_words': 12345, 'sources': 15}
[INFO] ================================================================================
[INFO] 开始执行敏感词检查 - trace_id: sensitive_check_custom_001
[INFO] 阶段名称: 自定义测试
[INFO] 审查位置: 自定义文本检查
[INFO] 审查内容长度: 156 字符
[INFO] 审查内容预览: 本工程为住宅楼建设项目,采用框架结构,建筑面积约5000平方米...
[INFO] ================================================================================
[INFO] 步骤1: 开始关键词匹配检测...
[INFO] 步骤1: 关键词检测完成,耗时: 0.0023s
[INFO] 步骤2: 未检测到敏感词
[INFO] 步骤3: 敏感词检查完成(未检测到敏感词),总耗时: 0.0025s
[INFO] ================================================================================
[INFO] ================================================================================
[INFO] 开始执行敏感词检查 - trace_id: sensitive_check_custom_001
[INFO] 阶段名称: 自定义测试
[INFO] 审查位置: 自定义文本检查
[INFO] 审查内容长度: 89 字符
[INFO] 审查内容: 这是一段包含敏感内容的测试文本...
[INFO] ================================================================================
[INFO] 步骤1: 开始关键词匹配检测...
[INFO] 步骤1: 关键词检测完成,耗时: 0.0018s
[WARNING] 步骤2: 检测到 2 个敏感词,准备送入大模型二审
[WARNING] --------------------------------------------------------------------------------
[WARNING] 敏感词 #1: 敏感词: xxx, 位置: 15-18, 来源: 某词库.txt
[WARNING] 敏感词 #2: 敏感词: yyy, 位置: 35-38, 来源: 某词库.txt
[WARNING] --------------------------------------------------------------------------------
[INFO] 步骤3: 调用大模型进行二审...
[INFO] 步骤3: 大模型二审完成,总耗时: 2.3456s
[INFO] ================================================================================
[INFO] --------------------------------------------------------------------------------
[INFO] 检查结果:
[INFO] --------------------------------------------------------------------------------
[INFO] 返回类型: ReviewResult
[INFO] 是否成功: False
[INFO] 执行时间: 2.3456s
[INFO] 详细信息: {'name': 'sensitive_check', 'response': '...大模型审查结果...'}
[WARNING]
[WARNING] 检测到敏感内容,请查看上方详细信息
[INFO] --------------------------------------------------------------------------------
| 功能项 | 原函数 | 测试函数 | 说明 |
|---|---|---|---|
| 关键词匹配检测 | ✅ | ✅ | 完全保留 |
| 敏感词信息格式化 | ✅ | ✅ | 完全保留 |
| 大模型二审 | ✅ | ✅ | 完全保留,调用 review 方法 |
| 消息推送 | ✅ | ❌ | 测试中移除 |
| 结果封装 | ✅ | ✅ | 完全保留 |
| 执行时间统计 | ✅ | ✅ | 完全保留 |
| 日志记录 | ✅ | ✅ | 增强版 |
# 与原函数完全一致的调用方式
result = await self.ai_review_engine.review(
"sensitive_check", # 审查名称
trace_id, # 追踪ID
"basic", # 审查器类型
"sensitive_word_check", # 提示词名称
review_content, # 审查内容
formatted_sensitive_words, # 格式化的敏感词信息
None, # reference_source
review_location_label, # 审查位置标签
state, # 状态字典
stage_name # 阶段名称
)
# 格式化敏感词信息,传递给大模型
sensitive_words_info = []
for item in first_results:
sensitive_words_info.append(
f"敏感词: {item['word']}, "
f"位置: {item['position']}-{item['end_position']}, "
f"来源: {item['source']}"
)
formatted_sensitive_words = "\n".join(sensitive_words_info)
依赖要求:
运行环境:
输入限制:
性能考虑:
1. 运行测试程序
↓
2. 输入测试文本
↓
3. 观察检测过程
↓
4. 查看检测结果
↓
5. 分析大模型审查意见
如有问题或建议,请联系开发团队。
最后更新: 2025-12-25 版本: v2.0 作者: AI Assistant