feat(check): 偏离栏直读、响应错位判断;复查复用和硬预算(C2)
- deviation.py:模型判已响应的条目,证据所在表格行的偏离格写着「偏离 / 部分满足」等 就改判负偏离;照抄要求格、响应格写的是别的内容的改判「响应可能对不上」 - reuse.py:按「提示词 + 要求 + 候选句原文」算缓存键,存模型原始结论;复查时内容没变、 证据找得回的条目直接沿用,不调模型 - 每次检查送给模型的字数有上限,超出的条目列为请人工核对,写进覆盖范围 - 开发集 17 份:召回 61% → 73%,负偏离未说明 64% → 90%,规矩投标文件问题数不变 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,7 +25,7 @@ from bid_doctor.ai import prompts
|
||||
from bid_doctor.ai import service as ai_service
|
||||
from bid_doctor.ai.providers.base import near_limit
|
||||
from bid_doctor.ai.service import OutputIncomplete, provider
|
||||
from bid_doctor.check import applicability, findings, match, rules
|
||||
from bid_doctor.check import applicability, deviation, findings, match, rules
|
||||
from bid_doctor.checklist import response_mode
|
||||
from bid_doctor.checklist import price
|
||||
from bid_doctor.checklist.extract import amount_yuan
|
||||
@@ -184,6 +184,8 @@ async def main() -> None:
|
||||
ap.add_argument("--v1", action="store_true", help="第 1 步的做法:提示词 v1、不带同一行的单元格(对比基线)")
|
||||
ap.add_argument("--no-modes", action="store_true", help="不按响应方式和「要不要回答」筛选(C12 之前的做法)")
|
||||
ap.add_argument("--rules-only", action="store_true", help="只重跑规则检查,写回已有运行的 results.json")
|
||||
ap.add_argument("--no-direct", action="store_true", help="不做偏离栏直读(对比用)")
|
||||
ap.add_argument("--no-mismatch", action="store_true", help="不做响应错位判断(对比用)")
|
||||
args = ap.parse_args()
|
||||
d = OUT / args.bid
|
||||
manifest = json.loads((d / "manifest.json").read_text())
|
||||
@@ -247,6 +249,10 @@ async def main() -> None:
|
||||
decisions = {i: applicability.decide(p, modes) for i, p in items.items()}
|
||||
items = {i: p for i, p in items.items() if decisions[i].match}
|
||||
results, stats = await match.run(ctx, uuid4(), items, docs, progress)
|
||||
if not args.no_direct:
|
||||
deviation.direct_read(results, docs)
|
||||
if not args.no_mismatch:
|
||||
deviation.mismatch_read(results, items, docs)
|
||||
if decisions:
|
||||
match.apply_modes(results, items, decisions)
|
||||
match.scanned_fallback(results, items, decisions, docs)
|
||||
|
||||
Reference in New Issue
Block a user