docker安装并跑通跑通QQ机器人实践(1)-前言及展示

news2024/11/15 8:19:54

随着大模型技术的迅猛发展,行业应用日益丰富且专业化。为了有效利用大模型的强大功能,建立与之紧密互动的应用接口至关重要。在此背景下,QQ、微信、钉钉等主流即时通讯工具凭借其广泛的用户覆盖和便捷的通信特性,成为连接用户与大模型的理想媒介。

通过集成智能聊天机器人至这些平台,我们可以将大语言模型的智能化服务无缝融入日常通讯场景,使得海量即时通讯用户能够直接获益于大模型提供的信息检索、决策支持、知识解答等强大功能,切实体验到技术进步带来的便利与效率提升。

以下,我将详细介绍构建基础智能聊天机器人的步骤,并提供一种简明、高效的部署方法。本指南旨在帮助读者快速理解并掌握搭建流程,使得在频繁使用各类智能机器人服务的同时,也能自主创建符合个人或企业需求的定制化聊天机器人。无论旨在提升工作效能、优化客户交互,还是寻求创新应用,理解并掌握这一技能都将有力推动您迈向人工智能应用的前沿。

1 缘起

网上有很多搭建机器人的文章和实践,但总觉得过于复杂,基本都是基于 Windows 的居多,如果想要在远程服务器(包括 NAS )上搭建机器人,就暴露了很大的局限性。所以我就基于 Docker 搭建了一套基于 cqhttp + qsign + nonebot2 的框架,一步步搭建出一套可以高速部署、稳定运行,且适合软件开发的一体化环境。此系列博客《docker安装并跑通跑通QQ机器人实践》记录了整个搭建流程,供大家参考。

2. 目标

2.1 目标一:构建基于 Docker 的跨平台应用程序

本项目将以 Docker 为依托,设计并实现一个由三个独立容器构成的分布式架构。

2.1.1 系统架构图

请参见下图以直观了解整个系统的布局:
图1  QQ机器人项目架构

图1 QQ机器人项目架构

2.1.2 模块简介

1)bs-qsign 签名服务器模块
该模块作为 QQ 机器人的核心依赖,负责提供必要的签名服务。没有它,机器人在登录及后续操作时将遭遇登录失败警报,甚至可能触发 QQ 平台的风控机制。bs-qsign 容器对外暴露 18080 端口,用于接收来自 bs-cqhttp 的签名访问连接。

2)bs-nonebot 模块
此模块基于 nonebot 应用框架构建,专为简化 QQ 机器人应用开发而设计。开发者无需深入理解底层通讯协议,只需专注于功能插件的开发,即可快速构建丰富的机器人功能。bs-nonebot 容器对外暴露 15703 端口,用于接收来自 bs-cqhttp 的 WebSocket 反向连接。

3)bs-cqhttp 模块
bs-cqhttp 扮演 QQ 客户端模拟器的角色,实现 QQ 账号的登录、好友管理、消息收发等全套基础功能。在当前框架中,需确保如下配置:

  • 将 bs-cqhttp 指向 bs-qsign 提供的签名服务端口:18080;
  • 设置 bs-cqhttp 的服务器连接配置,使其通过 WebSocket 反向连接至 bs-nonebot 开放的 15703 端口。

综上,通过整合这三个紧密协作的 Docker 容器,本项目旨在构建一个跨操作系统、易于部署、稳定运行且高度适应软件开发需求的 QQ 机器人解决方案。

2.2 目标二:一键部署容器化应用

为极大简化部署流程,针对每个模块,我均编写了生成镜像及启动容器的Shell脚本。这些脚本不仅预设了端口映射与目录挂载,还确保用户可通过宿主机端口直接访问容器服务,以及利用挂载的宿主机目录轻松调整容器内的配置文件与源代码。

2.2.1 部署脚本示意图

以下是部署脚本功能的可视化表示:
图2  BS-BOTS项目一级目录结构

图2 BS-BOTS项目一级目录结构

图3  bs-cqhttp 目录结构
图3 bs-cqhttp 目录结构

3 知识储备

以下知识虽具有学习必要性,但在初期阶段无需过分深入探究,仅需掌握满足基本应用场景所需的部分即可。随着实践频次的增加,您自然而然会对这些知识愈发熟悉且游刃有余。

3.1 Docker 基础知识及简单操作

图4  Docker 简介

图4 Docker 简介

安装建议:
图5  下载和安装 Docker Desktop

图5 下载和安装 Docker Desktop

docker 官网:
https://docker.com

参考文章:
手搓 Docker Image Creator(DIC)工具(02):预备知识

3.2 Dockerfile 脚本相关知识

