WangXuMing 77faeebeb0 v0.0.6-编写-功能优化 пре 3 недеља
..
README.md 77faeebeb0 v0.0.6-编写-功能优化 пре 3 недеља
run_test.bat 77faeebeb0 v0.0.6-编写-功能优化 пре 3 недеља
test_sensitive_check.py 77faeebeb0 v0.0.6-编写-功能优化 пре 3 недеља
test_sensitive_check_standalone.py 0e360b2d51 -dev:更新了敏感词审查的二审机制,减少误判出现。更新了词句语法检查的提示词,减少了误判与乱判。 пре 2 месеци

README.md

敏感词检查单元测试说明(完整版)

📋 测试概述

本测试模块针对 AIReviewEngine.check_sensitive 方法进行单元测试,包含完整的大模型二审功能,支持自定义文本检查。

🎯 测试目标

测试 core/construction_review/component/construction_review/ai_review_engine.py 文件中第 450-460 行的 check_sensitive 方法。

✨ 主要特性

1. 完整的大模型二审功能

  • ✅ 关键词匹配检测(第一步)
  • ✅ 大模 �� 二审(第二步,与原函数完全一致)
  • ✅ 调用 review() 方法进行深度审查
  • ✅ 返回详细的审查结果

2. 自定义文本输入

  • ✅ 交互式文本输入
  • ✅ 支持多行文本
  • ✅ 实时检查反馈
  • ❌ 移除了内置测试用例

3. 详细日志输出

  • ✅ 每个步骤的详细日志
  • ✅ 执行时间统计
  • ✅ 敏感词详细信息
  • ✅ 大模型审查结果

🔧 功能实现

核心函数: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.construction_review/ai_review_engine.review(
           "sensitive_check",
           trace_id,
           "basic",
           "sensitive_word_check",
           review_content,
           formatted_sensitive_words,
           ...
       )
   ↓
返回大模型审查结果

   ↓ 否(未检测到敏感词)
步骤2: 构造成功返回体
   ↓
返回 ReviewResult(success=True)

🚀 使用方法

方法 1:直接运行(推荐)

cd h:\UGit\LQAgentPlatform
python utils_test/Sensitive_Test/test_sensitive_check_standalone.py

方法 2:使用批处理脚本

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:跳过输入

>>> [直接按回车]

📊 日志输出示例

1. 初始化阶段

[INFO] ================================================================================
[INFO] 初始化敏感词检查测试类
[INFO] ================================================================================
[INFO] AI审查引擎初始化成功
[INFO] 正在初始化敏感词检测器...
[INFO] 敏感词检测器初始化成功: {'total_words': 12345, 'sources': 15}

2. 检测阶段(未检测到敏感词)

[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] ================================================================================

3. 检测阶段(检测到敏感词 + 大模型二审)

[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] ================================================================================

4. 结果显示

[INFO] --------------------------------------------------------------------------------
[INFO] 检查结果:
[INFO] --------------------------------------------------------------------------------
[INFO]   返回类型: ReviewResult
[INFO]   是否成功: False
[INFO]   执行时间: 2.3456s
[INFO]   详细信息: {'name': 'sensitive_check', 'response': '...大模型审查结果...'}
[WARNING]
[WARNING] 检测到敏感内容,请查看上方详细信息
[INFO] --------------------------------------------------------------------------------

🔍 与原函数的对比

功能项 原函数 测试函数 说明
关键词匹配检测 完全保留
敏感词信息格式化 完全保留
大模型二审 完全保留,调用 review 方法
消息推送 测试中移除
结果封装 完全保留
执行时间统计 完全保留
日志记录 增强版

⚙️ 技术细节

大模型二审调用

# 与原函数完全一致的调用方式
result = await self.construction_review/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. 依赖要求

    • 需要完整的项目环境
    • 需要敏感词库文件
    • 需要大模型 API 配置
  2. 运行环境

    • 必须在项目根目录运行
    • 需要正确的 Python 环境
    • 需要网络连接(大模型 API 调用)
  3. 输入限制

    • 文本长度无限制
    • 支持中英文混合
    • 支持特殊字符
  4. 性能考虑

    • 关键词检测:毫秒级
    • 大模型二审:秒级(取决于 API 响应)

📈 测试建议

推荐测试场景

  1. 正常文本:施工方案、技术文档等
  2. 边界情况:空文本、超长文本
  3. 特殊字符:技术符号、数学公式
  4. 混合文本:中英文混合、数字混合

测试流程

1. 运行测试程序
   ↓
2. 输入测试文本
   ↓
3. 观察检测过程
   ↓
4. 查看检测结果
   ↓
5. 分析大模型审查意见

🆚 版本对比

v1.0(原版本)

  • ❌ 无大模型二审
  • ✅ 内置测试用例
  • ✅ 批量测试

v2.0(当前版本)

  • 完整大模型二审
  • 自定义文本输入
  • 交互式操作
  • 详细日志输出
  • ❌ 移除内置测试用例

📞 问题反馈

如有问题或建议,请联系开发团队。


最后更新: 2025-12-25 版本: v2.0 作者: AI Assistant