tushare 1.4.12__py3-none-any.whl → 1.4.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tushare/__init__.py +1 -1
- tushare/pro/llm.py +30 -38
- {tushare-1.4.12.dist-info → tushare-1.4.13.dist-info}/METADATA +1 -1
- {tushare-1.4.12.dist-info → tushare-1.4.13.dist-info}/RECORD +7 -7
- {tushare-1.4.12.dist-info → tushare-1.4.13.dist-info}/LICENSE +0 -0
- {tushare-1.4.12.dist-info → tushare-1.4.13.dist-info}/WHEEL +0 -0
- {tushare-1.4.12.dist-info → tushare-1.4.13.dist-info}/top_level.txt +0 -0
tushare/__init__.py
CHANGED
tushare/pro/llm.py
CHANGED
@@ -14,14 +14,14 @@ BASE_URL = "http://api.waditu.com/dataapi"
|
|
14
14
|
API_KEY_PREFIX = "tsgpt-"
|
15
15
|
|
16
16
|
|
17
|
-
class
|
17
|
+
class GPTClient:
|
18
18
|
def __init__(self, token=None, timetout=120):
|
19
19
|
if not token:
|
20
20
|
token = get_token()
|
21
21
|
self.token = token
|
22
22
|
self.timeout = timetout
|
23
23
|
|
24
|
-
def
|
24
|
+
def _request(self, model, messages, temperature=None, max_tokens=None, stream=True, pretty=False) -> requests.Response:
|
25
25
|
"""
|
26
26
|
model string 模型名称, doubao-pro-128k
|
27
27
|
messages list 消息列表
|
@@ -36,17 +36,20 @@ class LlmClient:
|
|
36
36
|
resp = requests.post(
|
37
37
|
f'{BASE_URL}/llm/{model}',
|
38
38
|
json={"params": {
|
39
|
-
"stream":
|
39
|
+
"stream": stream,
|
40
40
|
"messages": messages,
|
41
41
|
"temperature": temperature,
|
42
42
|
"max_tokens": max_tokens
|
43
43
|
}},
|
44
44
|
headers={"Authorization": f"tstoken-{self.token}"},
|
45
|
-
timeout=self.timeout
|
45
|
+
timeout=self.timeout, stream=stream
|
46
46
|
)
|
47
47
|
if resp.status_code != 200:
|
48
48
|
raise Exception(f"请求出现错误,{resp.content}")
|
49
|
+
return resp
|
49
50
|
|
51
|
+
def gpt_query(self, model, messages, temperature=None, max_tokens=None, pretty=False):
|
52
|
+
resp = self._request(model, messages, temperature, max_tokens, False, pretty)
|
50
53
|
resp_data = resp.json()
|
51
54
|
if resp_data.get('code') not in (0, None):
|
52
55
|
raise Exception(resp_data['msg'])
|
@@ -55,32 +58,8 @@ class LlmClient:
|
|
55
58
|
else:
|
56
59
|
return resp_data
|
57
60
|
|
58
|
-
def
|
59
|
-
|
60
|
-
model string 模型名称, doubao-pro-128k
|
61
|
-
messages list 消息列表
|
62
|
-
[
|
63
|
-
{
|
64
|
-
"role": "user",
|
65
|
-
"content": "Hello World"
|
66
|
-
}
|
67
|
-
]
|
68
|
-
pretty bool 是否只返回回答内容文本
|
69
|
-
"""
|
70
|
-
resp = requests.post(
|
71
|
-
f'{BASE_URL}/llm/{model}',
|
72
|
-
json={"params": {
|
73
|
-
"stream": True,
|
74
|
-
"messages": messages,
|
75
|
-
"temperature": temperature,
|
76
|
-
"max_tokens": max_tokens
|
77
|
-
}},
|
78
|
-
headers={"Authorization": f"tstoken-{self.token}"},
|
79
|
-
timeout=self.timeout, stream=True
|
80
|
-
)
|
81
|
-
if resp.status_code != 200:
|
82
|
-
raise Exception(f"请求出现错误,{resp.content}")
|
83
|
-
|
61
|
+
def gpt_stream(self, model, messages, temperature=None, max_tokens=None, pretty=False):
|
62
|
+
resp = self._request(model, messages, temperature, max_tokens, True, pretty)
|
84
63
|
for e in sseclient.SSEClient(resp).events():
|
85
64
|
e_data = json.loads(e.data)
|
86
65
|
if pretty:
|
@@ -88,24 +67,31 @@ class LlmClient:
|
|
88
67
|
else:
|
89
68
|
yield e_data
|
90
69
|
|
70
|
+
def gpt(self, model, query) -> str:
|
71
|
+
messages = [{
|
72
|
+
"role": "user",
|
73
|
+
"content": query
|
74
|
+
}]
|
75
|
+
return self.gpt_query(model, messages, pretty=True)
|
76
|
+
|
91
77
|
|
92
|
-
def
|
93
|
-
c =
|
94
|
-
dd = c.
|
78
|
+
def test_gpt_query():
|
79
|
+
c = GPTClient()
|
80
|
+
dd = c.gpt_query("doubao-pro-128k", [{
|
95
81
|
"role": "user",
|
96
82
|
"content": "你好"
|
97
83
|
}])
|
98
84
|
print(dd)
|
99
|
-
dd = c.
|
85
|
+
dd = c.gpt_query("doubao-pro-128k", [{
|
100
86
|
"role": "user",
|
101
87
|
"content": "你好"
|
102
88
|
}], pretty=True)
|
103
89
|
print(dd)
|
104
90
|
|
105
91
|
|
106
|
-
def
|
107
|
-
c =
|
108
|
-
dd = c.
|
92
|
+
def test_gpt_stream():
|
93
|
+
c = GPTClient()
|
94
|
+
dd = c.gpt_stream("doubao-pro-128k", [
|
109
95
|
{
|
110
96
|
"role": "user",
|
111
97
|
"content": "你好"
|
@@ -114,7 +100,7 @@ def test_chart_stream():
|
|
114
100
|
for d in dd:
|
115
101
|
print(d)
|
116
102
|
|
117
|
-
dd = c.
|
103
|
+
dd = c.gpt_stream("doubao-pro-128k", [
|
118
104
|
{
|
119
105
|
"role": "user",
|
120
106
|
"content": "你好"
|
@@ -122,3 +108,9 @@ def test_chart_stream():
|
|
122
108
|
], pretty=True)
|
123
109
|
for d in dd:
|
124
110
|
print(d)
|
111
|
+
|
112
|
+
|
113
|
+
def test_gpt():
|
114
|
+
c = GPTClient()
|
115
|
+
dd = c.gpt("doubao-pro-128k", "你好")
|
116
|
+
print(dd)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
tushare/__init__.py,sha256=
|
1
|
+
tushare/__init__.py,sha256=qwKDSMvh3WbshnQP2JjgCyIzZZb874LlAvhB9VAYlm4,4765
|
2
2
|
tushare/bond/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
tushare/bond/bonds.py,sha256=PJM0xDiWZDpOPwDtbEU9PdP0M_Gu0c599YuB1rbZ3r8,232
|
4
4
|
tushare/coins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -19,7 +19,7 @@ tushare/internet/indexes.py,sha256=oteQCv0k2X0pbhXRHwMSviD1AowJWE6xRjKkqr5RNCo,3
|
|
19
19
|
tushare/pro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
20
|
tushare/pro/client.py,sha256=w7LfXtlmSd4Aiq7Bz5-tPFfkfjrPS_7jroUiRs7BUWw,1388
|
21
21
|
tushare/pro/data_pro.py,sha256=SOHbK-j9CmZguuv0CLIT-Z3hUynEy96mbvvhrGN6y9I,10883
|
22
|
-
tushare/pro/llm.py,sha256=
|
22
|
+
tushare/pro/llm.py,sha256=TQi0Zk-UZESBaH9qwEY0f4VofrGkCl-4ajFn-IksW2s,3355
|
23
23
|
tushare/stock/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
24
|
tushare/stock/billboard.py,sha256=vCrbN7-NGXSpXMc8jq7NcjjHyu9pTcr4uXp559iA1wA,12833
|
25
25
|
tushare/stock/classifying.py,sha256=3yWqlLhgj2irk-9ksKWFFS5HY-SnjfEr5erwJxBidG8,10539
|
@@ -72,8 +72,8 @@ tushare/util/verify_token.py,sha256=cuV3RErWbOC318NANCYL6K1LKZ3wSAL2yMwZHA7tD3s,
|
|
72
72
|
tushare/util/protobuf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
73
73
|
tushare/util/protobuf/funcs.py,sha256=UCdK8FxTyjPZsNzoEeXqYzqrQXUmRMvW5hua6GPA66A,779
|
74
74
|
tushare/util/protobuf/response_pb2.py,sha256=vJH9ONkDuJlg6y-q1PvuDZoviKrK7hzNtMieQHK45DI,11347
|
75
|
-
tushare-1.4.
|
76
|
-
tushare-1.4.
|
77
|
-
tushare-1.4.
|
78
|
-
tushare-1.4.
|
79
|
-
tushare-1.4.
|
75
|
+
tushare-1.4.13.dist-info/LICENSE,sha256=C2j55UI0Ul-1-wA1-rn7OaY6b3vGl4YukiyvYzHsU9o,1503
|
76
|
+
tushare-1.4.13.dist-info/METADATA,sha256=DC65n8RDTT4yM6ZOVjaXRLlKwywunlkC3OaqYzEX_U4,2839
|
77
|
+
tushare-1.4.13.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
78
|
+
tushare-1.4.13.dist-info/top_level.txt,sha256=HHOxMuqc31KuAIcxpE0t5dAPMKbaiRtjsjTMFd7FlXI,8
|
79
|
+
tushare-1.4.13.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|