diff --git a/README.md b/README.md index 851f53680..29b5b1089 100644 --- a/README.md +++ b/README.md @@ -205,6 +205,12 @@ FAQs: ## 联系 -欢迎提交PR、Issues,以及Star支持一下。程序运行遇到问题优先查看 [常见问题列表](https://github.com/zhayujie/chatgpt-on-wechat/wiki/FAQs) ,其次前往 [Issues](https://github.com/zhayujie/chatgpt-on-wechat/issues) 中搜索。如果你想了解更多项目细节,并与开发者们交流更多关于AI技术的实践,欢迎加入星球: +欢迎提交PR、Issues,以及Star支持一下。程序运行遇到问题可以查看 [常见问题列表](https://github.com/zhayujie/chatgpt-on-wechat/wiki/FAQs) ,其次前往 [Issues](https://github.com/zhayujie/chatgpt-on-wechat/issues) 中搜索。 + +进一步了解项目细节和最新进展,可以加入技术交流群: + + + +如果你想获取更多项目资料,与开发者们交流更多关于AI技术的实践,欢迎加入星球: diff --git a/bot/linkai/link_ai_bot.py b/bot/linkai/link_ai_bot.py index a92466db1..023e62c89 100644 --- a/bot/linkai/link_ai_bot.py +++ b/bot/linkai/link_ai_bot.py @@ -1,5 +1,7 @@ +# access LinkAI knowledge base platform +# docs: https://link-ai.tech/platform/link-app/wechat + from bot.bot import Bot -from bridge.context import ContextType from bridge.reply import Reply, ReplyType from common.log import logger from bridge.context import Context @@ -13,6 +15,7 @@ class LinkAIBot(Bot): # authentication failed AUTH_FAILED_CODE = 401 + NO_QUOTA_CODE = 406 def __init__(self): self.base_url = "https://api.link-ai.chat/v1" @@ -51,19 +54,27 @@ def _chat(self, query, context, retry_count=0): res = requests.post(url=self.base_url + "/chat/completion", json=body, headers=headers).json() if not res or not res["success"]: + if res.get("code") == self.AUTH_FAILED_CODE: logger.exception(f"[LINKAI] please check your linkai_api_key, res={res}") return Reply(ReplyType.ERROR, "请再问我一次吧") + + elif res.get("code") == self.NO_QUOTA_CODE: + logger.exception(f"[LINKAI] please check your account quota, https://link-ai.chat/console/account") + return Reply(ReplyType.ERROR, "提问太快啦,请休息一下再问我吧") + else: # retry time.sleep(2) logger.warn(f"[LINKAI] do retry, times={retry_count}") return self._chat(query, context, retry_count + 1) + # execute success reply_content = res["data"]["content"] logger.info(f"[LINKAI] reply={reply_content}") self.sessions.session_reply(reply_content, session_id) return Reply(ReplyType.TEXT, reply_content) + except Exception as e: logger.exception(e) # retry diff --git a/config-template.json b/config-template.json index d179ff813..cd24692ec 100644 --- a/config-template.json +++ b/config-template.json @@ -1,6 +1,8 @@ { "open_ai_api_key": "YOUR API KEY", "model": "gpt-3.5-turbo", + "linkai_api_key": "YOUR API KEY", + "linkai_app_code": "", "proxy": "", "single_chat_prefix": [ "bot", diff --git a/docs/images/contact.jpg b/docs/images/contact.jpg new file mode 100644 index 000000000..f92429b97 Binary files /dev/null and b/docs/images/contact.jpg differ diff --git a/plugins/godcmd/godcmd.py b/plugins/godcmd/godcmd.py index eee579a2a..f2613f925 100644 --- a/plugins/godcmd/godcmd.py +++ b/plugins/godcmd/godcmd.py @@ -297,7 +297,7 @@ def on_handle_context(self, e_context: EventContext): except Exception as e: ok, result = False, "你没有设置私有GPT模型" elif cmd == "reset": - if bottype in [const.OPEN_AI, const.CHATGPT, const.CHATGPTONAZURE]: + if bottype in [const.OPEN_AI, const.CHATGPT, const.CHATGPTONAZURE, const.LINKAI]: bot.sessions.clear_session(session_id) channel.cancel_session(session_id) ok, result = True, "会话已重置"