项目

金融合同解析与交易日历规则引擎

把资管合同中的费用、业绩报酬和申赎开放规则抽成标准规则,并生成逐日交易日历的工程链路。

  • Python
  • LLM
  • Prompt Engineering
  • Evaluation
  • Rule Engine
  • Trading Calendar
合同处理耗时从数小时缩短到约 2 分钟字段级结果从 60% 多提升到 90% 左右支持 9 种开放日周期类型和假期顺延 / 提前对齐用 L0-single / L1-dual / L2-dual-chunk 做 EDD 消融评测

金融合同解析与交易日历规则引擎,是一条从长合同文本到标准业务规则、再到逐日交易日历的工程链路。输入是资管计划 / 基金合同,输出是费用、业绩报酬、申购赎回开放规则和全年开放状态。

这个项目不是公开 SaaS,也没有公开仓库或在线 demo。这里把它作为脱敏工程项目记录,重点放在架构、模块边界和取舍。

问题定义

合同抽取在这个场景里不是生成摘要,而是给业务系统准备结构化规则。

系统需要处理几类问题:

  • 十万字量级合同无法在内网算力约束下一次塞进模型。
  • 费用和业绩报酬存在分档表、隐含区间、中文数字、百分比和字段边界。
  • 申购赎回开放日要从自然语言变成 9 类周期规则。
  • 顺延、提前、工作日、交易日和连续休市块会影响最终日历。
  • 每次改 prompt、分块或清洗逻辑,都要知道字段结果有没有回归。

技术栈

核心实现以 Python 为主。抽取部分使用 LLM,工程侧重点放在合同分块、模块化 prompt、结果融合、枚举和数值清洗、标准规则 VO、交易日历规则引擎、参数指纹缓存和 EDD 离线评测。

没有公开 repoUrldemoUrl。公开联系方式保留在 GitHub 主页 和站点联系入口。

架构

合同文本
  -> 分块定位(chunk=8000, overlap=800)
  -> 5 模块抽取
  -> 双提示词候选(重点模块)
  -> 候选融合与确定性清洗
  -> 标准规则 VO
  -> 交易日历规则引擎
  -> 逐日申赎开放状态
  -> EDD 字段级评测与回归对比

抽取侧和日历侧通过标准规则 VO 解耦。抽取侧可以保留模型输出和清洗逻辑,日历侧只关心扁平规则字段,不依赖抽取内部结构。

核心模块

1. 合同抽取模块

合同被拆成费用、业绩报酬、申购流动性、赎回流动性和其他 5 个模块。费用、业绩报酬、申购流动性使用双提示词风格,单个 case 最多并发 8 路 LLM 调用。

这样做是为了提高分档表、数字规则和流动性字段的召回。双提示词比单提示词约 +3pp,代价是 token 成本更高。

2. 融合与清洗模块

模型输出不会直接进业务规则。清洗层负责:

  • 枚举模糊匹配:如 T+2 / T+2日 / N+2 -> n2
  • 语义数值解析:如「千分之五」「百分之二十五」「正收益」。
  • KV 结构归一:把裸值补成下游可处理的结构。
  • paramList 合并:按左边界 key 去重。
  • 非空字段择优:选择信息更完整的候选对象。

这层的目标不是让模型「更聪明」,而是让输出更稳定。

3. 交易日历规则引擎

日历引擎支持 9 种周期类型:

  • 每月第 X 日
  • 每季第 X 日
  • 每周周 N
  • 每月第 M 周周 N
  • 按月倒数第 X 日
  • 按季倒数第 X 日
  • 每年 Y 月第 X 日
  • 每年 Y 月第 M 周周 N
  • 每年 Y 月倒数第 X 日

所有周期先按自然日取号,再处理交易日历和假期对齐。openDay=32 表示当月最后一日。

4. 假期对齐模块

顺延和提前共用一套对齐算法。系统识别候选日所在的连续休市块,同一休市块内多个候选日按日期升序编号。顺延取节后第 i 个交易日,提前取节前第 i 个交易日。

这个设计避免多个开放日全部挤到同一个节后交易日。

5. EDD 离线评测

评测包含 L0-single、L1-dual、L2-dual-chunk 三档消融,逐级只改变一个变量。它还会抓 expected null 和 spurious 输出,用多模型一致性判断问题更像模型差异、抽取难点,还是 prompt / 金标定义。

我负责的部分

我主要负责:

  • 5 模块抽取链路与双提示词策略。
  • 抽取结果融合、枚举清洗、数值归一和 KV 结构处理。
  • 标准规则 VO 与日历侧解耦。
  • 9 类开放日周期规则实现。
  • 顺延 / 提前的连续休市块对齐逻辑。
  • 参数 md5 指纹缓存策略。
  • EDD 消融评测与多模型一致性归因。

业务规则口径由我和产品一起确认,对外不写成单人决定全部业务含义。

难点与边界

内网上下文不能拉满,十万字合同不能一次性放进模型,所以分块定位是必要设计,不是性能优化装饰。

双提示词提高了召回,但没有消灭错误。某些语义推断字段还没有完全收口,这类内容不会写成已解决结果。

日历引擎对边界采取保守策略。假期前后最多游走 400 天,找不到交易日就丢弃候选,不硬画日期。

结果

用户补充的结果是,合同处理耗时从数小时缩短到约 2 分钟,字段级结果从 60% 多提升到 90% 左右。系统仍然保留人工复核,尤其是高风险字段和冲突字段。

这个项目给我的经验是:合同抽取能不能用,不只看模型输出,还要看标准规则、日历引擎、评测和人工复核是否一起成立。

相关链接

如果你正在做企业 RAG、知识库、AI 客服或 Agent 工作流,可以通过页面下方微信二维码或邮件沟通,邮箱:contact@aildnc.com

联系

预约一次 30 分钟技术诊断

正在评估企业知识库、AI 客服或 Agent 工作流时,可以先发问题背景。我会先帮你判断是否值得做、怎么做,以及主要风险在哪里。

微信二维码 优先加微信沟通