{"repo": "1523826455647/chatcaht-box", "files": {"llm_list.py": {"5ea39b9ae3de6b9ca15d650d20972368df6025bb": {"t": 1785768234.5147176, "n": 8961, "h": "ebf9a3e58aa000d2", "c": "from zhipuai import ZhipuAI\r\nimport json\r\nimport requests\r\nfrom http import HTTPStatus\r\nimport dashscope\r\nimport re\r\nfrom openai import OpenAI\r\nfrom sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler\r\nfrom sparkai.core.messages import ChatMessage\r\n\r\n\r\n# 智谱AI大模型:https://open.bigmodel.cn/\r\nchatglm_api=\"\"\r\n\r\n# 阿里云千问系列大模型(请确保所有模型开通计费管理!!!记得充钱):https://dashscope.console.aliyun.com/overview\r\nqwen_api=''\r\n\r\n# 百度千帆大模型(请确保所有模型开通计费管理!!!记得充钱):https://console.bce.baidu.com/qianfan/overview\r\nqianfan_api={\r\n \"api_key\":\"\",\r\n \"secret_key\":\"\"\r\n}\r\n\r\n# deepseek:https://platform.deepseek.com/usage\r\ndeepseek_api=\"\"\r\n\r\n# 星火大模型:https://console.xfyun.cn/services/cbm\r\nsparkai_api={\r\n \"SPARKAI_APP_ID\" : '',\r\n \"SPARKAI_API_SECRET\" : '',\r\n \"SPARKAI_API_KEY\" : '',\r\n}\r\n\r\n# 暗之月面:https://platform.moonshot.cn/console/info\r\nkimi_api=\"\"\r\n# 小小的备注\r\n\"\"\"\r\n目前使用来看qwen-max>=ERNIE-4.0系列>kimi>=qwen1.5-110b-chat>=deepseek>=glm4>sparkai-3.5\r\n但是kimi送了好多api,不用浪费了!\r\ndeepseek送的也多\r\n星火大模型虽然也多,但是由于它输入的格式是没有上下文的!并不太推荐使用这个,当然对于一问一答的一些常规的问题还是能用的\r\n\"\"\"\r\n\r\nmodel_qianfan_dir={\"ERNIE-3.5-8K\":\"completions\",\r\n \"ERNIE-Speed-8K\":\"ernie_speed\",\r\n \"ERNIE-3.5-8K-0205\":\"ernie-3.5-8k-0205\",\r\n \"ERNIE-3.5-8K-1222\":\"ernie-3.5-8k-1222\",\r\n \"ERNIE-3.5-4K-0205\":\"ernie-3.5-4k-0205\",\r\n \"ERNIE-3.5-8K(抢占式)\":\"completions_preemptible\",\r\n \"ERNIE-3.5-8K-Preview\":\"ernie-3.5-8k-preview\",\r\n \"ERNIE-Speed-128K(预览版)\":\"ernie-speed-128k\",\r\n \"ERNIE-Lite-8K-0922\":\"eb-instant\",\r\n \"ERNIE-Lite-8K-0308\":\"ernie-lite-8k\",\r\n \"ERNIE-Lite-128K-0419\":\"调用api\",\r\n \"ERNIE-Tiny-8K\":\"ernie-tiny-8k\",\r\n \"ERNIE-Character-8K-0321\":\"ernie-char-8k\",\r\n \"ERNIE-Functions-8K-0321\":\"YOU API\",\r\n \"Gemma-7B-it\":\"gemma_7b_it\",\r\n \"Yi-34B-Chat\":\"yi_34b_chat\",\r\n \"Mixtral-8x7B-Instruct\":\"mixtral_8x7b_instruct\",\r\n \"Mistral-7B-Instruct\":\"YOU API\",\r\n \"Qianfan-Chinese-Llama-2-7B-32K\":\"YOU API\",\r\n \"Qianfan-Chinese-Llama-2-7B\":\"qianfan_chinese_llama_2_7b\",\r\n \"llama2-13b-chat\":\"llama_2_13b\",\r\n \"llama3-8b-instruct\":\"llama_3_8b\",\r\n \"ERNIE-4.0-8K-0329\":\"ernie-4.0-8k-0329\",\r\n \"ERNIE-4.0-8K-0104\":\"ernie-4.0-8k-0104\",\r\n \"ERNIE-4.0-8K\":\"completions_pro\",\r\n \"ERNIE-3.5-128K\":\"ernie-3.5-128k\"}\r\nclass llm_model():\r\n def __init__(self):\r\n # 不再使用这个了\r\n self.model_list={\r\n # 智谱ai系列\r\n \"glm-4\":self.chatglm_model,\r\n \"glm-3-turbo\":self.chatglm_model,\r\n # 千问大模型系列\r\n \"qwen-turbo\": self.qwen_model,\r\n \"qwen-plus\": self.qwen_model,\r\n \"qwen-max\":self.qwen_model,\r\n \"qwen-max-0428\": self.qwen_model,\r\n \"qwen-max-0403\": self.qwen_model,\r\n \"qwen-max-0107\": self.qwen_model,\r\n \"qwen-7b-chat\": self.qwen_model,\r\n \"qwen-14b-chat\": self.qwen_model,\r\n \"qwen-72b-chat\": self.qwen_model,\r\n \"qwen1.5-7b-chat\": self.qwen_model,\r\n \"qwen1.5-14b-chat\": self.qwen_model,\r\n \"qwen1.5-72b-chat\": self.qwen_model,\r\n \"qwen1.5-110b-chat\": self.qwen_model,\r\n # 千帆大模型系列\r\n \"ERNIE-3.5-8K\":self.qianfan_model,\r\n \"ERNIE-3.5-8K-0205\":self.qianfan_model,\r\n \"ERNIE-4.0-8K-0104\": self.qianfan_model,\r\n \"ERNIE-4.0-8K-0329\": self.qianfan_model,\r\n # 暗之月面模型\r\n \"deepseek-chat\":self.deepseek_model,\r\n # 星火大模型\r\n \"星火大模型v3.5\": self.sparkai_model,\r\n \"星火大模型v3.0\": self.sparkai_model,\r\n \"星火大模型v2.0\": self.sparkai_model,\r\n \"星火大模型v1.5\": self.sparkai_model,\r\n # 暗之月面大模型kimi\r\n \"moonshot-v1-8k\":self.kimi_model,\r\n \"moonshot-v1-32k\": self.kimi_model,\r\n \"moonshot-v1-128k\": self.kimi_model,\r\n }\r\n\r\n self.model_qwen_list=[\"qwen-turbo\",\"qwen-long\",\"qwen-plus\",\"qwen-max\",\"qwen-max-0428\",\"qwen-max-0403\",\"qwen-max-0107\",\"qwen-7b-chat\",\"qwen-14b-chat\",\"qwen-72b-chat\",\"qwen1.5-7b-chat\",\"qwen1.5-14b-chat\",\"qwen1.5-72b-chat\",\"qwen1.5-110b-chat\"]\r\n self.model_qianfan_list=[\"ERNIE-3.5-8K\",\"ERNIE-3.5-128K\",\"ERNIE-3.5-8K-0205\",\"ERNIE-4.0-8K\",\"ERNIE-4.0-8K-0104\",\"ERNIE-4.0-8K-0329\",\"ERNIE-3.5-8K-0205\",\"ERNIE-Speed-128K(预览版)\"]\r\n self.model_zhipuai_list=[\"glm-4\",\"glm-3-turbo\",\"glm-4-0520\",\"glm-4-air\",\"glm-4-airx\",\"glm-4-flash\"]\r\n self.model_kimi_list=[\"moonshot-v1-8k\",\"moonshot-v1-32k\",\"moonshot-v1-128k\"]\r\n self.model_sparkai_list=[\"星火大模型v3.5\",\"星火大模型v3.0\"]\r\n self.model_deepseek_list=[\"deepseek-chat\"]\r\n\r\n # 熟悉的智谱ai\r\n def chatglm_model(self,model,question):\r\n client = ZhipuAI(api_key=chatglm_api)\r\n response = client.chat.completions.create(\r\n model=model, # 填写需要调用的模型名称\r\n messages=question,\r\n )\r\n return response.choices[0].message.content\r\n\r\n # 千问大模型\r\n def qwen_model(self,model,question):\r\n dashscope.api_key = qwen_api\r\n response = dashscope.Generation.call(model=model,\r\n messages=question,\r\n # 将输出设置为\"message\"格式\r\n result_format='message')\r\n\r\n # 检查响应是否成功\r\n if response.status_code == HTTPStatus.OK:\r\n return response.output.choices[0]['message']['content']\r\n else:\r\n print(\"请求失败:\", response.status_code,\"返回错误信息:\",response)\r\n\r\n # 百度千帆大模型\r\n def get_access_token(self):\r\n url = \"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}\".format(\r\n qianfan_api[\"api_key\"], qianfan_api[\"secret_key\"])\r\n payload = json.dumps(\"\")\r\n headers = {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n response = requests.request(\"POST\", url, headers=headers, data=payload)\r\n return response.json().get(\"access_token\")\r\n\r\n def qianfan_model(self,model,question):\r\n url = \"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/{}?access_token=\".format(\r\n model_qianfan_dir[model]) + self.get_access_token()\r\n # print(url)\r\n payload = json.dumps({\r\n \"messages\": question\r\n })\r\n headers = {\r\n 'Content-Type': 'application/json'\r\n }\r\n response = requests.request(\"POST\", url, headers=headers, data=payload)\r\n text = re.findall(r'\"result\":(.*?),', response.text)[0].replace(\"\\n\", \"\")\r\n return text\r\n\r\n # deepseek大模型(这里的model是为了统一格式,也为了后续推出更多的model)\r\n def deepseek_model(self,model,question):\r\n client = OpenAI(api_key=deepseek_api, base_url=\"https://api.deepseek.com\")\r\n response = client.chat.completions.create(\r\n model=\"deepseek-chat\",\r\n messages=question,\r\n stream=False\r\n )\r\n # print(response.choices[0].message.content)\r\n return response.choices[0].message.content\r\n\r\n # 星火大模型\r\n def sparkai_model(self,model,question):\r\n if model == \"星火大模型v3.5\":\r\n SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'\r\n SPARKAI_DOMAIN = 'generalv3.5'\r\n elif model == \"星火大模型v3.0\":\r\n SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.1/chat'\r\n SPARKAI_DOMAIN = 'generalv3'\r\n # 2.0已经被删除了\r\n elif model == \"星火大模型v2.0\":\r\n SPARKAI_URL = 'wss://spark-api.xf-yun.com/v2.1/chat'\r\n SPARKAI_DOMAIN = 'generalv2'\r\n elif model == \"星火大模型v1.5\":\r\n SPARKAI_URL = 'wss://spark-api.xf-yun.com/v1.1/chat'\r\n SPARKAI_DOMAIN = 'general'\r\n spark = ChatSparkLLM(\r\n spark_api_url=SPARKAI_URL,\r\n spark_app_id=sparkai_api[\"SPARKAI_APP_ID\"],\r\n spark_api_key=sparkai_api[\"SPARKAI_API_KEY\"],\r\n spark_api_secret=sparkai_api[\"SPARKAI_API_SECRET\"],\r\n spark_llm_domain=SPARKAI_DOMAIN,\r\n streaming=False,\r\n )\r\n messages = [ChatMessage(\r\n role=\"user\",\r\n content=question\r\n )]\r\n handler = ChunkPrintHandler()\r\n a = spark.generate([messages], callbacks=[handler])\r\n b = list(a)\r\n response=b[0][1][0][0].text\r\n return response\r\n # kimi大模型\r\n def kimi_model(self,model,question):\r\n client = OpenAI(\r\n api_key=kimi_api,\r\n base_url=\"https://api.moonshot.cn/v1\",\r\n )\r\n\r\n completion = client.chat.completions.create(\r\n model=model,\r\n messages=question,\r\n temperature=0.3,\r\n )\r\n\r\n # print(completion.choices[0].message.content)\r\n return completion.choices[0].message.content\r\n"}}}}