File size: 1,259 Bytes
3fd1a35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env python3
"""Prove a selected context is real, then verify reset after the long prompt."""
import argparse
import json
import urllib.request

p = argparse.ArgumentParser()
p.add_argument("--url", required=True)
p.add_argument("--digits", type=int, default=4200)
args = p.parse_args()
opener = urllib.request.build_opener(urllib.request.ProxyHandler({}))


def chat(text, count):
    body = {"model": "mindnano-ling3-tiny", "messages": [{"role": "user", "content": text}],
            "max_tokens": count, "temperature": 0}
    req = urllib.request.Request(args.url + "/v1/chat/completions", json.dumps(body).encode(),
                                 {"Content-Type": "application/json"})
    with opener.open(req, timeout=300) as response:
        return json.load(response)


a = chat("请只回答一个中文问候。", 16)
long = chat("这是测试编号,请只回答收到:" + "1" * args.digits, 1)
assert long["usage"]["prompt_tokens"] > 4096, long["usage"]
b = chat("请只回答一个中文问候。", 16)
assert a["choices"][0]["message"]["content"] == b["choices"][0]["message"]["content"], "long-context reset leaked state"
print(json.dumps({"passed": True, "long_request": long, "reset_reply": b}, ensure_ascii=False, indent=2))