登录 立即注册

首页 > 绿虎论坛 > 公告 (发帖)

标题: 文心一言机器人(技术预览版)已加入虎绿林

作者: @Ta

时间: 2023-04-02发布,2023-10-06修改

点击: 580436

使用方法:在帖子或聊天室里发:

@文心一言,问题。

机器人源代码(机器人使用说明在注释里):


使用方法:

  1. 使用最新版的Chrome谷歌浏览器或Firefox火狐浏览器,不要使用QQ浏览器、360浏览器等,不保证兼容。
  2. 安装油猴插件:https://www.tampermonkey.net/
  3. 在油猴里添加新脚本,粘贴如下代码并保存:
// ==UserScript==
// @name         虎绿林文心一言机器人
// @namespace    https://hu60.cn/
// @version      1.0
// @description  把文心一言接入hu60wap6网站程序
// @author       老虎会游泳
// @match        https://yiyan.baidu.com/
// @icon         https://hu60.cn/favicon.ico
// @grant        none
// ==/UserScript==

document.hu60VConsole = false; // 是否显示调试控制台,false:隐藏;true:显示。
document.hu60User = ''; // 虎绿林用户名
document.hu60Pwd = ''; // 虎绿林密码
document.hu60AdminUids = [1, 19346, 15953]; // 机器人管理员uid,管理员可以发“@文心一言,刷新页面”来重启机器人
document.hu60Domain = 'https://hu60.cn'; // 如果要对接其他网站,请修改此处的域名(必须是https的否则连不上)
var script = document.createElement("script");
script.src = document.hu60Domain + '/tpl/jhin/js/chatgpt/yiyan.js?r=' + (new Date().getTime());
document.head.appendChild(script);
  1. 打开 https://yiyan.baidu.com/ 并登录。
  2. 在来到聊天页面时,会弹出输入虎绿林用户名密码的提示框。
    如果你要把机器人接入虎绿林,请注册一个新帐号。使用现有帐号运行机器人将被删帖或禁言
    输入新帐号用户名密码后,机器人即启动,保持页面不要关闭。
    机器人会使用你在此处输入的帐号与其他用户进行对话,在虎绿林用其他帐号@该帐号即可尝试对话。
    注意,使用该帐号自己@自己是不会有反应的,必须用另一个账号来和机器人对话。
  3. 如果要打开F12开发者控制台,必须在“调试器”或“源代码”页面点击“停用断点”按钮(右上角的=/=>图标)并刷新,否则百度会暂停页面的运行。
  4. 如何切换登录的帐号?按F12打开开发者工具,点“控制台”或“Console”,然后输入以下代码并回车:
    login(true)
    将会重新弹出用户名密码输入框。
  5. 也可以把用户名密码填在油猴脚本里,这样就不用在对话框里输入了。

如何把机器人接入其他类型的网站?

你可以在油猴脚本的末尾添加一个自定义主循环,用于把机器人接入其他类型的网站。以下是一个例子:

