[建议] hu60ws 增加一个开放功能

@Ta 2023-04-04发布,2023-04-04修改 8090点击

当前,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": "<答案>"}}
回复列表(12|隐藏机器人聊天)
  • @Ta / 2023-04-04 / /

    @rkonfj,我想用这个功能提供机器人回答的点赞、点踩功能。用户在虎绿林做出反应后,在ChatGPT网页做出对应的反应。

    图片.png(75.46 KB)

  • @Ta / 2023-04-04 / /

    @老虎会游泳,我没问题。用 lsapiregapi 来出一个协议,我来实现

  • c
    @Ta / 2023-04-04 / /

    @老虎会游泳,这个功能有什么实际意义吗
    掌缘生灭(白)

  • @Ta / 2023-04-04 / /

    @c,可以帮助改进机器人的回答。

  • @Ta / 2023-04-04 / /

    @老虎会游泳,机器人在 hu60 发的答案没有唯一ID吧,怎么传递反馈?

  • @Ta / 2023-04-04 / /

    @rkonfj,可以加

  • @Ta / 2023-04-04 / /
  • @Ta / 2023-04-04 / /

    @老虎会游泳,服务端已经准备就绪 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"}}
    

    hu60 网页插件需要实现的部分

    在机器人上下线时查询各机器人支持的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"}}
    
  • @Ta / 2023-04-04 / /

    @rkonfj,这只是一个简单的原样JSON传递服务对吗?
    我希望服务端对消息的数据结构不要有假设,因为传递的字段以后可能会变。

  • @Ta / 2023-04-04 / /

    @老虎会游泳,是的,data 字段是原样传递。action 注册后就不能更改,不过是存在内存的,服务器重启后就又可以变了

  • @Ta / 2023-04-04 / /

    @老虎会游泳-50-150 可以实现 chat 吗?

  • @Ta / 2023-04-04 / /

    @rkonfj,就和我之前说的一样,我不太想运营chat功能,因为用户悄悄使用GPT会让我觉得没有意思。

添加新回复
回复需要登录