用DeepSeek做婚姻家事财产分割:从数学推理到自动化计算

用DeepSeek做婚姻家事财产分割:从数学推理到自动化计算 简介面向法律科技与AI算法从业者的一份DeepSeek应用方案聚焦婚姻家事案件中夫妻共同财产范围自动界定与公平分配计算。方案将DeepSeek的数学推理能力引入财产分割场景从法律条文结构化建模、财产证明文件解析到婚前婚后财产语义界定、共同债务识别再到模型微调、知识蒸馏与不动产价值评估形成一套完整的技术链路。资源包为单个PDF文档约13.8MB共617页、50个大章节目录支持书签跳转与章节快速定位阅读检索较为方便。内容涵盖数据标注规范、超参数优化、过拟合抑制、损失函数设计、模型蒸馏与评估等实操性主题也便于对照不同阶段的建模方法进行拆解学习。已有102人学习适合正在探索大模型在法律垂直场景落地的算法工程师、法务信息化产品经理及婚姻家事实务研究者参考可直接借鉴其架构设计、特征工程与模型调优思路。1. DeepSeek做婚姻家事财产分割计算关键是把账拆成数学题婚姻家事案件里最耗人力的往往不是观点交锋而是账目对不齐。一张银行卡几十笔流水几套房产买入时间各不相同再加上股权、公积金、保险与债务材料全起来能到大几百页。不同的人按不同口径算结论可以差出十几万。DeepSeek用于这类场景重点不是让它输出一段自然语言分析而是发挥数学推理能力把财产分割拆成适合自动化的计算任务界定共同财产范围、统一折算口径、生成公平分配方案。这套做法适合做法律科技产品的研发团队、处理批量案件的律师助理以及想把领域经验沉淀成可测试系统的IT工程人员。它解决的是“算得动”的问题而不是替代人去判断。2. 基于数学推理把分割任务拆成归集、折算、切分三段2.1 集合筛选、折算与约束求解三个步骤各司其职把婚姻家事财产分割看成一个计算问题可以得到一个稳定的三段结构。第一段做集合筛选面对几十项资产先按既定业务规则判断哪些属于可分范围与这段婚姻无关、或凭证上明确单方所有的项目直接留在池外。第二段做折算把不同日期的存款余额、不同币种的理财、买入后涨跌明显的房产折算到同一个评估基准日全部以人民币净值入池。第三段做切分把池内资产按配置好的分配比例逐项切分能直接分割的按净值划转不能分割的用补偿金拉平差额。三段各有各的难点。第一段容易漏第二段容易口径不一第三段容易在按揭与不可分割资产上出错。DeepSeek这类模型在长上下文里保持多步计算的能力比普通对话模型要稳但三个阶段全部交给一次对话不可控。我一般会让模型一次只做一步每一步输出结构化结果验证通过后再把结果喂给下一步。即使某一步算错也能定位到具体环节重试而不是把全部推理推倒重来。2.2 用证据数据类固定输入结构给提示词提供稳定底座为了让模型看到的输入是同一套口径项目里通常先把证据表转换成统一的数据结构。我常用dataclass来定字段之后无论是喂给DeepSeek还是做程序对账用的都是同一份对象。from dataclasses import dataclass dataclass class EvidenceLine: seq: int # 证据行序号, 用于定位原始凭证 holder: str # 夫 / 妻 / 共同, 来源由凭证备注决定 category: str # 资产类别: 存款/理财/房产/车辆/股权/公积金 source_price: float # 凭证原值, 统一单位: 人民币元 eval_price: float # 评估基准日净值, 默认与 source_price 相同 acq_start: str # 取得起算日期, 业务规则判断入池的起点 policy: str # 命中哪一条业务规则, 用于追溯界定依据每个字段都有明确用途seq用于出错时定位到第几行凭证holder决定了是否天然需要做贡献度分析policy是范围界定的依据编号模型引用它而不是自己编理由。日期字段用于做存续期窗口判断这一步放在程序里执行不放进自然语言里让模型猜。把数据结构先固定下来后面换模型或改提示词都不会影响整体流程。2.3 强制JSON输出让数学推理结果能被程序校验把范围界定交给模型之后最怕的是它输出一大段自然语言。字数越多能校验的点越少。常见做法是第一步就锁死输出结构要求它只给JSON再用JSON Schema做后校验。import jsonschema schema { type: object, required: [pool_type, asset_id, amount, reason_code], properties: { pool_type: {type: string, enum: [in, out]}, asset_id: {type: string}, amount: {type: number}, reason_code: {type: string}, }, } jsonschema.validate(output_json, schema)schema里把amount限定成number是为了阻挡模型输出“约二十万”这类文本。reason_code对应业务规则编号而不是自由发挥的解释。jsonschema校验失败时直接重试并把错误信息附在下一轮prompt里让模型自我修正。下面是常用的输出字段约束字段类型必填语义pool_typestring是in代表入池out代表剔除asset_idstring是对应EvidenceLine.seqamountnumber是该行资产的折算净值reason_codestring是范围界定的规则编号便于追溯3. 夫妻共同财产范围自动界定的规则清单与提示词模板3.1 入池与剔除边界先写成配置不写成模型记忆范围自动界定的第一步不是把法律条文塞给模型而是把业务侧确认过的规则做成清单在每次调用时作为system prompt传入。以下清单是常见做法具体内容由使用方按项目要求配置这里只展示规则形态资产类别常见处理口径说明婚后工资、经营收益入池按存续期累加公积金与账户收益入池以账户明细为准知识产权许可收益入池发生在存续期内且无单独约定的部分婚前财产产生的被动孳息视配置不同团队口径不同人身属性较强的赔偿与补助剔除与人身绑定明确指定一方的受赠或继承剔除凭证中带有明确指向这些规则如果只写在文档里每次做新案件都要人工翻一遍模型也无法稳定复用。把它们转成编号放进提示词模型每次只做“对应”和“计算”不做领域裁量输出才可能稳定。规则清单本身由业务侧维护改动后直接替换system prompt不需要重新训练模型。3.2 用few-shot提示词模板约束模型按清单执行SYSTEM_PROMPT 你只负责财产范围界定。 以下是本次计算使用的业务规则所有判定都必须引用其中的规则编号 - R1: 婚后取得的工资、劳务报酬与经营收益进入待分池。 - R2: 存续期内产生的公积金、理财收益进入待分池。 - R3: 具有人身属性的赔偿、救助金不进入待分池。 - R4: 凭证明确指定单方的受赠与继承不进入待分池。 输入是一张证据表输出JSON不要任何解释。 示例输出格式 {pool_type: in, asset_id: A-001, amount: 120000, reason_code: R1}few-shot示例的作用是让模型理解输入列的映射关系尤其要让它明白holder字段为“共同”且日期落在窗口内的行是入池的典型形态。提示词里不出现法律术语的展开解释只让模型做字段对应和规则引用。这样后续如果想排查某一行为什么入池直接看reason_code就行不需要再猜测模型的意图。提示reason_code不要直接写“R1”建议写成“R1:婚后工资”既便于程序解析也便于人工阅读。3.3 数据清洗和窗口过滤范围界定前的最后一公里范围界定出错很大一部分原因在数据清洗阶段没做干净。OCR识别出的金额经常带中文逗号、币种符号或“约”字日期格式也不统一。这些脏数据直接喂给模型会显著拉低数学推理的准确率。import pandas as pd df pd.read_excel(evidence.xlsx, dtype{source_price: str}) df[source_price] pd.to_numeric(df[source_price], errorscoerce) df[eval_price] pd.to_numeric(df[eval_price], errorscoerce) df df.dropna(subset[source_price, eval_price]) df df[df[category].isin(ALLOWED_CATEGORIES)] df df[(df[acq_start] WINDOW_START) (df[acq_start] WINDOW_END)]errorscoerce会把无法转成数字的脏值变成NaN随后dropna剔除掉category白名单过滤防止模型遇到未知类型时自由发挥日期窗口判断放在程序侧因为模型对日期区间的比较不如程序稳定。清洗后再把行数、总额、异常行数打印出来确认数据质量后再进入DeepSeek调用环节。4. 公平分配方案生成分配因子、不可分割资产与输出模板4.1 公平分配的前提是分配因子可配置“公平”在工程系统里不能被模型自由裁量。同一个案件不同调解员侧重不同结果就会不同。所以方案里把所有影响比例的变量都做成因子由业务侧在每次计算前赋值DeepSeek拿到的是一个确定的比例而不是让它判断该给多少比例。分配因子默认值作用基础分配比例0.5无特殊情形时双方均分贡献度因子1.0对超额贡献做调整需凭证支撑抚养角色因子1.0由业务方预先确认裁决调节因子1.0最终数值以业务结论为准这些因子在每批数据计算前从配置中心读取与证据表一同传入prompt。模型只负责把因子乘进去并给出每一位的应得金额不负责解释因子怎么来的。这样当业务规则调整时改配置即可不需要动提示词逻辑。4.2 可分割资产与按揭房的净值分摊算法可分割资产按净值入池后直接切分真正容易出错的是不可分割资产。比如唯一住房有未还贷款股权有锁定期保险有现金价值但与人身绑定。工程做法是把这类资产单列计算净权益后由保留方给对方补偿。def calc_indivisible(asset): net max(asset.eval_price - asset.mortgage_balance, 0.0) share net * RATIO_A compensation_to_b share if asset.to_who A else 0.0 return {asset: asset.seq, net: net, share: share} def aggregate_split(items): total sum(x[net] for x in items) return total公式很简单关键是边界处理净权益小于等于0时不产生补偿义务同一套资产只能计算一次补偿不能既划归一方又参与池内均分。如果有多个不可分割资产比如一个股票账户里同时有可交易股和锁定期权证要把锁定部分单独拆出来记录补偿避免重复计算。4.3 分配方案输出模板与模型参数设置{ items: [ {asset: A-001, owner: 甲, net: 120000, ratio: 0.5, amount: 60000}, {asset: A-002, owner: 乙, net: 80000, ratio: 0.5, amount: 40000} ], compensations: [ {from: 甲, to: 乙, amount: 15000, reason: 不可分割房产权衡} ], summary: {total_net: 200000, final_a: 65000, final_b: 135000} }owner字段不允许同一资产双方同时出现compensations专门记录不可分割资产的对冲关系summary里的total_net可以由items重算出来模型给出的只是参考值真正写入报告的数字以程序重算为准。调用模型时temperature设为0.1或更低计算场景不需要创造性如果平台支持结构化输出就把response_format设为json_objectmax_tokens按批量数据量留足避免长清单被截断。5. DeepSeek API调用与批量跑批从单条证据到全案编排5.1 DeepSeek API如何调用最小可跑通的Python客户端import os from openai import OpenAI client OpenAI( api_keyos.environ[DEEPSEEK_API_KEY], base_urlos.environ[DEEPSEEK_BASE_URL], ) response client.chat.completions.create( modelos.environ[DEEPSEEK_MODEL], messages[ {role: system, content: SYSTEM_PROMPT}, {role: user, content: f本次待处理证据表\n{evidence_text}}, ], temperature0.1, ) print(response.choices[0].message.content)DEEPSEEK_API_KEY、DEEPSEEK_BASE_URL和DEEPSEEK_MODEL都由环境变量注入具体取值以你当前配置的模型服务为准不要硬编码在仓库里。在VS Code里调试这段脚本时可以把环境变量放在启动配置里这样切换接口地址或模型名时不需要改代码。计算场景优先选用带推理能力的模型模式如果平台提供思维链开关开启后多步计算的中间过程更容易排错。5.2 几百页材料分批送入上下文长度上限的应对617页这类体量的卷宗一次调用塞不完。工程做法是把PDF按证据类型切块每批只放5到20条结构化后的资产行逐批请求落地结果后再进入下一批。错误提示里出现“对话达到长度上限请开启新对话”时说明消息上下文超额了不是额度用尽。for batch in batches(evidence_rows, size10): result call_deepseek(SYSTEM_PROMPT, batch) save_result(batch.id, result) time.sleep(0.5)应对方式是不要在请求里重复拼历史轮次每批次只带本轮必要输入中间状态由程序保存。sleep的作用是压低请求频次避免触发限流批次结果落盘是后续对账的基础不要只存在内存里。对于大批量任务建议先跑一个10条的小批次验证输出结构再放开全量。5.3 本地部署DeepSeek与harness编排的落地选型当案件数据不允许出域或每天要跑几百件材料时就轮到本地部署。常见的做法是用vLLM或Ollama这类的推理引擎加载开源权重端口暴露在内网供流程调用。vllm serve model-name \ --tensor-parallel-size 2 \ --max-model-len 8192 \ --port 8000替换成你实际拉取的模型标识不同引擎对参数叫法有差异以文档为准。再往上走是社区里常说的harness编排形态把API调用包装成一个个stepstep之间用文件或消息队列串联。读完证据表先跑范围界定再跑折算再跑分配最后跑对账。每个step的输入输出都可重放哪个环节的模型输出变化了能立刻定位是哪一步引起的。这种流水线是把模型从“单次问答”变成“可编排计算”的关键。部署方式适用场景主要成本配置关注点公有云API原型与小批量按token计费上下文长度、限流策略本地单机万条以下每日处理量显存与电费量化精度、窗口缩减本地多卡隐私要求高、高并发硬件投入张量并行、批大小6. 验证数学推理结果对账脚本、回归测试与可追溯快照6.1 不等模型自证用独立程序重算一遍模型输出里的summary字段写得再漂亮也不能直接信。工程习惯是让DeepSeek在输出里保留每个参与计算的数字再由独立脚本用同一组数字重新加总。两边结果差超过1元就判定为失败并重试。def recalc_expected(items, compensations): total sum(item[amount] for item in items) total total - sum(c[amount] for c in compensations) return total actual model_output[summary][total_net] expected recalc_expected(model_output[items], model_output[compensations]) assert abs(actual - expected) 1.0, f对账失败: {actual} vs {expected}对账脚本与prompt完全无关它只认数字。这意味着即使模型把推理过程写错只要对账不过就进不了下一环节不会把错误一路带到报告里。6.2 提示词回归测试集改一次规则就全量回归一次规则清单和提示词会不断演化每次改动都可能影响历史案件的重算结果。建议维护一个回归语料库二三十个典型场景起步覆盖有贷款房、股权折价、外币存款、混同流水、多笔转账间隔这些常见情况。每次改提示词或换模型后把整个语料库重放一遍比对输出JSON的字段结构和程序对账结果。字段结构变化比金额变化更需要警惕一个字段改名字下游所有统计都会静默出错。6.3 导出JSON与Excel双快照保留计算口径归档时把模型原始输出、程序对账结果、业务规则清单三样打包目录名带上规则版本号与运行时间放在案件编号目录下。同时导出一份Excel便于人工复核Excel里的分配公式由程序生成不引用外部数据。原始数字、中间过程、最终结论三份材料始终对应同一份快照后续再跑回归时直接对比差异。下次换模型或改分配因子时先在回归集上重跑一遍确认所有历史快照的数字和结构仍能通过校验再进入正式批量任务。本文还有配套的精品资源点击获取