0%

最近写一个QQ机器人的后端项目,用于对接AI大模型以及一些图片、语音接口,难免要跟各类大模型的api打交道,听说claude更适合角色扮演,而且新出的Claude3.5-sonnet能力甚至超越了GPT-4o,遂一直想要体验一下,但没有国外的实体手机号,所以没有机会。机缘巧合下得知gcp的VertexAI可以白嫖最新的Gemini和Claude,立马来了兴趣,研究后却发现是通过sdk的方式调用的,没有api,但这不是什么大问题,能用就行,实在不行自己写一个本地api服务不就行了吗,说干就干,直接放上仓库地址,如果能帮到您的话不妨给个star鼓励一下:

https://github.com/syuchua/gcp_claude_transfer

配置1说明都在readme里了,如果有什么不明白的话,欢迎提issue。

前几天把自己的一个项目扔到了服务器上,用nginx+域名反代了一下ip+端口,测试却发现请求失败,日志里的报错信息显示不支持的请求类型

waht?

明明本地跑的好好的啊,一番排查之后才找到问题,我这个项目实际上是一个api接口,只接受POST请求,但nginx的配置文件里有一个return 301步骤把http请求都转发给了https,转发之后,POST请求就变成了GET,查了一些资料,发现原来只要把return301 改成307就好了

比方说我原本的nginx.conf是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server {

listen 80;

server_name yourip.com;

return 301 https://$host$request_uri;

}



