From d16cb25cdedfb9b9b5d025e92be1ce5a2e3b0703 Mon Sep 17 00:00:00 2001 From: Rock Chin <1010553892@qq.com> Date: Thu, 6 Apr 2023 20:34:56 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=88=A0=E9=99=A4=E5=86=97=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E5=85=BC=E5=AE=B9=E6=80=A7=E6=A3=80=E6=9F=A5=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 3 +-- pkg/audit/gatherer.py | 2 +- pkg/openai/manager.py | 2 +- pkg/openai/session.py | 2 +- pkg/qqbot/blob.py | 5 ----- pkg/qqbot/cmds/system/help.py | 2 +- pkg/qqbot/filter.py | 10 +++++----- pkg/qqbot/ignore.py | 3 --- pkg/qqbot/manager.py | 9 +++------ pkg/qqbot/message.py | 9 +++------ pkg/qqbot/process.py | 11 +++++------ pkg/qqbot/ratelimit.py | 6 ------ pkg/utils/text2img.py | 4 ++-- tests/gpt3_test.py | 14 ++++++++++++++ 14 files changed, 37 insertions(+), 45 deletions(-) create mode 100644 tests/gpt3_test.py diff --git a/main.py b/main.py index 560186ff..4f35bac0 100644 --- a/main.py +++ b/main.py @@ -299,8 +299,7 @@ def start(first_time_init=False): logging.info('热重载完成') # 发送赞赏码 - if hasattr(config, 'encourage_sponsor_at_start') \ - and config.encourage_sponsor_at_start \ + if config.encourage_sponsor_at_start \ and pkg.utils.context.get_openai_manager().audit_mgr.get_total_text_length() >= 2048: logging.info("发送赞赏码") diff --git a/pkg/audit/gatherer.py b/pkg/audit/gatherer.py index 4768d271..b52c12ec 100644 --- a/pkg/audit/gatherer.py +++ b/pkg/audit/gatherer.py @@ -44,7 +44,7 @@ class DataGatherer: """ try: config = pkg.utils.context.get_config() - if hasattr(config, "report_usage") and not config.report_usage: + if not config.report_usage: return res = requests.get("http://reports.rockchin.top:18989/usage?service_name=qchatgpt.{}&version={}&count={}".format(subservice_name, self.version_str, count)) if res.status_code != 200 or res.text != "ok": diff --git a/pkg/openai/manager.py b/pkg/openai/manager.py index 1032e3dd..8a368c3c 100644 --- a/pkg/openai/manager.py +++ b/pkg/openai/manager.py @@ -83,7 +83,7 @@ class OpenAIInteract: dict: 响应 """ config = pkg.utils.context.get_config() - params = config.image_api_params if hasattr(config, "image_api_params") else self.default_image_api_params + params = config.image_api_params response = openai.Image.create( prompt=prompt, diff --git a/pkg/openai/session.py b/pkg/openai/session.py index 52cb5ea9..4a74e971 100644 --- a/pkg/openai/session.py +++ b/pkg/openai/session.py @@ -213,7 +213,7 @@ class Session: return None config = pkg.utils.context.get_config() - max_length = config.prompt_submit_length if hasattr(config, "prompt_submit_length") else 1024 + max_length = config.prompt_submit_length prompts, counts = self.cut_out(text, max_length) diff --git a/pkg/qqbot/blob.py b/pkg/qqbot/blob.py index abcccf69..099d8013 100644 --- a/pkg/qqbot/blob.py +++ b/pkg/qqbot/blob.py @@ -64,12 +64,7 @@ def text_to_image(text: str) -> MessageComponent: def check_text(text: str) -> list: """检查文本是否为长消息,并转换成该使用的消息链组件""" - if not hasattr(config, 'blob_message_threshold'): - return [text] - if len(text) > config.blob_message_threshold: - if not hasattr(config, 'blob_message_strategy'): - raise AttributeError('未定义长消息处理策略') # logging.info("长消息: {}".format(text)) if config.blob_message_strategy == 'image': diff --git a/pkg/qqbot/cmds/system/help.py b/pkg/qqbot/cmds/system/help.py index bda684d2..72e06d71 100644 --- a/pkg/qqbot/cmds/system/help.py +++ b/pkg/qqbot/cmds/system/help.py @@ -13,7 +13,7 @@ class HelpCommand(AbstractCommandNode): @classmethod def process(cls, ctx: Context) -> tuple[bool, list]: import config - reply = [(config.help_message if hasattr(config, 'help_message') else "") + "\n请输入 !cmds 查看指令列表"] + reply = [(config.help_message) + "\n请输入 !cmds 查看指令列表"] return True, reply \ No newline at end of file diff --git a/pkg/qqbot/filter.py b/pkg/qqbot/filter.py index fa052a07..d4bf579c 100644 --- a/pkg/qqbot/filter.py +++ b/pkg/qqbot/filter.py @@ -21,11 +21,11 @@ class ReplyFilter: self.mask = mask self.mask_word = mask_word import config - if hasattr(config, 'baidu_check') and hasattr(config, 'baidu_api_key') and hasattr(config, 'baidu_secret_key'): - self.baidu_check = config.baidu_check - self.baidu_api_key = config.baidu_api_key - self.baidu_secret_key = config.baidu_secret_key - self.inappropriate_message_tips = config.inappropriate_message_tips + + self.baidu_check = config.baidu_check + self.baidu_api_key = config.baidu_api_key + self.baidu_secret_key = config.baidu_secret_key + self.inappropriate_message_tips = config.inappropriate_message_tips def is_illegal(self, message: str) -> bool: processed = self.process(message) diff --git a/pkg/qqbot/ignore.py b/pkg/qqbot/ignore.py index 01994b2e..5269147d 100644 --- a/pkg/qqbot/ignore.py +++ b/pkg/qqbot/ignore.py @@ -5,9 +5,6 @@ def ignore(msg: str) -> bool: """检查消息是否应该被忽略""" import config - if not hasattr(config, 'ignore_rules'): - return False - if 'prefix' in config.ignore_rules: for rule in config.ignore_rules['prefix']: if msg.startswith(rule): diff --git a/pkg/qqbot/manager.py b/pkg/qqbot/manager.py index 0ede6a64..77634ecd 100644 --- a/pkg/qqbot/manager.py +++ b/pkg/qqbot/manager.py @@ -24,8 +24,6 @@ import pkg.plugin.models as plugin_models # 检查消息是否符合泛响应匹配机制 def check_response_rule(text: str): config = pkg.utils.context.get_config() - if not hasattr(config, 'response_rules'): - return False, '' rules = config.response_rules # 检查前缀匹配 @@ -228,8 +226,7 @@ class QQBotManager: def send(self, event, msg, check_quote=True): config = pkg.utils.context.get_config() asyncio.run( - self.bot.send(event, msg, quote=True if hasattr(config, - "quote_origin") and config.quote_origin and check_quote else False)) + self.bot.send(event, msg, quote=True if config.quote_origin and check_quote else False)) # 私聊消息处理 def on_person_message(self, event: MessageEvent): @@ -333,7 +330,7 @@ class QQBotManager: # 通知系统管理员 def notify_admin(self, message: str): config = pkg.utils.context.get_config() - if hasattr(config, "admin_qq") and config.admin_qq != 0 and config.admin_qq != []: + if config.admin_qq != 0 and config.admin_qq != []: logging.info("通知管理员:{}".format(message)) if type(config.admin_qq) == int: send_task = self.bot.send_friend_message(config.admin_qq, "[bot]{}".format(message)) @@ -346,7 +343,7 @@ class QQBotManager: def notify_admin_message_chain(self, message): config = pkg.utils.context.get_config() - if hasattr(config, "admin_qq") and config.admin_qq != 0 and config.admin_qq != []: + if config.admin_qq != 0 and config.admin_qq != []: logging.info("通知管理员:{}".format(message)) if type(config.admin_qq) == int: send_task = self.bot.send_friend_message(config.admin_qq, message) diff --git a/pkg/qqbot/message.py b/pkg/qqbot/message.py index 9d124fc3..b1eb6119 100644 --- a/pkg/qqbot/message.py +++ b/pkg/qqbot/message.py @@ -13,11 +13,8 @@ def handle_exception(notify_admin: str = "", set_reply: str = "") -> list: """处理异常,当notify_admin不为空时,会通知管理员,返回通知用户的消息""" import config pkg.utils.context.get_qqbot_manager().notify_admin(notify_admin) - if hasattr(config, 'hide_exce_info_to_user') and config.hide_exce_info_to_user: - if hasattr(config, 'alter_tip_message'): - return [config.alter_tip_message] if config.alter_tip_message else [] - else: - return ["[bot]出错了,请重试或联系管理员"] + if config.hide_exce_info_to_user: + return [config.alter_tip_message] if config.alter_tip_message else [] else: return [set_reply] @@ -40,7 +37,7 @@ def process_normal_message(text_message: str, mgr, config, launcher_type: str, reply = handle_exception(notify_admin=f"{session_name},多次尝试失败。", set_reply=f"[bot]多次尝试失败,请重试或联系管理员") break try: - prefix = "[GPT]" if hasattr(config, "show_prefix") and config.show_prefix else "" + prefix = "[GPT]" if config.show_prefix else "" text = session.append(text_message) diff --git a/pkg/qqbot/process.py b/pkg/qqbot/process.py index 4dda7521..4106c9f7 100644 --- a/pkg/qqbot/process.py +++ b/pkg/qqbot/process.py @@ -68,7 +68,7 @@ def process_message(launcher_type: str, launcher_id: int, text_message: str, mes return reply import config - if hasattr(config, 'income_msg_check') and config.income_msg_check: + if config.income_msg_check: if mgr.reply_filter.is_illegal(text_message): return MessageChain(Plain("[bot] 你的提问中有不合适的内容, 请更换措辞~")) @@ -115,10 +115,10 @@ def process_message(launcher_type: str, launcher_id: int, text_message: str, mes else: # 消息 # 限速丢弃检查 # print(ratelimit.__crt_minute_usage__[session_name]) - if hasattr(config, "rate_limitation") and config.rate_limit_strategy == "drop": + if config.rate_limit_strategy == "drop": if ratelimit.is_reach_limit(session_name): logging.info("根据限速策略丢弃[{}]消息: {}".format(session_name, text_message)) - return MessageChain(["[bot]"+config.rate_limit_drop_tip]) if hasattr(config, "rate_limit_drop_tip") and config.rate_limit_drop_tip != "" else [] + return MessageChain(["[bot]"+config.rate_limit_drop_tip]) if config.rate_limit_drop_tip != "" else [] before = time.time() # 触发插件事件 @@ -144,11 +144,10 @@ def process_message(launcher_type: str, launcher_id: int, text_message: str, mes mgr, config, launcher_type, launcher_id, sender_id) # 限速等待时间 - if hasattr(config, "rate_limitation") and config.rate_limit_strategy == "wait": + if config.rate_limit_strategy == "wait": time.sleep(ratelimit.get_rest_wait_time(session_name, time.time() - before)) - if hasattr(config, "rate_limitation"): - ratelimit.add_usage(session_name) + ratelimit.add_usage(session_name) if reply is not None and len(reply) > 0 and (type(reply[0]) == str or type(reply[0]) == mirai.Plain): if type(reply[0]) == mirai.Plain: diff --git a/pkg/qqbot/ratelimit.py b/pkg/qqbot/ratelimit.py index 2a759b6e..6683f990 100644 --- a/pkg/qqbot/ratelimit.py +++ b/pkg/qqbot/ratelimit.py @@ -58,9 +58,6 @@ def get_rest_wait_time(session_name: str, spent: float) -> float: import config - if not hasattr(config, 'rate_limitation'): - return 0 - min_seconds_per_round = 60.0 / config.rate_limitation if session_name in __crt_minute_usage__: @@ -75,9 +72,6 @@ def is_reach_limit(session_name: str) -> bool: import config - if not hasattr(config, 'rate_limitation'): - return False - if session_name in __crt_minute_usage__: return __crt_minute_usage__[session_name] >= config.rate_limitation else: diff --git a/pkg/utils/text2img.py b/pkg/utils/text2img.py index b21f72ec..68df0d68 100644 --- a/pkg/utils/text2img.py +++ b/pkg/utils/text2img.py @@ -8,8 +8,8 @@ import traceback text_render_font: ImageFont = None -if hasattr(config, "blob_message_strategy") and config.blob_message_strategy == "image": # 仅在启用了image时才加载字体 - use_font = config.font_path if hasattr(config, "font_path") else "" +if config.blob_message_strategy == "image": # 仅在启用了image时才加载字体 + use_font = config.font_path try: # 检查是否存在 diff --git a/tests/gpt3_test.py b/tests/gpt3_test.py new file mode 100644 index 00000000..0b586a7a --- /dev/null +++ b/tests/gpt3_test.py @@ -0,0 +1,14 @@ +import openai + +openai.api_key = "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" + +resp = openai.Completion.create( + prompt="user:你好,今天天气怎么样?\nbot:", + model="text-davinci-003", + temperature=0.9, # 数值越低得到的回答越理性,取值范围[0, 1] + top_p=1, # 生成的文本的文本与要求的符合度, 取值范围[0, 1] + frequency_penalty=0.2, + presence_penalty=1.0, +) + +print(resp) \ No newline at end of file