GLM-Legal 的回答里法条编号对不上时,要判断的不是“信判断还是信引用”,而是每一段能不能被核对。做法是把一段回答拆成判断、法条引用、事实描述三栏,先拿权威法条库核对编号是否存在、条文内容是否一致、是否已经修订,再决定这一段是采纳、改写还是弃用。编号对得上的部分,判断才有依据;编号对不上、或内容与权威文本冲突的部分,只能当线索,不直接写进正式意见。
法条编号对不上时,顺序是先核对引用、再看判断:把回答拆成判断、法条、事实三栏,用官方公布文本或本地法条库核对编号是否存在、条文内容是否一致、是否已被修订。编号真实且内容一致的部分可以作为依据;编号查不到或内容冲突的部分只当线索,不写进正式意见。边界是:核对范围以你能访问的权威文本为准,核对结果需要留记录,避免后续再被同一段回答带偏。
在会话记录里定位法条编号出现的段落
先回到原始会话记录,不要用记忆里的转述版本。把模型提到法条编号的句子整句保留,标出三样东西:法条编号原文、紧跟编号后的条文摘要、提问当时的上下文问题。上下文决定同一编号能不能用:合同履行场景下引用的条文,放到侵权场景里可能就不适用。
会话导出成一行一条的 jsonl 时,可以先用下面的命令列出所有疑似编号,再按编号回看整句。命令只负责定位,不替代后面的内容核对。
# 列出全部疑似法条编号及出现次数
grep -oE '第[一二三四五六七八九十百千零〇0-9]+条' session.jsonl | sort | uniq -c | sort -nr
# 定位某条编号所在的整句,回看上下文
grep -nE '第[一二三四五六七八九十百千零〇0-9]+条' session.jsonl
# 会话是 JSON 数组时,用 jq 只抽正文,减少噪声
jq -r '.messages[] | select(.role=="assistant") | .content' session.json | grep -nE '第[一二三四五六七八九十百千零〇0-9]+条'
把定位结果落成一张表,后面的核对记录直接对着这张表逐行做,避免漏掉编号。
| 编号原文 | 出现位置 | 条文摘要 | 上下文问题 |
|---|---|---|---|
| 《民法典》第五百七十七条 | 第 2 轮第 3 段 | 回答里写的责任表述 | 用户问的是合同是否成立 |
| (占位,替换为实际编号) | 第 2 轮第 5 段 | 回答里写的摘要 | 用户问的是履行期限 |
把模型回答拆成结论、法条、事实三栏
把判断和引用混在一起,是这类回答最容易误导人的地方。逐句归类,一句话只归一类:出现“因此、应当、可以要求”的是判断,直接引条文的是法条引用,讲当事人、时间、合同、事实经过的是事实描述。归类完之后,专门挑出判断栏里没有对应编号的句子,这些句子即使语气很确定,也缺少可核对支撑。
| 原句 | 归类 | 对应编号 | 处理 |
|---|---|---|---|
| 因此可以要求对方承担违约责任 | 判断 | 《民法典》第五百七十七条 | 待核对 |
| 《民法典》第五百七十七条规定…… | 法条引用 | 第五百七十七条 | 待核对 |
| 双方在某日签订了合同 | 事实描述 | 无 | 需要看材料 |
| 实践中通常会被支持 | 判断 | 无 | 无编号支撑,降级为线索 |
用权威法条库核对编号和条文内容
核对只查三件事:编号是否真实存在、条文内容是否与回答里的摘要一致、该条文是否已被修订或被新条文替代。渠道建议用官方公布文本,或者你本地维护的法条库;两者都拿不到,就注明“当前无法核对”,不要凭印象把内容补上。核对结果写成结构化记录并留档,下次引用同一段回答时直接看记录。
法条编号核对记录
- 引用原文: 《民法典》第五百七十七条(示例,替换为实际编号)
- 编号是否存在: 是 / 否
- 条文内容是否与回答摘要一致: 一致 / 部分一致 / 冲突
- 是否已修订或被替代: 无 / 有(列出替代编号)
- 核对渠道: 官方公布文本 / 本地法条库
- 适用条件是否被省略: 是 / 否
- 处理判断: 可引用 / 仅作线索 / 弃用
- 核对人:
如果编号存在、但回答把适用范围写宽了,例如省略了前提条件,要记成“部分一致”,不能按“一致”处理,因为这类压缩最容易让判断跑偏。
区分模型推断与可验证引用
把回答逐句标注成三档,能避免用一句“模型说的”概括整段回答。可验证是指编号存在、条文内容与摘要一致、且没有修订冲突;部分可验证是指编号存在但摘要被压缩、条件被省略;不可验证是指编号查不到、内容与权威文本冲突,或者整句没有编号。标注之后通常会发现,一段看起来很完整的回答,只有少数几句落进可验证这一档。
| 档位 | 判断依据 | 处理方式 |
|---|---|---|
| 可验证 | 编号存在,内容一致,无修订 | 可作为依据引用,保留编号 |
| 部分可验证 | 编号存在,摘要被压缩或条件被省略 | 补回条件后再用,或只作参考 |
| 不可验证 | 编号查不到、内容冲突、无编号 | 作为线索,不进入正式意见 |
决定采纳、改写或弃用该段回答
最后按段给处理判断,不要对整篇回答一刀切。满足采纳条件的段落,保留判断并附上核对过的编号;只到部分可验证的段落,改写要点是补回适用条件和条文范围,把模型自行添加的推断删掉;不可验证的段落直接弃用,在记录里写明原因,例如编号查不到、条文内容冲突、条文已失效或被替代。
采纳条件可以固定成四条:编号在权威文本中存在;条文内容与回答摘要一致;没有修订或替代;上下文问题落在该条文的适用范围内。四条同时满足再采纳,缺一条就先改写或降级为线索。这样处理后,对不上的编号会被明确标出,后续再引用同一段内容时可以直接看核对记录,而不是重新凭感觉判断。