server {

listen 443 ssl http2;

server_name yourip.com;

ssl_certificate /etc/nginx/certs/cert.pem;

ssl_certificate_key /etc/nginx/certs/key.pem;

location / {

proxy_pass http://127.0.0.1:11451;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

只需要改成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server {

listen 80;

server_name yourip.com; # 同理,替换为你的域名

return 307 https://$host$request_uri;

}



server {

listen 443 ssl http2;

server_name yourip.com; # 替换域名

ssl_certificate /etc/nginx/certs/cert.pem;

ssl_certificate_key /etc/nginx/certs/key.pem;

location / {

proxy_pass http://127.0.0.1:5212;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

就可以了。

今天在Linuxdo闲逛时发现一篇帖子,说是使用某个网站+油猴脚本可以实现GPT4oclaude3.5sonnet等一众最新先进大模型的无限制白嫖(暂时),如果不依赖脚本,仅正常登录使用,每天也能进行50次的对话,本着好东西应该分享的原则,水一篇博客,帮大家也用上**:laughing:**

首先是网站地址:
https://www.vecmul.com/

进入后不要登录,先安装这个油猴脚本:
https://greasyfork.org/zh-CN/scripts/502074-vecmul%E6%97%A0%E9%99%90%E5%AF%B9%E8%AF%9D

之后点击编辑

image-20240729234408576

把下面的代码替换进去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// ==UserScript==
// @name 将聊天请求计数保持为零
// @namespace http://tampermonkey.net/
// @version 0.5
// @description 始终将localStorage中chat-request项的计数保持为0
// @match https://www.vecmul.com/*
// @grant none
// ==/UserScript==

(function() {
'use strict';

function keepCountAtZero() {
let chatRequest = localStorage.getItem('chat-request');
if (chatRequest) {
try {
let data = JSON.parse(chatRequest);
if (data.count !== 0) {
data.count = 0;
localStorage.setItem('chat-request', JSON.stringify(data));
}
} catch (e) {
console.error('解析chat-request时出错:', e);
}
}
}

// 初始执行
keepCountAtZero();

// 重写localStorage的setItem方法
const originalSetItem = Storage.prototype.setItem;
Storage.prototype.setItem = function(key, value) {
originalSetItem.call(this, key, value);
if (key === 'chat-request') {
keepCountAtZero();
}
};

console.log('聊天请求计数将始终为零。');
})();

在返回原来那个网站,就可以实现无限制白嫖gpt4o啦,快去试试吧**:laughing:**

今天来分享一个我自己写的芙宁娜QQ机器人后端,拥有的能力包括但不限于AI聊天、绘画、发送涩图、AI语音、翻唱歌曲等,还兼具上下文功能,支持自定义system_prompt,适配http和反向ws连接。先来一波展示:

食用方法

  • 直接对话即可
    • 发送发一张来一张+关键词即可自定义发送涩图,比方说发一张卡芙卡
    • 发送来份涩图来份色图再来一张 即可发送随机涩图
    • 发送画一张生成一张 即可发送AI绘画(如果config.json里有GPT有关的配置,则关键词会调用dalle进行绘画,除dalle外,还支持白嫖bing的AI绘画,需提前将cookie的值填入cookies.json中,只有一个账号的cookie就按字典格式填一个,多个的话可以放进列表里)
    • 发送语音说,``语音回复+要用语音说的话让机器人发送语音,或者再提示词里提示机器人通过把#voice`标签放在回复的开头,实现更生动地语音回复。
    • 发送点歌+歌曲名进行点歌,支持模糊匹配。
    • R-18?
      该接口的涩图数量足有十几万,其中r18占27.8%,建议公共场合尽量设置为0,2的话,还是不要太相信自己的运气了(问就是惨痛的教训)

命令功能

机器人支持以下命令:

  • /help:显示帮助信息。
  • /reset:重置当前会话。
  • /character:输出config.json中的character值,也即当前的人设。
  • /history: 输出之前的条消息记录,默认十条,也可以接空格+数字指定。
  • /clear:清除消息记录,默认十条,可接空格+数字指定。
  • /music_list: 获取歌曲列表
  • /r18 [0, 1, 2]切换涩图接口r18模式,0为关闭,1为开启,2随机
  • /model [new_model]切换模型,新模型需先在model.json中配置好

语音功能需要本地搭建gpt-sovits,可以参考视频https://b23.tv/9dOdMo6

这里放上本地搭建语音整合包
GPT-SoVITS-Inference

部署

接下来是机器人项目的部署,对接QQ使用的是支持onebot协议的llonebot,所以其他类似项目如LagrangeNapCat也是可以的,这里仅演示llonebot的配置,默认使用反向ws连接

包含NTQQ,llonebot插件,MongoDB安装包和项目源码的整合包下载整合包并解压

先双击install_windows.exe安装NTQQ,然后把llonebot.zip复制到NTQQ的插件目录下解压,重启QQ即可在设置里看到有关配置,然后就是填写反向ws监听地址

1
ws://127.0.0.1:8011/ws

然后是双击MongoDB的安装文件,没什么好讲的,安装完成后进入bin目录,打开cmd,输入

1
mongod --dbpath D:\MongoDB\data --logpath D:\MongoDB\log\mongodb.log --logappend   #替换成你自己的对应目录

关闭终端,填写机器人项目的config,config.json里是基础配置

  • openai_api_key: 你的openai_api_key
  • model: 使用的模型,默认为gpt-3.5-turbo
  • self_id:机器人的QQ号。
  • admin_id:管理员的QQ号。
  • block_id: 要屏蔽的QQ号。
  • nicknames:机器人的昵称列表。
  • system_message:系统消息配置,最重要的是character,相当于机器人的人格。
  • connection_type: 连接类型,可选http或ws_reverse
  • report_secret: http事件上传密钥。仅使用http连接时需要填写,默认的123456也可以不管
  • enable_time: 设置定时开启时间
  • disable_time: 设置定时关闭时间
  • proxy_api_base: openai_api_key请求地址,默认为https://api.openai.com/v1
  • system_messagecharacter里填写人设
  • reply_probability: 当收到的消息中没有nickname时的回复频率,1为每一条都回复,0为仅回复带有nickname的消息,默认0.5
  • r18: 0为关闭r18,1开启r18,2为随机发送(慎选)
  • audio_save_path: 语音文件保存位置
  • voice_service_url: 语音接口地址
  • cha_name:语音接口指定角色
    dialogues.json里主要是配置一些固定回答,一般没什么用,除非有什么恶趣味
    model.json里主要是非gpt的其他模型的配置,如果填了,会覆盖config.json里GPT的配置需要为OneAPI格式,model里填写的模型名需要现在aviliable_models里填上。vision代表是否支持识图,如果你的模型可以识图就填true(如果使用gpt系列模型,gpt4系列默认允许识图)

视频教程

【芙宁娜QQ机器人搭建教程】 https://www.bilibili.com/video/BV1BBYcekEUs/?share_source=copy_web&vd_source=6f08734cb3a294b6a1e634a3e5b481ca

获取bing的cookie用于非gpt系列的AI绘图

如果视频无法渲染可以点击链接下载

项目开源仓库

syuchua/MY_QBOT: 一个简单的QQ机器人后端框架 (github.com)

一些跟芙芙聊天的日常

【谁家傻芙芙连9.8和9.11哪个大都分不清】 https://www.bilibili.com/video/BV1TivWeFEot/?share_source=copy_web&vd_source=6f08734cb3a294b6a1e634a3e5b481ca


Linux 基础运维笔记

目录

  1. RPM 包管理
  2. YUM 包管理
  3. 文件系统管理
  4. LVM 动态扩容
  5. 系统负载查看
  6. 磁盘管理与分区
  7. 进程管理
  8. 网络管理
  9. 安全管理
  10. 日志管理

1. RPM 包管理

常用命令

操作命令
查看包文件列表rpm -ql <package_name>
安装包rpm -ivh <package.rpm>
升级包rpm -Uvh <package.rpm>
卸载包rpm -e <package_name>
查询已安装包rpm -qa
检查文件来源rpm -qf <file_path>
验证包rpm -V <package_name>

示例

1
rpm -ql httpd
1
rpm -ivh nginx-1.20.1.rpm

2. YUM 包管理

常用命令

操作命令
列出可用包yum list available
安装包yum install <package_name>
更新系统中所有包yum update
卸载包yum remove <package_name>
查看包信息yum info <package_name>
列出已安装的包yum list installed
清除缓存yum clean all

示例

1
yum install httpd
1
yum remove httpd

3. 文件系统管理

挂载与卸载文件系统

  • 挂载文件系统

    1
    mount <device> <mount_point>

    示例:

    1
    mount /dev/sda1 /mnt
  • 卸载文件系统

    1
    umount <mount_point>

    示例:

    1
    umount /mnt
  • 查看当前挂载的文件系统

    1
    df -h

文件系统的创建

  • 创建 ext4 文件系统

    1
    mkfs.ext4 /dev/sdX
  • 创建 xfs 文件系统

    1
    mkfs.xfs /dev/sdX

4. LVM 动态扩容

步骤

  1. 创建物理卷

    1
    pvcreate /dev/sdX
  2. 创建卷组

    1
    vgcreate <volume_group_name> /dev/sdX
  3. 创建逻辑卷

    1
    lvcreate -L <size> -n <logical_volume_name> <volume_group_name>
  4. 扩展逻辑卷

    1
    lvextend -L +<size> /dev/<volume_group>/<logical_volume>
  5. 扩展文件系统

    • 对 ext4 文件系统:

      1
      resize2fs /dev/<volume_group>/<logical_volume>
    • 对 xfs 文件系统:

      1
      xfs_growfs /dev/<volume_group>/<logical_volume>

5. 系统负载查看

常用命令

命令描述
top实时查看系统状态,包括 CPU、内存、任务
htoptop 的增强版,提供更丰富的界面和操作
uptime查看系统启动时间、负载信息
vmstat查看系统虚拟内存、IO、进程等信息
iostat查看磁盘 I/O 使用情况
sar收集系统性能数据,需安装 sysstat

示例

1
top
1
uptime
1
vmstat

6. 磁盘管理与分区

查看磁盘使用情况

1
df -h

查看磁盘 I/O 活动

1
iostat

磁盘分区工具

  • **fdisk**:适用于 MBR 分区格式磁盘

    1
    fdisk /dev/sda
  • **parted**:适用于 GPT 分区格式磁盘

    1
    parted /dev/sda

创建分区

  1. 使用 fdisk 创建分区

    1
    fdisk /dev/sda
  2. 使用 parted 创建 GPT 分区

    1
    2
    parted /dev/sda mklabel gpt
    parted /dev/sda mkpart primary 0% 100%

7. 进程管理

查看进程

1
ps -aux

查看进程树

1
pstree

杀死进程

  • 正常终止

    1
    kill <pid>
  • 强制杀死

    1
    kill -9 <pid>

8. 网络管理

查看网络配置

1
ifconfig

查看路由表

1
route -n

测试网络连通性

1
ping <hostname or IP>

检查端口状态

1
netstat -tuln

9. 安全管理

防火墙管理

命令描述
firewalld动态防火墙管理工具
iptables传统防火墙规则配置工具
  • Firewalld 命令

    • 启动 Firewalld:
      1
      systemctl start firewalld
    • 允许某端口(如 80 端口):
      1
      firewall-cmd --permanent --add-port=80/tcp
    • 重启防火墙:
      1
      firewall-cmd --reload
  • iptables 命令

    • 查看规则:
      1
      iptables -L
    • 允许某端口(如 80 端口):
      1
      iptables -A INPUT -p tcp --dport 80 -j ACCEPT

用户与权限管理

  • 创建用户

    1
    useradd <username>
  • 删除用户

    1
    userdel <username>
  • 修改用户密码

    1
    passwd <username>
  • 查看当前用户

    1
    whoami
  • 更改文件权限

    1
    chmod 755 <file> 
  • 更改文件属主

    1
    chown <owner>:<group> <file>

10. 日志管理

常见日志文件

日志文件描述
/var/log/messages通用系统日志
/var/log/secure安全相关日志(如登录、sudo 操作等)
/var/log/dmesg内核日志
/var/log/boot.log启动日志
/var/log/httpd/Apache 日志文件夹
/var/log/nginx/Nginx 日志文件夹

日志查看与监控

  • 查看日志

    1
    cat /var/log/messages
  • 实时查看日志

    1
    tail -f /var/log/messages