From b3e1f56fb94e5e885d092619ff6ef73207b78617 Mon Sep 17 00:00:00 2001 From: zhayujie Date: Sun, 19 Mar 2023 01:09:36 +0800 Subject: [PATCH 1/5] feat: itchat login hot reload --- channel/wechat/wechat_channel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/channel/wechat/wechat_channel.py b/channel/wechat/wechat_channel.py index d43a0a3..66979c2 100644 --- a/channel/wechat/wechat_channel.py +++ b/channel/wechat/wechat_channel.py @@ -42,7 +42,7 @@ class WechatChannel(Channel): def startup(self): # login by scan QRCode - itchat.auto_login(enableCmdQR=2) + itchat.auto_login(enableCmdQR=2, hotReload=True) # start message listener itchat.run() From 9b2da6c431be6c5b3f37b0b25821ed861b3467b8 Mon Sep 17 00:00:00 2001 From: lichengzhe <38408577@qq.com> Date: Sun, 19 Mar 2023 01:10:27 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=B8=85=E9=99=A4=E8=AE=B0=E5=BF=86?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E5=92=8CAPI=E8=B0=83=E7=94=A8=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=94=B9=E4=B8=BAconfig.json=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/chatgpt/chat_gpt_bot.py | 9 +++++---- config-template.json | 15 --------------- 2 files changed, 5 insertions(+), 19 deletions(-) delete mode 100644 config-template.json diff --git a/bot/chatgpt/chat_gpt_bot.py b/bot/chatgpt/chat_gpt_bot.py index be2fa67..b5c2a5b 100644 --- a/bot/chatgpt/chat_gpt_bot.py +++ b/bot/chatgpt/chat_gpt_bot.py @@ -27,7 +27,8 @@ class ChatGPTBot(Bot): if not context or not context.get('type') or context.get('type') == 'TEXT': logger.info("[OPEN_AI] query={}".format(query)) session_id = context.get('session_id') or context.get('from_user_id') - if query == '#清除记忆': + clear_memory_commands = conf().get('clear_memory_commands', ['#清除记忆']) + if query in clear_memory_commands: Session.clear_session(session_id) return '记忆已清除' elif query == '#清除所有': @@ -65,11 +66,11 @@ class ChatGPTBot(Bot): response = openai.ChatCompletion.create( model= conf().get("model") or "gpt-3.5-turbo", # 对话模型的名称 messages=session, - temperature=0.9, # 值在[0,1]之间,越大表示回复越具有不确定性 + temperature=conf().get('temperature', 0.9), # 值在[0,1]之间,越大表示回复越具有不确定性 #max_tokens=4096, # 回复最大的字符数 top_p=1, - frequency_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容 - presence_penalty=0.0, # [-2,2]之间,该值越大则更倾向于产生不同的内容 + frequency_penalty=conf().get('frequency_penalty', 0.0), # [-2,2]之间,该值越大则更倾向于产生不同的内容 + presence_penalty=conf().get('presence_penalty', 0.0), # [-2,2]之间,该值越大则更倾向于产生不同的内容 ) # logger.info("[ChatGPT] reply={}, total_tokens={}".format(response.choices[0]['message']['content'], response["usage"]["total_tokens"])) return {"total_tokens": response["usage"]["total_tokens"], diff --git a/config-template.json b/config-template.json deleted file mode 100644 index 154cb9e..0000000 --- a/config-template.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "open_ai_api_key": "YOUR API KEY", - "model": "gpt-3.5-turbo", - "proxy": "", - "single_chat_prefix": ["bot", "@bot"], - "single_chat_reply_prefix": "[bot] ", - "group_chat_prefix": ["@bot"], - "group_name_white_list": ["ChatGPT测试群", "ChatGPT测试群2"], - "image_create_prefix": ["画", "看", "找"], - "speech_recognition": false, - "voice_reply_voice": false, - "conversation_max_tokens": 1000, - "expires_in_seconds": 3600, - "character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。" -} From d760b045d54e6b8c1f46e40ac37562c6ca22672b Mon Sep 17 00:00:00 2001 From: zhayujie Date: Sun, 19 Mar 2023 01:26:53 +0800 Subject: [PATCH 3/5] fix: close hot reload because of repeat msg --- channel/wechat/wechat_channel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/channel/wechat/wechat_channel.py b/channel/wechat/wechat_channel.py index 66979c2..d43a0a3 100644 --- a/channel/wechat/wechat_channel.py +++ b/channel/wechat/wechat_channel.py @@ -42,7 +42,7 @@ class WechatChannel(Channel): def startup(self): # login by scan QRCode - itchat.auto_login(enableCmdQR=2, hotReload=True) + itchat.auto_login(enableCmdQR=2) # start message listener itchat.run() From 3ef7855384852d6733bd9af0e370a23d1a056568 Mon Sep 17 00:00:00 2001 From: lichengzhe <38408577@qq.com> Date: Sun, 19 Mar 2023 08:29:25 +0800 Subject: [PATCH 4/5] =?UTF-8?q?itchat=E5=A2=9E=E5=8A=A0hot=5Freload?= =?UTF-8?q?=E7=89=B9=E6=80=A7=E5=BC=80=E5=85=B3=EF=BC=8C=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E3=80=82=E9=85=8D=E7=BD=AE=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=AF=E9=80=89=E5=8F=82=E6=95=B0=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +++ channel/wechat/wechat_channel.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 00ef3d3..5d35975 100644 --- a/README.md +++ b/README.md @@ -129,10 +129,13 @@ pip3 install --upgrade openai **4.其他配置** + `model`: 模型名称,目前支持 `gpt-3.5-turbo`, `text-davinci-003`, `gpt-4`, `gpt-4-32k` (其中gpt-4 api暂未开放) ++ `temperature`,`frequency_penalty`,`presence_penalty`: Chat API接口参数,详情参考[OpenAI官方文档。](https://platform.openai.com/docs/api-reference/chat) + `proxy`:由于目前 `openai` 接口国内无法访问,需配置代理客户端的地址,详情参考 [#351](https://github.com/zhayujie/chatgpt-on-wechat/issues/351) + 对于图像生成,在满足个人或群组触发条件外,还需要额外的关键词前缀来触发,对应配置 `image_create_prefix ` + 关于OpenAI对话及图片接口的参数配置(内容自由度、回复字数限制、图片大小等),可以参考 [对话接口](https://beta.openai.com/docs/api-reference/completions) 和 [图像接口](https://beta.openai.com/docs/api-reference/completions) 文档直接在 [代码](https://github.com/zhayujie/chatgpt-on-wechat/blob/master/bot/openai/open_ai_bot.py) `bot/openai/open_ai_bot.py` 中进行调整。 + `conversation_max_tokens`:表示能够记忆的上下文最大字数(一问一答为一组对话,如果累积的对话字数超出限制,就会优先移除最早的一组对话) ++ `clear_memory_commands`: 对话内指令,主动清空前文记忆,字符串数组可自定义指令别名。 ++ `hot_reload`: 程序退出后,暂存微信扫码状态,默认关闭。 + `character_desc` 配置中保存着你对机器人说的一段话,他会记住这段话并作为他的设定,你可以为他定制任何人格 (关于会话上下文的更多内容参考该 [issue](https://github.com/zhayujie/chatgpt-on-wechat/issues/43)) diff --git a/channel/wechat/wechat_channel.py b/channel/wechat/wechat_channel.py index d43a0a3..5a06227 100644 --- a/channel/wechat/wechat_channel.py +++ b/channel/wechat/wechat_channel.py @@ -42,7 +42,7 @@ class WechatChannel(Channel): def startup(self): # login by scan QRCode - itchat.auto_login(enableCmdQR=2) + itchat.auto_login(enableCmdQR=2, hotReload=conf().get('hot_reload', False)) # start message listener itchat.run() From 021ee2312ea3dabc5ded2bef6f4769f34abb78fe Mon Sep 17 00:00:00 2001 From: lichengzhe <38408577@qq.com> Date: Sun, 19 Mar 2023 09:11:36 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E9=BB=98=E8=AE=A4config-?= =?UTF-8?q?template.json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config-template.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 config-template.json diff --git a/config-template.json b/config-template.json new file mode 100644 index 0000000..359de50 --- /dev/null +++ b/config-template.json @@ -0,0 +1,16 @@ + { + "open_ai_api_key": "YOUR API KEY", + "model": "gpt-3.5-turbo", + "proxy": "", + "single_chat_prefix": ["bot", "@bot"], + "single_chat_reply_prefix": "[bot] ", + "group_chat_prefix": ["@bot"], + "group_name_white_list": ["ChatGPT测试群", "ChatGPT测试群2"], + "image_create_prefix": ["画", "看", "找"], + "speech_recognition": false, + "voice_reply_voice": false, + "conversation_max_tokens": 1000, + "expires_in_seconds": 3600, + "character_desc": "你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。" + } +