Skip to content

Commit 99940b9

Browse files
committed
first time upload file through git.
0 parents  commit 99940b9

File tree

6 files changed

+1874
-0
lines changed

6 files changed

+1874
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ai_keys.toml

_aichat.py

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
from zhipuai import ZhipuAI
2+
import openai
3+
from volcenginesdkarkruntime import Ark
4+
5+
6+
# zhipuai: glm-4-plus、glm-4-0520、glm-4 、glm-4-air、glm-4-airx、glm-4-long 、 glm-4-flashx 、 glm-4-flash
7+
# kimi:
8+
# ark:
9+
# claude:
10+
11+
class LLM_ai:
12+
_MODELS = {
13+
"zhipuai": {"url": "", # SDK use default
14+
"model": "glm-4-flash",
15+
"key": "3042e500736dc267a9ff23dd323be0e2.QFR0jHfrGHHfenme",
16+
"max_tokens": 8000,
17+
},
18+
"kimi": {"url": "https://api-sg.moonshot.ai/v1", # use openAI SDK
19+
"model": "moonshot-v1-8k",
20+
"key": "sk-czQ8MFRZQc5o1PVRSiPBlCuReupzfuVwKEJztUOMm7eAlSu6",
21+
"max_tokens": 8000,
22+
},
23+
"ark": {"url": "https://ark.cn-beijing.volces.com/api/v3", # 火山方舟大模型,抖音,豆包,扣子是一家
24+
"model": "ep-20240929221043-jsbgc",
25+
"key": "575007a8-66e2-43e5-90f9-e699c3345736",
26+
"max_tokens": 4000,
27+
},
28+
"claude": {"url": "https://api.gptapi.us/v1/chat/completions", # Legend's testing bed
29+
"model": "claude-3-5-sonnet",
30+
"key": "sk-vUVDEyOcoNDnUMtB3aF3FeFcD5534a8f89De99CcCcE8F7B2",
31+
"max_tokens": 8000,
32+
},
33+
}
34+
_llm = None
35+
_client = None
36+
37+
38+
def __init__(self, llm: str, model=""):
39+
self._llm = llm
40+
41+
if llm == "zhipuai":
42+
self._client = ZhipuAI(api_key=self._MODELS[llm]["key"])
43+
elif llm == "kimi":
44+
self._client = openai.OpenAI(api_key=self._MODELS[llm]["key"],
45+
base_url = self._MODELS[llm]["url"])
46+
elif llm == "ark":
47+
self._client = Ark(api_key=self._MODELS[llm]["key"],
48+
base_url=self._MODELS[llm]["url"])
49+
elif llm == "claude":
50+
self._client = openai.OpenAI(api_key=self._MODELS[llm]["key"],
51+
base_url=self._MODELS[llm]["url"])
52+
else:
53+
raise ValueError(f"Invalid llm: {llm}")
54+
55+
if not model == "":
56+
self._MODELS[llm]["model"] = model
57+
58+
# use stream model if pass_chunk is not None
59+
def chat(self, prompt: str, t: str, pass_chunk= None):
60+
if pass_chunk is None:
61+
response = self._client.chat.completions.create(
62+
model=self._MODELS[self._llm]["model"],
63+
messages = [
64+
{"role": "system", "content": prompt},
65+
{"role": "user", "content": t}
66+
],
67+
temperature = 0.3,
68+
)
69+
return response.choices[0].message.content
70+
else:
71+
response = self._client.chat.completions.create(
72+
model=self._MODELS[self._llm]["model"],
73+
messages=[
74+
{"role": "system", "content": prompt},
75+
{"role": "user", "content": t},
76+
],
77+
temperature=0.3,
78+
stream=True,
79+
max_tokens=self._MODELS[self._llm]["max_tokens"],
80+
)
81+
82+
answer=""
83+
for chunk in response:
84+
if chunk.choices[0].finish_reason is None:
85+
print(vars(chunk),"\n\n")
86+
pass_chunk(chunk.choices[0].delta.content)
87+
answer = answer + chunk.choices[0].delta.content
88+
else:
89+
break
90+
return answer
91+
# end of class LLM_ai

0 commit comments

Comments
 (0)