import json, sys
criteria = {"c1": lambda c: len(c.get("text", "")) <= 40,
"c2": lambda c: c.get("text", "").strip().endswith(("\u3002", "\uff01", "?", "!"))}
def rewrite_variants(question, n=3):
"""\u751f\u6210 n \u4e2a\u6539\u5199\u5019\u9009\uff08\u6a21\u62df\uff1a\u5b9e\u9645\u7528\u6a21\u578b\u591a\u6b21\u91c7\u6837\uff09"""
return [{"id": i, "text": f"\u5019\u9009{i}\uff1a{question}"} for i in range(n)]
def pick_best(cands, criteria):
"""\u6309\u5224\u636e\u9010\u6761\u7b5b\uff0c\u8fd4\u56de\u7b2c\u4e00\u4e2a\u5168\u90e8\u901a\u8fc7\u7684\u5019\u9009\uff08\u65e0\u5219 None\uff09"""
for c in cands:
if all(f(c) for f in criteria.values()):
return c
return None
def run(question, max_candidates=3):
"""\u7ed1\u5b9a\u4e0a\u9650\uff1a\u8d85\u9650\u8fd4\u56de\u5f53\u524d\u6700\u4f18 + \u672a\u6536\u655b\u6807\u8bb0"""
cands = rewrite_variants(question, max_candidates)
best = pick_best(cands, criteria)
return {"selected": None if best is None else best["id"],
"text": None if best is None else best["text"],
"passed": best is not None,
"candidates_tried": len(cands),
"unconverged": best is None}
if __name__ == "__main__":
print(json.dumps(run(sys.argv[1] if len(sys.argv) > 1 else "\u628a\u8fd9\u6bb5\u8bdd\u6539\u5199\u6210\u4e00\u4e2a\u6807\u9898"), ensure_ascii=False))
Claude Opus 4.5 tells a completely different story. Its accuracy actually drops from 78% to 74.3% while faithfulness jumps dramatically from 0.270 to 0.891 at N=5.