1+ from core import *
2+ import requests
3+ import json
4+
5+ def test_unstream_logprobs ():
6+ data = {"stream" : False , "messages" : [
7+ {
8+ "role" : "system" ,
9+ "content" : "You are a helpful assistant."
10+ },
11+ {
12+ "role" : "user" ,
13+ "content" : "牛顿的三大运动定律是什么?"
14+ },
15+
16+ ],"max_tokens" : 3 ,}
17+ payload = build_request_payload (TEMPLATE , data )
18+ req = send_request (URL , payload )
19+ print (json .dumps (req .json (), indent = 2 , ensure_ascii = False ))
20+ req = req .json ()
21+ assert req ["choices" ][0 ]["message" ]["content" ] == "牛顿的"
22+ assert req ["choices" ][0 ]["logprobs" ]["content" ][0 ]["token" ] == "牛顿"
23+ assert req ["choices" ][0 ]["logprobs" ]["content" ][0 ]["logprob" ] == - 0.031025361269712448
24+ assert req ["choices" ][0 ]["logprobs" ]["content" ][0 ]["top_logprobs" ][0 ] == {"token" : "牛顿" , "logprob" : - 0.031025361269712448 , "bytes" : None , "top_logprobs" : None }
25+ assert req ["usage" ] == {"prompt_tokens" : 22 , "total_tokens" : 25 , "completion_tokens" : 3 , "prompt_tokens_details" : {"cached_tokens" : 0 }}
26+
27+ def test_unstream_unlogprobs ():
28+ data = {"stream" : False , "logprobs" : False , "top_logprobs" : None , "messages" : [
29+ {
30+ "role" : "system" ,
31+ "content" : "You are a helpful assistant."
32+ },
33+ {
34+ "role" : "user" ,
35+ "content" : "牛顿的三大运动定律是什么?"
36+ },
37+
38+ ],"max_tokens" : 3 ,}
39+ payload = build_request_payload (TEMPLATE , data )
40+ req = send_request (URL , payload )
41+ print (json .dumps (req .json (), indent = 2 , ensure_ascii = False ))
42+ req = req .json ()
43+ assert req ["choices" ][0 ]["message" ]["content" ] == "牛顿的"
44+ assert req ["choices" ][0 ]["logprobs" ] == None
45+ assert req ["usage" ] == {"prompt_tokens" : 22 , "total_tokens" : 25 , "completion_tokens" : 3 , "prompt_tokens_details" : {"cached_tokens" : 0 }}
46+
47+ def test_stream_logprobs ():
48+ data = {"stream" : True , "messages" : [
49+ {
50+ "role" : "system" ,
51+ "content" : "You are a helpful assistant."
52+ },
53+ {
54+ "role" : "user" ,
55+ "content" : "牛顿的三大运动定律是什么?"
56+ },
57+
58+ ],"max_tokens" : 3 ,}
59+ payload = build_request_payload (TEMPLATE , data )
60+ req = send_request (URL , payload )
61+ result_dic = {}
62+ for line in req .iter_lines ():
63+ if not line :
64+ continue
65+ decoded = line .decode ("utf-8" ).removeprefix ("data: " )
66+ if decoded == "[DONE]" :
67+ break
68+
69+ chunk = json .loads (decoded )
70+ content = chunk ["choices" ][0 ]["delta" ].get ("content" )
71+ if content :
72+ result_dic = chunk
73+ print (json .dumps (result_dic , indent = 2 , ensure_ascii = False ))
74+ break
75+
76+ assert result_dic ["choices" ][0 ]["delta" ]["content" ] == "牛顿"
77+ assert result_dic ["choices" ][0 ]["logprobs" ]["content" ][0 ]["token" ] == "牛顿"
78+ assert result_dic ["choices" ][0 ]["logprobs" ]["content" ][0 ]["logprob" ] == - 0.031025361269712448
79+ assert result_dic ["choices" ][0 ]["logprobs" ]["content" ][0 ]["top_logprobs" ][0 ] == {"token" : "牛顿" , "logprob" : - 0.031025361269712448 }
80+
81+ def test_stream_unlogprobs ():
82+ data = {"stream" : True , "logprobs" : False , "top_logprobs" : None , "messages" : [
83+ {
84+ "role" : "system" ,
85+ "content" : "You are a helpful assistant."
86+ },
87+ {
88+ "role" : "user" ,
89+ "content" : "牛顿的三大运动定律是什么?"
90+ },
91+
92+ ],"max_tokens" : 3 ,}
93+ payload = build_request_payload (TEMPLATE , data )
94+ req = send_request (URL , payload )
95+ result_dic = {}
96+ for line in req .iter_lines ():
97+ if not line :
98+ continue
99+ decoded = line .decode ("utf-8" ).removeprefix ("data: " )
100+ if decoded == "[DONE]" :
101+ break
102+
103+ chunk = json .loads (decoded )
104+ content = chunk ["choices" ][0 ]["delta" ].get ("content" )
105+ if content :
106+ result_dic = chunk
107+ print (json .dumps (result_dic , indent = 2 , ensure_ascii = False ))
108+ break
109+
110+ assert result_dic ["choices" ][0 ]["delta" ]["content" ] == "牛顿"
111+ assert result_dic ["choices" ][0 ]["logprobs" ] == None
112+
113+ if __name__ == '__main__' :
114+ test_stream_unlogprobs ()
0 commit comments