|
@@ -95,7 +95,7 @@ class Stage(Enum):
|
|
|
"""工作流状态"""
|
|
"""工作流状态"""
|
|
|
BASIC = {
|
|
BASIC = {
|
|
|
'reviewer_type':'basic',
|
|
'reviewer_type':'basic',
|
|
|
- 'grammar': 'grammar_check',
|
|
|
|
|
|
|
+ 'grammar': 'sensitive_word_check',
|
|
|
'sensitive':'sensitive_check',
|
|
'sensitive':'sensitive_check',
|
|
|
'semantic': 'semantic_logic_check',
|
|
'semantic': 'semantic_logic_check',
|
|
|
'completeness': 'completeness_check',
|
|
'completeness': 'completeness_check',
|
|
@@ -222,7 +222,7 @@ class AIReviewEngine(BaseReviewer):
|
|
|
basic_tasks.append(
|
|
basic_tasks.append(
|
|
|
asyncio.create_task(
|
|
asyncio.create_task(
|
|
|
asyncio.wait_for(
|
|
asyncio.wait_for(
|
|
|
- check_with_semaphore(self.check_grammar, trace_id_idx=trace_id_idx, review_content=review_content, review_references=None, review_location_label=review_location_label, state=state, stage_name=stage_name),
|
|
|
|
|
|
|
+ check_with_semaphore(self.sensitive_word_check, trace_id_idx=trace_id_idx, review_content=review_content, review_references=None, review_location_label=review_location_label, state=state, stage_name=stage_name),
|
|
|
timeout=TASK_TIMEOUT
|
|
timeout=TASK_TIMEOUT
|
|
|
)
|
|
)
|
|
|
)
|
|
)
|
|
@@ -258,7 +258,7 @@ class AIReviewEngine(BaseReviewer):
|
|
|
# 一次性执行所有任务,避免重复协程调用
|
|
# 一次性执行所有任务,避免重复协程调用
|
|
|
if not basic_tasks:
|
|
if not basic_tasks:
|
|
|
return {
|
|
return {
|
|
|
- "grammar_check": self._process_review_result(None),
|
|
|
|
|
|
|
+ "sensitive_word_check": self._process_review_result(None),
|
|
|
"semantic_logic_check": self._process_review_result(None),
|
|
"semantic_logic_check": self._process_review_result(None),
|
|
|
"sensitive_check": self._process_review_result(None),
|
|
"sensitive_check": self._process_review_result(None),
|
|
|
}
|
|
}
|
|
@@ -298,7 +298,7 @@ class AIReviewEngine(BaseReviewer):
|
|
|
if result_index < len(results):
|
|
if result_index < len(results):
|
|
|
grammar_result = self._process_review_result(results[result_index])
|
|
grammar_result = self._process_review_result(results[result_index])
|
|
|
result_index += 1
|
|
result_index += 1
|
|
|
- with open('temp/grammar_check_result.json','w',encoding='utf-8') as f:
|
|
|
|
|
|
|
+ with open('temp/sensitive_word_check_result.json','w',encoding='utf-8') as f:
|
|
|
json.dump(grammar_result,f,ensure_ascii=False,indent=4)
|
|
json.dump(grammar_result,f,ensure_ascii=False,indent=4)
|
|
|
if 'semantic_logic_check' in self.task_info.get_review_config_list():
|
|
if 'semantic_logic_check' in self.task_info.get_review_config_list():
|
|
|
if result_index < len(results):
|
|
if result_index < len(results):
|
|
@@ -316,7 +316,7 @@ class AIReviewEngine(BaseReviewer):
|
|
|
# with open('temp/completeness_check_result.json','w',encoding='utf-8') as f:
|
|
# with open('temp/completeness_check_result.json','w',encoding='utf-8') as f:
|
|
|
# json.dump(completeness_result,f,ensure_ascii=False,indent=4)
|
|
# json.dump(completeness_result,f,ensure_ascii=False,indent=4)
|
|
|
return {
|
|
return {
|
|
|
- 'grammar_check': grammar_result,
|
|
|
|
|
|
|
+ 'sensitive_word_check': grammar_result,
|
|
|
'semantic_logic_check': semantic_result,
|
|
'semantic_logic_check': semantic_result,
|
|
|
'sensitive_check': sensitive_result,
|
|
'sensitive_check': sensitive_result,
|
|
|
#'completeness_check': completeness_result,
|
|
#'completeness_check': completeness_result,
|
|
@@ -428,36 +428,14 @@ class AIReviewEngine(BaseReviewer):
|
|
|
logger.info(f"[技术审查] 总共创建了 {len(technical_tasks)} 个动态审查任务")
|
|
logger.info(f"[技术审查] 总共创建了 {len(technical_tasks)} 个动态审查任务")
|
|
|
|
|
|
|
|
else:
|
|
else:
|
|
|
- # 没有entity_results或未配置专业性审查,使用原有逻辑
|
|
|
|
|
- logger.info("[技术审查] 使用通用审查模式(未使用 entity_results)")
|
|
|
|
|
|
|
+ # 没有entity_results或未配置专业性审查,直接跳过该条审查
|
|
|
|
|
+ logger.warning("[技术审查] 未提供 entity_results 或未配置专业性审查,跳过该条审查")
|
|
|
|
|
|
|
|
- if 'non_parameter_compliance_check' in self.task_info.get_review_config_list():
|
|
|
|
|
- task_mapping.append('non_parameter_compliance')
|
|
|
|
|
- technical_tasks.append(
|
|
|
|
|
- asyncio.create_task(
|
|
|
|
|
- asyncio.wait_for(
|
|
|
|
|
- check_with_semaphore(self.check_non_parameter_compliance, trace_id_idx=trace_id_idx,
|
|
|
|
|
- review_content=review_content, review_references=None,
|
|
|
|
|
- reference_source=None, review_location_label=review_location_label,
|
|
|
|
|
- state=state, stage_name=stage_name),
|
|
|
|
|
- timeout=TASK_TIMEOUT
|
|
|
|
|
- )
|
|
|
|
|
- )
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
- if 'parameter_compliance_check' in self.task_info.get_review_config_list():
|
|
|
|
|
- task_mapping.append('parameter_compliance')
|
|
|
|
|
- technical_tasks.append(
|
|
|
|
|
- asyncio.create_task(
|
|
|
|
|
- asyncio.wait_for(
|
|
|
|
|
- check_with_semaphore(self.check_parameter_compliance, trace_id_idx=trace_id_idx,
|
|
|
|
|
- review_content=review_content, review_references=None,
|
|
|
|
|
- reference_source=None, review_location_label=review_location_label,
|
|
|
|
|
- state=state, stage_name=stage_name),
|
|
|
|
|
- timeout=TASK_TIMEOUT
|
|
|
|
|
- )
|
|
|
|
|
- )
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ # 直接返回空结果,不执行任何审查任务
|
|
|
|
|
+ return {
|
|
|
|
|
+ "non_parameter_compliance": self._process_review_result(None),
|
|
|
|
|
+ "parameter_compliance": self._process_review_result(None),
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
# 一次性执行所有任务,避免重复协程调用
|
|
# 一次性执行所有任务,避免重复协程调用
|
|
|
if not technical_tasks:
|
|
if not technical_tasks:
|
|
@@ -618,7 +596,8 @@ class AIReviewEngine(BaseReviewer):
|
|
|
self.milvus,
|
|
self.milvus,
|
|
|
bfp_result_lists,
|
|
bfp_result_lists,
|
|
|
score_threshold=0.5, # bfp_rerank_score 阈值
|
|
score_threshold=0.5, # bfp_rerank_score 阈值
|
|
|
- max_parents_per_pair=3 # 每个查询对最多3个父文档
|
|
|
|
|
|
|
+ max_parents_per_pair=3, # 每个查询对最多3个父文档
|
|
|
|
|
+ max_parent_text_length=8000 # 单个父文档最大8000字符(约5300 tokens)
|
|
|
)
|
|
)
|
|
|
enhanced_results = enhancement_result['enhanced_results']
|
|
enhanced_results = enhancement_result['enhanced_results']
|
|
|
enhanced_count = enhancement_result['enhanced_count']
|
|
enhanced_count = enhancement_result['enhanced_count']
|
|
@@ -638,8 +617,8 @@ class AIReviewEngine(BaseReviewer):
|
|
|
# 失败时使用原始结果
|
|
# 失败时使用原始结果
|
|
|
enhanced_results = bfp_result_lists
|
|
enhanced_results = bfp_result_lists
|
|
|
|
|
|
|
|
- # Step 5: 提取查询对结果(只保留得分>0.8的结果)
|
|
|
|
|
- entity_results = extract_query_pairs_results(enhanced_results, query_pairs, score_threshold=0.8)
|
|
|
|
|
|
|
+ # Step 5: 提取查询对结果(只保留得分>0.5的结果)
|
|
|
|
|
+ entity_results = extract_query_pairs_results(enhanced_results, query_pairs, score_threshold=0.5)
|
|
|
|
|
|
|
|
# 保存最终结果用于调试
|
|
# 保存最终结果用于调试
|
|
|
# with open(rf"temp\ai_review_engine\extract_query_pairs_results.json", "w", encoding='utf-8') as f:
|
|
# with open(rf"temp\ai_review_engine\extract_query_pairs_results.json", "w", encoding='utf-8') as f:
|
|
@@ -647,7 +626,7 @@ class AIReviewEngine(BaseReviewer):
|
|
|
|
|
|
|
|
# 如果没有结果通过阈值过滤,返回空结果
|
|
# 如果没有结果通过阈值过滤,返回空结果
|
|
|
if not entity_results:
|
|
if not entity_results:
|
|
|
- logger.warning("[RAG增强] 没有结果通过阈值过滤(得分>0.8),返回空结果")
|
|
|
|
|
|
|
+ logger.warning("[RAG增强] 没有结果通过阈值过滤(得分>0.5),返回空结果")
|
|
|
return {
|
|
return {
|
|
|
'vector_search': [],
|
|
'vector_search': [],
|
|
|
'retrieval_status': 'no_results',
|
|
'retrieval_status': 'no_results',
|
|
@@ -666,7 +645,7 @@ class AIReviewEngine(BaseReviewer):
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
- async def check_grammar(self, trace_id_idx: str, review_content: str, review_references: str,
|
|
|
|
|
|
|
+ async def sensitive_word_check(self, trace_id_idx: str, review_content: str, review_references: str,
|
|
|
review_location_label: str, state: str, stage_name: str) -> Dict[str, Any]:
|
|
review_location_label: str, state: str, stage_name: str) -> Dict[str, Any]:
|
|
|
"""
|
|
"""
|
|
|
词句语法检查
|
|
词句语法检查
|
|
@@ -682,7 +661,7 @@ class AIReviewEngine(BaseReviewer):
|
|
|
Returns:
|
|
Returns:
|
|
|
ReviewResult: 语法检查结果
|
|
ReviewResult: 语法检查结果
|
|
|
"""
|
|
"""
|
|
|
- from core.construction_review.component.reviewers.grammar_check import grammar_check_reviewer
|
|
|
|
|
|
|
+ from core.construction_review.component.reviewers.sensitive_word_check import sensitive_word_check_reviewer
|
|
|
|
|
|
|
|
# 构造trace_id
|
|
# 构造trace_id
|
|
|
reviewer_type = Stage.BASIC.value['reviewer_type']
|
|
reviewer_type = Stage.BASIC.value['reviewer_type']
|
|
@@ -690,7 +669,7 @@ class AIReviewEngine(BaseReviewer):
|
|
|
trace_id = prompt_name + trace_id_idx
|
|
trace_id = prompt_name + trace_id_idx
|
|
|
|
|
|
|
|
# 调用语法检查审查模块
|
|
# 调用语法检查审查模块
|
|
|
- result = await grammar_check_reviewer.check_grammar(
|
|
|
|
|
|
|
+ result = await sensitive_word_check_reviewer.check_grammar(
|
|
|
trace_id=trace_id,
|
|
trace_id=trace_id,
|
|
|
review_content=review_content,
|
|
review_content=review_content,
|
|
|
review_references=review_references,
|
|
review_references=review_references,
|