count.py 1.2 KB

1234567891011121314151617
  1. """Greedy count to 200, N times: any wrong line is a corrupt run. usage: count.py [N]"""
  2. import json, os, sys, urllib.request
  3. BASE = os.environ.get("GATE_URL", "http://127.0.0.1:8002")
  4. MODEL = os.environ.get("GATE_MODEL", "glm53")
  5. N = int(sys.argv[1]) if len(sys.argv) > 1 else 5
  6. bad_runs = 0
  7. for i in range(N):
  8. body = {"model": MODEL, "max_tokens": 700, "temperature": 0, "chat_template_kwargs": {"enable_thinking": False},
  9. "messages": [{"role": "user", "content": "Count from 1 to 200, one number per line, digits only."}]}
  10. r = urllib.request.Request(BASE + "/v1/chat/completions", data=json.dumps(body).encode(), headers={"Content-Type": "application/json"})
  11. d = json.load(urllib.request.urlopen(r, timeout=300)); txt = d["choices"][0]["message"]["content"] or ""
  12. nums = [l.strip() for l in txt.strip().split("\n")]
  13. clean = nums == [str(k) for k in range(1, 201)]
  14. bad_runs += (not clean)
  15. first_bad = next((j for j, (a, b) in enumerate(zip(nums, [str(k) for k in range(1, 201)])) if a != b), None)
  16. print(f"run {i}: {'CLEAN' if clean else 'CORRUPT'} tokens={d['usage']['completion_tokens']} lines={len(nums)} first_bad_line={first_bad}")
  17. print(f"corrupt {bad_runs}/{N}")