document.run = async function() {
    while (true) {
        try {
            // 访问你的网站获取要发给文心一言的内容
            // 网站必须是https的,否则连不上。
            // 此外网站还必须设置 Access-Control-Allow-Origin: * 头信息,否则也连不上。
            let response = await fetch('https://example.com/my-message.php');

            // 假设获取到的信息是JSON,把它转换成JSON对象
            // 网站必须设置 content-type: application/json 头信息,否则转换会失败。
            let messages = response.json();

            // 假设JSON结构是这样:
            // {"data": [
            //    {"uid":3, "text":"@文心一言,你好"},
            //    {"uid":2, "text":"@文心一言,我有一个问题"},
            //    {"uid":1, "text":"@文心一言,刷新页面"},
            // ]}
            let exceptionCount = 0;
            for (let i=0; i<messages.data.length; i++) {
                // 要发给文心一言的话,开头包含的“@机器人名称,”会被后续流程自动去除。
                let text = messages.data.text;

                // 用户id,可以是字符串,所以给出用户名也是可以的。
                let uid = messages.data.uid;

                try {
                    // 把对话发给文心一言
                    // 返回的 modelIndex 是为对话选择的模型id(从0开始编号),目前始终是0
                    let modelIndex = await sendRequest(text, uid);

                    // 从文心一言读取回复
                    let replyText = await readReply();

                    // 发送回复到你的网站
                    // 创建一个POST表单
                    let formData = new FormData();
                    formData.append('token', '用于用户身份验证的密钥');
                    formData.append('reply', replyText); // 回复内容

                    // 提交POST表单
                    // 网站必须是https的,否则连不上。
                    // 此外网站还必须设置 Access-Control-Allow-Origin: * 头信息,否则也连不上。
                    let response = await fetch('https://example.com/my-reply.php', {
                        body: formData,
                        method: "post",
                        redirect: "manual" // 不自动重定向
                    });

                    // 在控制台打印提交结果
                    if (response.type == 'opaqueredirect') {
                        console.log('提交后收到重定向(目标网址未知,根据标准,浏览器不告诉我们),不清楚提交是否成功');
                    } else {
                        let result = await response.text();
                        console.log('提交结果', result);
                    }

                    // 避免操作太快
                    await sleep(100);
                } catch (ex) {
                    exceptionCount++;  // 统计异常次数
                    console.error(ex); // 打印异常到控制台
                    await sleep(1000); // 异常后等久一点
                }

                // 重命名会话
                await renameWant();
            }

            // 执行管理员命令(比如“刷新页面”)
            await runAdminCommand();

            // 异常太多,自动刷新页面
            if (exceptionCount > 0 && exceptionCount >= messages.data.length) {
                location.reload();
            }

            // 限制拉取信息的速度,避免对自己的网站造成CC攻击
            await sleep(1000);
        } catch (ex) {
            console.error(ex);
            await sleep(1000);
        }
    }
}

[隐藏样式|查看源码]


『回复列表(46|显示机器人聊天)』

11.

@老虎会游泳,这代码不对啊。。
掌缘生灭(白)

(/@Ta/2023-04-02 04:56//)

12.

@c,html转markdown的功能需要调整

(/@Ta/2023-04-02 04:57//)

25. 没用过文心一言,但是如果他用的Vue框架,那么直接改变Value 是不会绑定数据的,可以看看这个方案,https://blog.csdn.net/JCM_ZZ/article/details/126076520
(/@Ta/2023-04-02 09:39//)

38.

卧槽太厉害了,上次看到新闻的时候,他们还是画个女的,再画个饼子,现在都已经可以直接画出真正的老婆饼了

(/@Ta/2023-04-02 11:07//)

95.
(/@Ta/2023-04-02 16:17//)

110.

@周松松,这是35楼的完整回答,看起来机器人有判定条件bug,回答还没结束就返回了。
Screenshot_20230402_194614_com.oray.sunlogin.jpg(470.69 KB)

(/@Ta/2023-04-02 19:46//)

117.

@听风念,你的个性签名(小尾巴)可能会导致处理失败

(/@Ta/2023-04-02 19:50//)

118.
层主 @wrongs 于 2023-04-02 19:52 删除了该楼层。
(/@Ta/2023-04-02 19:51//
被锁定
)

121.

@wrongs,这不是bug,它就这样,也可能是网络问题。

Screenshot_20230402_195539_com.oray.sunlogin.jpg(423.98 KB)

(/@Ta/2023-04-02 19:56//)

122. @老虎会游泳 ,他好像发不出图片或者出现了错误
(/@Ta/2023-04-02 19:56//)

123.

@wrongs,不是网络问题,我看了http响应,就是没图,重新生成也没用。百度的#创意图功能有问题。

Screenshot_20230402_200029_com.oray.sunlogin.jpg(461.68 KB)

(/@Ta/2023-04-02 20:01//)

128.

@水木易安,我在修改文字输入代码

(/@Ta/2023-04-02 20:27//)

129.
(/@Ta/2023-04-02 20:48//)

136.
楼主 @老虎会游泳 于 2023-04-02 21:59 删除了该楼层,理由如下:

奇怪的问题

(/@Ta/2023-04-02 21:25//
被锁定
)

166.

@老虎会游泳,问题解决了。

一加8Pro

(/@Ta/2023-04-03 14:55//)

168.
层主 @罐子 于 2023-04-03 14:57 删除了该楼层。
(/@Ta/2023-04-03 14:56//
被锁定
)

171.

@罐子,嗯解决了

(/@Ta/2023-04-03 14:58//)

172.

@罐子,如何解决的还是用的js解决的?
一加8Pro

(/@Ta/2023-04-03 14:59//)

175.
(/@Ta/2023-04-03 15:02//)

下一页 1/3页,共46楼

回复需要登录

12月1日 12:07 星期天

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1