Explorar o código

feat: add global model check

zhayujie %!s(int64=2) %!d(string=hai) anos
pai
achega
5ff753a492
Modificáronse 2 ficheiros con 24 adicións e 2 borrados
  1. 2 0
      common/const.py
  2. 22 2
      plugins/godcmd/godcmd.py

+ 2 - 0
common/const.py

@@ -7,3 +7,5 @@ CHATGPTONAZURE = "chatGPTOnAzure"
 LINKAI = "linkai"
 
 VERSION = "1.3.0"
+
+MODEL_LIST = ["gpt-3.5-turbo-16k", "gpt-4", "wenxin", "xunfei"]

+ 22 - 2
plugins/godcmd/godcmd.py

@@ -4,7 +4,6 @@ import json
 import os
 import random
 import string
-import traceback
 from typing import Tuple
 
 import plugins
@@ -12,7 +11,6 @@ from bridge.bridge import Bridge
 from bridge.context import ContextType
 from bridge.reply import Reply, ReplyType
 from common import const
-from common.log import logger
 from config import conf, load_config, global_config
 from plugins import *
 
@@ -32,6 +30,10 @@ COMMANDS = {
         "args": ["口令"],
         "desc": "管理员认证",
     },
+    "model": {
+        "alias": ["model", "模型"],
+        "desc": "查看和设置全局模型",
+    },
     "set_openai_api_key": {
         "alias": ["set_openai_api_key"],
         "args": ["api_key"],
@@ -257,6 +259,18 @@ class Godcmd(Plugin):
                                 break
                         if not ok:
                             result = "插件不存在或未启用"
+                elif cmd == "model":
+                    if not isadmin and not self.is_admin_in_group(e_context["context"]):
+                        ok, result = False, "需要管理员权限执行"
+                    elif len(args) == 0:
+                        ok, result = True, "当前模型为: " + str(conf().get("model"))
+                    elif len(args) == 1:
+                        if args[0] not in const.MODEL_LIST:
+                            ok, result = False, "模型名称不存在"
+                        else:
+                            conf()["model"] = args[0]
+                            Bridge().reset_bot()
+                            ok, result = True, "模型设置为: " + str(conf().get("model"))
                 elif cmd == "id":
                     ok, result = True, user
                 elif cmd == "set_openai_api_key":
@@ -438,3 +452,9 @@ class Godcmd(Plugin):
 
     def get_help_text(self, isadmin=False, isgroup=False, **kwargs):
         return get_help_text(isadmin, isgroup)
+
+
+    def is_admin_in_group(self, context):
+        if context["isgroup"]:
+            return context.kwargs.get("msg").actual_user_id in global_config["admin_users"]
+        return False