框架: B4-S4收尾——审核分页≤30卡/批(放量防爆,同批互见保family检出)

This commit is contained in:
zizi 2026-07-13 18:44:51 +08:00
parent 6a8b7a9ba6
commit 467d9495f8

View File

@ -88,17 +88,22 @@ def review(work_id, batch, model, dry_run):
if not rows:
click.echo("无待审卡")
return
cards_json = json.dumps([{"idx": i + 1, **r[1]} for i, r in enumerate(rows)],
ensure_ascii=False, indent=1)
all_reviews = {}
for role, desc in ROLES.items():
content, usage = chat(
REVIEW_PROMPT.format(criteria=CRITERIA, n=len(rows), cards=cards_json),
model=model, system=SYSTEM_TMPL.format(role_desc=desc))
data = extract_json(content)
all_reviews[role] = {int(r["idx"]): r for r in data.get("reviews", []) if r.get("idx")}
click.echo(f"[{role}] 评 {len(data.get('reviews', []))} 卡 "
f"(in={usage.get('prompt_tokens')}) 总评: {data.get('overall', '')[:80]}")
# 分页 ≤30 卡/批:放量后单调用塞全库必爆;同批互见保 family 检出
PAGE = 30
all_reviews = {role: {} for role in ROLES}
for p0 in range(0, len(rows), PAGE):
page = rows[p0:p0 + PAGE]
cards_json = json.dumps([{"idx": p0 + i + 1, **r[1]} for i, r in enumerate(page)],
ensure_ascii=False, indent=1)
for role, desc in ROLES.items():
content, usage = chat(
REVIEW_PROMPT.format(criteria=CRITERIA, n=len(page), cards=cards_json),
model=model, system=SYSTEM_TMPL.format(role_desc=desc))
data = extract_json(content)
all_reviews[role].update(
{int(r["idx"]): r for r in data.get("reviews", []) if r.get("idx")})
click.echo(f"[{role}] 批{p0 // PAGE + 1} 评 {len(data.get('reviews', []))} 卡 "
f"(in={usage.get('prompt_tokens')}) 总评: {data.get('overall', '')[:80]}")
# 汇总判定并写库(按序号匹配)
stats = {"pass": 0, "revise": 0, "reject": 0}
for i, (cid, payload) in enumerate(rows):