Commit 2708fc78 by ccran

feat: 更新安装调试审查;

parent 51eaa283
......@@ -12,24 +12,18 @@ use_docker = False
# model: str = "deepseek-v4-pro"
# @dataclass
# class LLMConfig:
# base_url: str = "http://172.21.107.80:9002/v1"
# api_key: str = "none"
# model: str = "Qwen2-72B-Instruct"
@dataclass
class LLMConfig:
base_url: str = "http://172.21.107.80:9002/v1"
api_key: str = "none"
model: str = "Qwen2-72B-Instruct"
# @dataclass
# class LLMConfig:
# base_url: str = "http://172.21.107.80:9002/v1"
# base_url: str = "http://192.168.252.71:9002/v1"
# api_key: str = "none"
# model: str = "Qwen2-72B-Instruct"
@dataclass
class LLMConfig:
base_url: str = "http://192.168.252.71:9002/v1"
api_key: str = "none"
model: str = "Qwen2-72B-Instruct"
# 最大分片数量
min_single_chunk_size = 2000
max_single_chunk_size = 100000
......@@ -63,8 +57,8 @@ MAX_WORKERS = 10
FILE_SUFFIX = "-审核批注"
## 关键参数**
use_non_fastgpt_llm = True
use_lufa = True
use_non_fastgpt_llm = False
use_lufa = False
use_jp_machine = True
debug_mode = False
......
......@@ -7,50 +7,35 @@ from core.tool import tool, tool_func
@tool("rule_filter", "规则过滤")
class RuleFilterTool:
@tool_func(
{
"type": "object",
"properties": {
"payload": {"type": "object"},
},
"required": ["payload"],
}
)
def run(self, payload: Dict[str, Any]) -> Dict[str, Any]:
raise NotImplementedError("Subclasses must implement run")
def pre_run(self, payload: Dict[str, Any]) -> Dict[str, Any]:
return payload
def post_run(self, payload: Dict[str, Any]) -> Dict[str, Any]:
return payload
@tool("lufa_party_rule_filter_tool", "LUFA 当事人与支付主体规则过滤")
class LufaPartyRuleFilterTool(RuleFilterTool):
@tool_func(
{
"type": "object",
"properties": {
"payload": {"type": "object"},
},
"required": ["payload"],
}
)
def run(self, payload: Dict[str, Any]) -> Dict[str, Any]:
# rules = payload.get("rules") or []
# segment_idx = int(payload.get("segment_idx", 0))
# total_segments = int(payload.get("total_segments", 0))
# if not rules or total_segments <= 0:
# payload["rules"] = rules
# return payload
# # 奇数分段时将中间段归入前半段
# first_half_count = (total_segments + 1) // 2
# if segment_idx < first_half_count:
# filtered_rules: List[Dict[str, Any]] = [
# r for r in rules if "支付主体审查" not in str(r.get("title", ""))
# ]
# else:
# filtered_rules = [
# r for r in rules if "当事人审查" not in str(r.get("title", ""))
# ]
# payload["rules"] = filtered_rules
def pre_run(self, payload: Dict[str, Any]) -> Dict[str, Any]:
return payload
def post_run(self, payload: Dict[str, Any]) -> Dict[str, Any]:
return payload
@tool("jp_party_rule_filter_tool", "JP 通用审查过滤")
class JpRuleFilterTool(RuleFilterTool):
# 过滤通用审查
def pre_run(self, payload: Dict[str, Any]) -> Dict[str, Any]:
rules = payload.get("rules") or []
filtered_rules: List[Dict[str, Any]] = [
r for r in rules if "通用审查" not in str(r.get("title", ""))
]
payload["rules"] = filtered_rules
return payload
# 增加通用审查
def post_run(self, payload: Dict[str, Any]) -> Dict[str, Any]:
if 'routed_rule_titles' in payload:
routed_rule_titles = payload['routed_rule_titles']
routed_rule_titles.append('通用审查')
payload['routed_rule_titles'] = routed_rule_titles
return payload
\ No newline at end of file
No preview for this file type
......@@ -4,7 +4,7 @@ from spire.doc.common import *
# 创建一个 Document 类对象并加载一个 Word 文档
doc = Document()
doc.LoadFromFile(
"/home/ccran/lufa-contract/demo/湖南麓谷发展集团“主数据管理系统与合同管理系统开发”项目合同协议书-审核批注20260511_153215.docx"
r"/Users/chenran/Desktop/test.doc"
)
# 移除第二个注释
......@@ -15,6 +15,6 @@ doc.Comments.Clear()
# 保存文档
doc.SaveToFile(
"/home/ccran/lufa-contract/demo/湖南麓谷发展集团“主数据管理系统与合同管理系统开发”项目合同协议书-审核批注20260511_153215-无批注.docx"
r"/Users/chenran/Desktop/test_no_comments.doc"
)
doc.Close()
......@@ -26,7 +26,7 @@ from core.config import (
from core.tools.segment_summary import SegmentSummaryTool
from core.tools.segment_review import SegmentReviewTool
from core.tools.segment_rule_router import SegmentRuleRouterTool
from core.tools.rule_filter import LufaPartyRuleFilterTool
from core.tools.rule_filter import LufaPartyRuleFilterTool,JpRuleFilterTool,RuleFilterTool
from core.tools.rules_retrieve_reference import RulesRetrieveReferenceTool
from core.tools.reflect_retry import ReflectRetryTool
from core.tools.segment_merger import SegmentMergerTool
......@@ -43,7 +43,12 @@ TMP_DIR.mkdir(parents=True, exist_ok=True)
summary_tool = SegmentSummaryTool()
review_tool = SegmentReviewTool()
rule_router_tool = SegmentRuleRouterTool()
lufa_party_rule_filter_tool = LufaPartyRuleFilterTool()
rule_filter_tool = RuleFilterTool()
# if use_lufa:
# rule_filter_tool = LufaPartyRuleFilterTool()
# else:
# rule_filter_tool = JpRuleFilterTool()
rules_reference_tool = RulesRetrieveReferenceTool()
reflect_tool = ReflectRetryTool()
merger_tool = SegmentMergerTool()
......@@ -431,13 +436,12 @@ def route_segment_rules(payload: SegmentReviewRequest) -> SegmentRuleRouterRespo
ruleset_id = payload.ruleset_id or rules_reference_tool.default_ruleset_id
rules = rules_reference_tool.run(ruleset_id=ruleset_id).get("rules", [])
if use_lufa and rules:
try:
total_segments = len(doc_obj.get_chunk_id_list() or [])
except Exception:
total_segments = 0
filtered_payload = lufa_party_rule_filter_tool.run(
# filter rules
filtered_payload = rule_filter_tool.pre_run(
{
"rules": rules,
"segment_idx": segment_idx,
......@@ -454,13 +458,19 @@ def route_segment_rules(payload: SegmentReviewRequest) -> SegmentRuleRouterRespo
context_memories=payload.context_memories,
route_by=payload.route_by,
)
routed_rule_titles=result.get("routed_rule_titles", [])
routed_rule_titles = rule_filter_tool.post_run(
{
"routed_rule_titles": routed_rule_titles
}
).get("routed_rule_titles", routed_rule_titles)
return SegmentRuleRouterResponse(
conversation_id=payload.conversation_id,
segment_id=payload.segment_id,
ruleset_id=ruleset_id,
route_by=result.get("route_by", payload.route_by),
routed_rule_titles=result.get("routed_rule_titles", []),
routed_rule_titles=routed_rule_titles,
routed_summary_names=result.get("routed_summary_names", []),
routed_rules=result.get("routed_rules", []),
)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment