当前,hu60 的 websocket 服务器 和 robot
分开了。
我建议hu60ws
协议上增加一个功能:大家运行的 robot
可以向 ws 注册为 api 暴露 AI 的聊天功能,让 hu60ws 更具有开放能力。源自 @老虎会游泳 的聊天(https://hu60.cn/q.php/addin.chat.hu60bot.html?floor=1966#1966 ,任何基于api的机器人都可以提供自己的{"action":"chat"}了
)
我愿意实现下面的协议,让任何机器人都可以通过 ws 暴露自己的 AI 能力,让 hu60 的插件生态更自由。
具体协议如下:
ws 服务器给客户端提供的 api:
连接 ws 成功后发送如下动作,查询机器人 支持的 api
{"action": "lsapi"}
{"event": "lsapi", "data": {"-150": ["chat"],"-50": ["chat"]}}
随即选择一个机器人开始聊天:
{"action": "chat", "data": {"bot": -150, "data": "<问题>"}}
{"event": "chat", "data": {"bot": -150, "data": "<答案>"}}
机器人需要实现的协议:
可以发送如下消息表明自己愿意通过 ws 向其他 ws 客户端提供 AI chat
api:
{"action": "regapi", "data":["chat"]}
注册 chat
api 的机器人要实现在收到事件(A)时向服务器发送一个动作(B):
A:
{"event": "req", "data": {"uid": "", "action": "chat", "data": "<问题>"}}
B:
{"action": "resp": "data": {"uid":"", "action": "chat", "data": "<答案>"}}
@老虎会游泳,服务端已经准备就绪 https://github.com/rkonfj/hu60bot/commit/c62aad300996db386e23dc55ccce41d989f8e6d8
拿你的这个反馈答案质量的功能举个例子(wordsId
是 AI 答案的标识):
-50
的机器人实现了 feedback
api,连接建立成功后先注册 api , 再监听 req
event,发送 resp
action
{"action": "regapi", "data":["feedback"]}
{"event": "req", "data": {"uid": "22780", "action": "feedback", "data": {"wordsId": "2ecf63f2b6e1", "score": 1}}}
{"action": "resp": "data": {"uid":"22780", "action": "feedback", "data": "ok"}}
在机器人上下线时查询各机器人支持的api
并保存在内存中
{"action": "lsapi"}
{"event": "lsapi", "data": {"-50": ["feedback"]}}
针对-50
机器人的答案根据用户反应,发送相应的动作到 ws 服务器:
// 赞
{"action": "feedback", "data": {"bot": -50, "data": {"wordsId": "2ecf63f2b6e1", "score": 1}}}
{"event": "feedback", "data": {"bot": -50, "data": "ok"}}
// 踩
{"action": "feedback", "data": {"bot": -50, "data": {"wordsId": "2ecf63f2b6e1", "score": -1}}}
{"event": "feedback", "data": {"bot": -50, "data": "ok"}}
@nzdwlm,我想用这个功能提供机器人回答的点赞、点踩功能。用户在虎绿林做出反应后,在ChatGPT网页做出对应的反应。