法律长文档里模型最容易把“找到了相似条款”写成“条款支持了这个结论”。检索正确与法律解释正确之间还有很长一段路。先把引用做成可检查对象至少能拦下不存在的页码、错文档和改写过的引文。这里不用真实案件也不评价某份合同的法律效力。我们构造两份教学材料只验证文档ID、字符跨度和逐字片段。这样的例子范围很窄却比声称一次读完20万字就做对判决更容易复核。引文应带着原文位置回来答案可以包含多个主张每个主张关联一组引文。引用校验器检查“原文有没有”之后再由规则或领域审阅检查“原文支不支持”。这两个状态不能合成一个布尔值否则字符串匹配通过会被误读成推理通过。from dataclasses import dataclass dataclass(frozenTrue) class Quote: document: str start: int end: int text: str def locate(quote, documents): source documents.get(quote.document) if source is None: return unknown_document if not 0 quote.start quote.end len(source): return invalid_span return located if source[quote.start:quote.end] quote.text else mismatch docs {D1: 教学材料交付地点为仓库甲。, D2: 教学补充本段只变更交付时间。} start docs[D2].index(只变更) q Quote(D2, start, start len(只变更交付时间), 只变更交付时间) assert locate(q, docs) located assert locate(Quote(D3, 0, 2, 教学), docs) unknown_document assert locate(Quote(D2, start, q.end, 同时变更交付地点), docs) mismatch answer {claim: 交付地点已改成仓库乙, quote_status: locate(q, docs), support_status: needs_review} assert answer[quote_status] located assert answer[support_status] ! supported print(quote location checked; legal support remains ungraded: PASS)长上下文评测还需要负例把同一句话放在另一个附件或者把“仅变更时间”改成“同时变更地点”都应成为不同题目。还要记录材料版本后签署的附件未必适用于所有主体缺一处确认也不应由模型脑补。Kimi近期官方型号列表提供长上下文模型但容量只表示可接收的序列范围不等于法律可靠性承诺。API文档 Anthropic评测方法则可作为设计任务与评分器的工程参考不能当作法律判断来源。这段程序已在本地验证引用定位和负例拒绝没有调用模型没有处理真实卷宗也没有计算法律问答准确率。后续实验需要经授权的材料、明确的领域真值和独立审阅者对于只能定位、尚不能判断支持关系的答案状态就应停在needs_review。