Dockerfile 的相关知识网上有很多教程。参考文章:

  • 菜鸟教程 - Dockerfile
  • 手搓 Docker Image Creator(DIC)工具(02):预备知识

3.3 Shell 脚本基础知识及简单脚本编写

图6  Shell 的百度百科

图6 Shell 的百度百科

Linux与macOS操作系统凭借其内置的终端环境,对Shell的支持表现卓越,为用户提供了完善的Shell脚本执行与命令行操作环境。

相比之下,Windows系统自带的Shell支持相对有限。为此,我们建议Windows用户安装Git这一广受欢迎且广泛应用的版本控制工具。Git不仅用于管理如Github、Gitee等平台上的代码仓库,其安装包中还附带一个名为Git Bash的终端应用程序,该程序对Shell的支持尤为出色。

在Windows下使用Git Bash,用户将受益于:

  • 全面的Unix/Linux命令集:
    Git Bash集成了一系列常用的Unix/Linux命令,使得在Windows环境中也能流畅执行跨平台的Shell脚本与命令操作。
  • 优异的Shell兼容性:
    Git Bash确保了Shell脚本在Windows上的高兼容性执行,减少因操作系统差异引发的移植问题。
  • 无缝对接Git功能:
    作为Git客户端的一部分,Git Bash无缝整合了Git命令,方便用户在同一个环境中进行版本控制与Shell操作。

综上所述,对于需要在Windows系统中获得良好Shell支持的场景,尤其是涉及使用我所提供的依赖Shell功能的代码,安装并利用Git Bash将显著提升兼容性与使用体验。

官网:https://git-scm.com/

4 成品演示

图7  运行 run.sh 安装 bs-qsign 容器

图7 运行 run.sh 安装 bs-qsign 容器

图8  运行 all.sh 创建 bs-nonebot 镜像和容器
图8 运行 all.sh 创建 bs-nonebot 镜像和容器

图9  运行 all.sh 创建 bs-cqhttp 镜像和容器
图9 运行 all.sh 创建 bs-cqhttp 镜像和容器

图10  成功安装和运行 3 个容器

图10 成功安装和运行 3 个容器

图11  在 bs-nonebot 容器里运行 bot.py,监听 5703 端口

图11 在 bs-nonebot 容器里运行 bot.py,监听 5703 端口

图12  bs-cqhttp 登录QQ,并成功链接签名服务器和反向服务器
图12 bs-cqhttp 登录QQ,并成功链接签名服务器和反向服务器

图13  私聊 /echo 命令测试成功

图13 私聊 /echo 命令测试成功

图14  群里 /echo 和 @ 指令测试成功

图14 群里 /echo 和 @ 指令测试成功

5 安装、测试完毕!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1596594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动画渲染多少钱一秒?云渲染一分钟动画费用

动画渲染的费用因其复杂度和技术要求而异,云渲染服务则提供了一种高效的解决方案。一般而言,渲染一分钟动画的费用可能从几百到几千元不等,具体取决于使用的资源和渲染质量。下面来看看相关费用吧。 动画渲染多少钱一秒? 参考:…

更改android 安装的sdk版本

打开sdk manager 勾选show details 就可以选择了。

找不到msvcr120.dll要怎么解决?一键修复msvcr120.dll的详细解决方法

操作Windows系统的用户有时会遇到一个错误提示,显示“找不到msvcr120.dll”,通常被描述为“msvcr120.dll文件丢失”。解决这一问题其实有多种方式,且操作起来相对简单。以下是解决"msvcr120.dll丢失"问题的详细方法。 一.msvcr120…

每日一VUE——组件的生命周期

文章目录 VUE组件的生命周期生命周期钩子函数实例创建Teleport VUE组件的生命周期 组件生命周期 组件从创建到挂载、更新、到销毁的一系列过程被称为组件的生命周期。 生命周期函数 在组件的各个生命周期节点执行的函数,为生命周期钩子函数。 生命周期钩子函数…

最新版IntelliJ IDEA 2024.1安装和配置教程 详细图文解说版安装教程

IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版 文章目录 IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版前言 第一步: IntelliJ IDEA 2024.1安装教程第 0 步&…

一款功能齐全的iOS混淆工具介绍及功能详解

机缘巧合偶遇iOS马甲包业务,前期也使用过目前市面上其他得工具,实际效果不太理想。经过大量实践,开发出一款功能齐全的混淆工具。工具的主要功能OC、C、Swift已封装成Mac应用,其他功能还在封装中,敬请期待。 马甲包的本…

网站添加PWA支持,仅需三步,无视框架的类型

