ソースを参照

Merge pull request #1218 from zhayujie/feature-app-market

feat: no quota hint and add group qrcode
master
zhayujie GitHub 1年前
コミット
dfe1c23e76
この署名に対応する既知のキーがデータベースに存在しません GPGキーID: 4AEE18F83AFDEB23
5個のファイルの変更24行の追加3行の削除
  1. +9
    -1
      README.md
  2. +12
    -1
      bot/linkai/link_ai_bot.py
  3. +2
    -0
      config-template.json
  4. バイナリ
      docs/images/contact.jpg
  5. +1
    -1
      plugins/godcmd/godcmd.py

+ 9
- 1
README.md ファイルの表示

@@ -27,6 +27,12 @@ https://user-images.githubusercontent.com/26161723/233777277-e3b9928e-b88f-43e2-


Demo made by [Visionn](https://www.wangpc.cc/) Demo made by [Visionn](https://www.wangpc.cc/)


# 体验

了解项目更新和体验最新功能:

<img width="240" src="./docs/images/contact.jpg">

# 更新日志 # 更新日志


>**2023.04.26:** 支持企业微信应用号部署,兼容插件,并支持语音图片交互,支持Railway部署,[使用文档](https://github.com/zhayujie/chatgpt-on-wechat/blob/master/channel/wechatcom/README.md)。(contributed by [@lanvent](https://github.com/lanvent) in [#944](https://github.com/zhayujie/chatgpt-on-wechat/pull/944)) >**2023.04.26:** 支持企业微信应用号部署,兼容插件,并支持语音图片交互,支持Railway部署,[使用文档](https://github.com/zhayujie/chatgpt-on-wechat/blob/master/channel/wechatcom/README.md)。(contributed by [@lanvent](https://github.com/lanvent) in [#944](https://github.com/zhayujie/chatgpt-on-wechat/pull/944))
@@ -205,6 +211,8 @@ FAQs: <https://github.com/zhayujie/chatgpt-on-wechat/wiki/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技术的实践,欢迎加入星球:


<a href="https://public.zsxq.com/groups/88885848842852.html"><img width="360" src="./docs/images/planet.jpg"></a> <a href="https://public.zsxq.com/groups/88885848842852.html"><img width="360" src="./docs/images/planet.jpg"></a>

+ 12
- 1
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 bot.bot import Bot
from bridge.context import ContextType
from bridge.reply import Reply, ReplyType from bridge.reply import Reply, ReplyType
from common.log import logger from common.log import logger
from bridge.context import Context from bridge.context import Context
@@ -13,6 +15,7 @@ class LinkAIBot(Bot):


# authentication failed # authentication failed
AUTH_FAILED_CODE = 401 AUTH_FAILED_CODE = 401
NO_QUOTA_CODE = 406


def __init__(self): def __init__(self):
self.base_url = "https://api.link-ai.chat/v1" self.base_url = "https://api.link-ai.chat/v1"
@@ -51,19 +54,27 @@ class LinkAIBot(Bot):
res = requests.post(url=self.base_url + "/chat/completion", json=body, headers=headers).json() res = requests.post(url=self.base_url + "/chat/completion", json=body, headers=headers).json()


if not res or not res["success"]: if not res or not res["success"]:

if res.get("code") == self.AUTH_FAILED_CODE: if res.get("code") == self.AUTH_FAILED_CODE:
logger.exception(f"[LINKAI] please check your linkai_api_key, res={res}") logger.exception(f"[LINKAI] please check your linkai_api_key, res={res}")
return Reply(ReplyType.ERROR, "请再问我一次吧") 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: else:
# retry # retry
time.sleep(2) time.sleep(2)
logger.warn(f"[LINKAI] do retry, times={retry_count}") logger.warn(f"[LINKAI] do retry, times={retry_count}")
return self._chat(query, context, retry_count + 1) return self._chat(query, context, retry_count + 1)

# execute success # execute success
reply_content = res["data"]["content"] reply_content = res["data"]["content"]
logger.info(f"[LINKAI] reply={reply_content}") logger.info(f"[LINKAI] reply={reply_content}")
self.sessions.session_reply(reply_content, session_id) self.sessions.session_reply(reply_content, session_id)
return Reply(ReplyType.TEXT, reply_content) return Reply(ReplyType.TEXT, reply_content)

except Exception as e: except Exception as e:
logger.exception(e) logger.exception(e)
# retry # retry


+ 2
- 0
config-template.json ファイルの表示

@@ -1,6 +1,8 @@
{ {
"open_ai_api_key": "YOUR API KEY", "open_ai_api_key": "YOUR API KEY",
"model": "gpt-3.5-turbo", "model": "gpt-3.5-turbo",
"linkai_api_key": "YOUR API KEY",
"linkai_app_code": "",
"proxy": "", "proxy": "",
"single_chat_prefix": [ "single_chat_prefix": [
"bot", "bot",


バイナリ
docs/images/contact.jpg ファイルの表示

変更前 変更後
幅: 1046  |  高さ: 1238  |  サイズ: 646KB

+ 1
- 1
plugins/godcmd/godcmd.py ファイルの表示

@@ -297,7 +297,7 @@ class Godcmd(Plugin):
except Exception as e: except Exception as e:
ok, result = False, "你没有设置私有GPT模型" ok, result = False, "你没有设置私有GPT模型"
elif cmd == "reset": 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) bot.sessions.clear_session(session_id)
channel.cancel_session(session_id) channel.cancel_session(session_id)
ok, result = True, "会话已重置" ok, result = True, "会话已重置"


読み込み中…
キャンセル
保存