谁能帮虎绿林写个使用ChatGPT API的机器人

@Ta 2023-03-08发布,2023-03-08修改 6384点击

编程语言不限,需要实现用户隔离(不同用户拥有不同会话),不需要实现模型选择(固定为gpt-3.5-turbo模型即可),也不需要设置prompt。

我可以提供测试key(内信我,我发给你)。

和虎绿林网站交互的部分可以参考我的js代码:

https://github.com/hu60t/hu60wap6/blob/master/src/tpl/jhin/js/chatgpt/chatgpt.js#L933
https://gitee.com/hu60t/hu60wap6/blob/master/src/tpl/jhin/js/chatgpt/chatgpt.js#L933

5楼和6楼有关于技术方案的建议。

回复列表(30|隐藏机器人聊天)
  • @Ta / 2023-03-08 / /
    额,难道ChatGPT不能胜任这个工作吗?
  • @Ta / 2023-03-08 / /

    @老虎会游泳,嗯?又打算用 API 了?这费用。。

  • @Ta / 2023-03-08 / /

    @胡图图,不能,因为让ChatGPT理解如何与虎绿林网站交互很难。

  • @Ta / 2023-03-08 / /

    @无名啊,每个新用户都送了$18,我准备开到用完为止。

  • @Ta / 2023-03-08 / /

    最简单的技术方案是把我的 chatgpt.js (基于浏览器)改写成 nodejs 版。这样就不需要重写和虎绿林交互的部分,只需要把和网页交互的部分(sendRequestreadReply函数)替换成和ChatGPT API交互即可。ChatGPT API应该可以直接返回markdown格式文本,所以你就完全不需要引入用于html转markdown的外部js库。

  • @Ta / 2023-03-08 / /

    当然如果你的PHP很好,并且熟悉虎绿林程序,也可以写一个直接连接虎绿林数据库进行操作的版本。如果你决定用PHP写,就可以直接调用虎绿林提供的@消息、聊天室和论坛操作函数。

    如果你不想轮询数据库,还可以参考这个微信推送服务,它通过连接 ali canal 服务获取实时@消息推送。

    https://github.com/hu60t/hu60wap6/blob/master/src/service/wechat-push.php

  • @Ta / 2023-03-08 / /

    我想用Go来实现一个守护进程。是不是用到以下3个 API就够了?

    1. 监听@消息 API
    https://hu60.cn/q.php/<sid>/msg.index.@.no.json?_origin=*&_json=compact&_content=json
    
    1. OpenAI 聊天模型 API
    https://api.openai.com/v1/chat/completions
    
    1. 回复帖子和聊天室 API
    https://hu60.cn/q.php/bbs.newreply.<topicId>.json
    https://hu60.cn/q.php/addin.chat.<chatName>.json
    
  • @Ta / 2023-03-08 / /

    @cherrydra,你还需要登录(获取sid)和读取帖子内容。从 msg.index.@.no.json?_content=json 里得到的JSON格式很难转换为纯文本,所以最方便的方法是用readTopicContent再读取一次纯文本。

    或者如果你不想多次读取,还可以使用msg.index.@.no.json?_content=text直接获取纯文本的消息,但这样一来你就需要用正则表达式去解析纯文本中的回复地址,类似这样:

    "@Curtion 在 帖子“ChatGPT机器人的切换会话功能丢失”的16楼 https://hu60.cn/q.php/bbs.topic.104616.json?floor=16#16 @你:\n\n@老虎会游泳,会话功能回来了,据说是因为对部分功能实时维护做的临时改动\r\n红米K30 Pro(变焦版)"
    

    读取帖子内容:

    // 读取帖子内容
    async function readTopicContent(path) {
        let url = hu60BaseUrl + path.replace('{$BID}', 'json')
            .replace(/#.*$/s, '') // 去掉锚链接
            .replace(
                /\?|$/s, // 注意主题帖的@链接不含问号
                '?_origin=*&_json=compact&_content=text&pageSize=1&'
            );
        let response = await fetch(url);
        return await response.json();
    }
    

    登录:

    // 登录虎绿林
    async function login(relogin) {
            let formData = new FormData();
            formData.append('type', '1'); // 用户名登录
            formData.append('name', localStorage.hu60User);
            formData.append('pass', localStorage.hu60Pwd);
            formData.append('go', '1');
    
            let response = await fetch(hu60Url + 'user.login.json?_origin=*&_json=compact', {
                body: formData,
                method: "post",
                redirect: "manual" // 不自动重定向
            });
            let result = await response.json();
            if (!result.success) {
                throw result.notice;
            }
    
            hu60BaseUrl = hu60Url + result.sid + '/';
    }
    
  • @Ta / 2023-03-09 / /

    @老虎会游泳,可以在at事件触发的PHP处使用stream_socket_send发送到websocket服务推送,机器人和用户在同一个ws聊天室(群)这样可实现双向链路推送,

    我可以为其 贡献服务推送 并且使用PHP集成,但是前提是运行方式 只能是docker或者phpcli

    我目前认为最佳方案就是gatewayWorker和他的httpSdk配合使用可以实现所有需求,并且都可以在docker 部署,免去复杂环境安装

  • @Ta / 2023-03-09 / /

    @胡椒舰长,我只对从ali canal接收@事件感兴趣,我不考虑主动连接的方案。

  • @Ta / 2023-03-09 / /

    @胡椒舰长,不过我们确实可以把 https://github.com/hu60t/hu60wap6/blob/master/src/service/wechat-push.php 改造一下,让它使用stream_socket_send发送到websocket服务推送。

  • @Ta / 2023-03-09 / /

    ChatGPT API连续对话的原理是每次都发送完整的历史记录给服务器

    https://hu60.cn/q.php/bbs.topic.104621.html

  • @Ta / 2023-03-09 / /

    @老虎会游泳,可以激活下这个账号吗?hu60bot作为一个测试机器人

  • @Ta / 2023-03-09 / /

    @cherrydra,好了

  • @Ta / 2023-03-09 / /

    @老虎会游泳

    root@ubuntu2004 ~ # curl -XPOST -H "Content-Type: application/x-www-form-urlencoded" -d "type=1&name=hu60bot&pass=<pass>&go=1" https://hu60.cn/q.php/user.login.json
    {
        "page": "loginPage",
        "success": false,
        "notice": "用户未激活",
        "active": true
    }
    
  • @Ta / 2023-03-09 / /

    @cherrydra,已解决

  • @Ta / 2023-03-09 / /
    @cherrydra,via hu60bot
  • @Ta / 2023-03-09 / /

    其实吧,有一说一,我估计2两天,老虎你的$18就没啦....

添加新回复
回复需要登录