总结起来,网站配置PWA简单步骤为: 编写 manifest.json;编写 serviceWorker.js;在 index.html 引入上述两个文件;把上述三个文件放在网站根目录(或者同一目录下);网站需要部署在https环境才能触发&#xff…

[C++][算法基础]求最小生成树(Kruskal)

给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E),其中 V 表示图中点的集合,E 表示图…

JavaScript代码获取浏览器的可视高、文档滚动高和滚动距离

获取浏览器可视高度 var clientHeight 0; if (document.body.clientHeight && document.documentElement.clientHeight) {// 如果同时存在 document.body.clientHeight 和 document.documentElement.clientHeightclientHeight Math.min(document.body.clientHeight,…

【wu-framework-parent】官网介绍

官网地址 介绍 springboot 版本3.2.1 wu-framework-parent 是一款由Java语言开发的框架,目标不写代码但是却能完成功能。 框架涵盖无赖ORM( wu-framework-lazy-orm-spring-starter)、仿生组件 、easy框架系列【Easy-Excel、easy-listener、easy-upsert】 授权框架…

Postgresql源码(125)游标恢复执行的原理分析

问题 为什么每次fetch游标能从上一次的位置继续?后面用一个简单用例分析原理。 【速查】 恢复扫描需要知道当前页面、上一次扫描到的偏移位置、当前页面一共有几条: 当前页面:HeapScanDesc结构中记录了扫到的页面(scan->rs_cb…

如何安装Windows版VRTE2.1.0开发环境并进行开发

前言&#xff08;Abstract&#xff09; 本文档记录了如何安装Windows版VRTE2.1.0开发环境并进行开发&#xff0c;并且总结了当部署在安装了比较陈旧版本Linux内核&#xff08;如<4.5&#xff09;和库的板子上所遭遇的困难&#xff0c;如S32V234EVB。 Definitions and Abbre…

自动化测试selenium(2)

目录 WebDriver介绍 WebDriver使用 使用WebDriver驱动操作浏览器(打开一个百度) WebDriver 相关API 定位元素 操作元素 上一篇主要介绍了自动化测试的概念以及selenium的基本原理, 这里我们来讲一下如何利用selenium来写测试用的脚本. WebDriver介绍 Selenium是一个用于…

Zookeeper(从入门到掌握)看完这一篇就够了

文章目录 一、初识 Zookeeper1.Zookeeper 概念2.Zookeeper 数据模型3.Zookeeper 服务端常用命令4.Zookeeper 客户端常用命令 二、ZooKeeper JavaAPI 操作1.Curator 介绍1.Curator API 常用操作&#xff08;1&#xff09;建立连接&#xff08;2&#xff09;添加节点&#xff08;…

对链表的进一步认识

********以下内容均是个人理解&#xff0c;个人语言&#xff0c;仅代表个人观点&#xff0c;希望能对你有所帮助*************** 1.对链表的进一步深入理解分析 &#xff08;1&#xff09;逻辑结构&#xff1a;想象出来的&#xff0c;并不是真实存在的&#xff0c;例如里面的…

idm线程越多越好吗 idm线程数多少合适

IDM&#xff08;Internet Download Manager&#xff09;是一款流行的下载管理软件&#xff0c;它支持多线程下载&#xff0c;这意味着它可以同时建立多个连接来下载文件的不同部分&#xff0c;从而提高下载速度。我们在使用IDM的时候总是有很多疑问&#xff0c;今天我们学习IDM…

HIT The Wiorld,HIT世界官网地址+配置要求+测试时间+加速器分享

HIT The Wiorld&#xff0c;HIT世界官网地址配置要求测试时间加速器分享 NEXON新游《HIT&#xff1a;世界&#xff08;HIT&#xff1a;The World&#xff09;》将在4月17日上线&#xff0c;目前已在官网开启事前预约预创建角色。Hit :the world&#xff08;HIT:世界&#xff…

鸿蒙 Failed :entry:default@CompileResource...

Failed :entry:defaultCompileResource... media 文件夹下有文件夹或者图片名称包含中文字符 rawfile 文件夹下文件名称、图片名称不能包含中文字符

说说你对链表的理解?常见的操作有哪些?

一、是什么 链表&#xff08;Linked List&#xff09;是一种物理存储单元上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的&#xff0c;由一系列结点&#xff08;链表中每一个元素称为结点&#xff09;组成 每个结点包括两个部分&…

Hdevelop编辑器常用功能

1、灰度直方图 【阈值分割】——对应算子threshold 通过菜单【可视化】-【工具】-【灰度直方图】打开&#xff0c;打开后选中【变量窗口】的某张图片即可进行灰度直方图分析。 刚打开并选中某张图片&#xff1a; 调节【最小化】和【最大化】的两个竖线&#xff0c;此时图中绿…