mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 05:30:07 +08:00
feat(aichat): add more funcs
This commit is contained in:
parent
2df52161e5
commit
62e9fe69ed
@ -1558,10 +1558,14 @@ print("run[CQ:image,file="+j["img"]+"]")
|
|||||||
|
|
||||||
- [x] 设置AI聊天触发概率10
|
- [x] 设置AI聊天触发概率10
|
||||||
- [x] 设置AI聊天温度80
|
- [x] 设置AI聊天温度80
|
||||||
|
- [x] 设置AI聊天接口类型[OpenAI|OLLaMA|GenAI]
|
||||||
|
- [x] 设置AI聊天(不)支持系统提示词
|
||||||
|
- [x] 设置AI聊天接口地址https://xxx
|
||||||
- [x] 设置AI聊天密钥xxx
|
- [x] 设置AI聊天密钥xxx
|
||||||
- [x] 设置AI聊天模型名xxx
|
- [x] 设置AI聊天模型名xxx
|
||||||
- [x] 设置AI聊天系统提示词xxx
|
- [x] 查看AI聊天系统提示词
|
||||||
- [x] 重置AI聊天系统提示词
|
- [x] 重置AI聊天系统提示词
|
||||||
|
- [x] 设置AI聊天系统提示词xxx
|
||||||
- [x] 设置AI聊天分隔符`</think>`(留空则清除)
|
- [x] 设置AI聊天分隔符`</think>`(留空则清除)
|
||||||
- [x] 设置AI聊天(不)响应AT
|
- [x] 设置AI聊天(不)响应AT
|
||||||
|
|
||||||
|
|||||||
4
go.mod
4
go.mod
@ -12,7 +12,7 @@ require (
|
|||||||
github.com/FloatTech/sqlite v1.7.1
|
github.com/FloatTech/sqlite v1.7.1
|
||||||
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562
|
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562
|
||||||
github.com/FloatTech/zbpctrl v1.7.0
|
github.com/FloatTech/zbpctrl v1.7.0
|
||||||
github.com/FloatTech/zbputils v1.7.2-0.20250329125132-70de78bc2407
|
github.com/FloatTech/zbputils v1.7.2-0.20250330125231-d8be1c9d3b9c
|
||||||
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7
|
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7
|
||||||
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5
|
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5
|
||||||
github.com/Tnze/go-mc v1.20.2
|
github.com/Tnze/go-mc v1.20.2
|
||||||
@ -22,7 +22,7 @@ require (
|
|||||||
github.com/disintegration/imaging v1.6.2
|
github.com/disintegration/imaging v1.6.2
|
||||||
github.com/fumiama/ahsai v0.1.0
|
github.com/fumiama/ahsai v0.1.0
|
||||||
github.com/fumiama/cron v1.3.0
|
github.com/fumiama/cron v1.3.0
|
||||||
github.com/fumiama/deepinfra v0.0.0-20250329170232-577f83008e8d
|
github.com/fumiama/deepinfra v0.0.0-20250330125128-71ec2f7c085e
|
||||||
github.com/fumiama/go-base16384 v1.7.0
|
github.com/fumiama/go-base16384 v1.7.0
|
||||||
github.com/fumiama/go-registry v0.2.7
|
github.com/fumiama/go-registry v0.2.7
|
||||||
github.com/fumiama/gotracemoe v0.0.3
|
github.com/fumiama/gotracemoe v0.0.3
|
||||||
|
|||||||
8
go.sum
8
go.sum
@ -17,8 +17,8 @@ github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562 h1:snfw7FNFym1eNnLrQ
|
|||||||
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
|
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
|
||||||
github.com/FloatTech/zbpctrl v1.7.0 h1:Hxo6EIhJo+pHjcQP9QgIJgluaT1pHH99zkk3njqTNMo=
|
github.com/FloatTech/zbpctrl v1.7.0 h1:Hxo6EIhJo+pHjcQP9QgIJgluaT1pHH99zkk3njqTNMo=
|
||||||
github.com/FloatTech/zbpctrl v1.7.0/go.mod h1:xmM4dSwHA02Gei3ogCRiG+RTrw/7Z69PfrN5NYf8BPE=
|
github.com/FloatTech/zbpctrl v1.7.0/go.mod h1:xmM4dSwHA02Gei3ogCRiG+RTrw/7Z69PfrN5NYf8BPE=
|
||||||
github.com/FloatTech/zbputils v1.7.2-0.20250329125132-70de78bc2407 h1:2+cY/Yn30x8hOczSvnU/lnj/jgtxmGyfOfv0eJn5GQI=
|
github.com/FloatTech/zbputils v1.7.2-0.20250330125231-d8be1c9d3b9c h1:nIybmanPvQknseVOJ+s4/m3q7EZxtqMoTy3wiiZts6E=
|
||||||
github.com/FloatTech/zbputils v1.7.2-0.20250329125132-70de78bc2407/go.mod h1:LOBLheF9yCSSYAA85MtkQNyVYP1DblttTLk5OYFbtpk=
|
github.com/FloatTech/zbputils v1.7.2-0.20250330125231-d8be1c9d3b9c/go.mod h1:ArZ0fMAcmPEIXOqDmfzbSx+oYH8sssApQnbCu694iS8=
|
||||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||||
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU=
|
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU=
|
||||||
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w=
|
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w=
|
||||||
@ -59,8 +59,8 @@ github.com/fumiama/ahsai v0.1.0 h1:LXD61Kaj6kJHa3AEGsLIfKNzcgaVxg7JB72OR4yNNZ4=
|
|||||||
github.com/fumiama/ahsai v0.1.0/go.mod h1:fFeNnqgo44i8FIaguK659aQryuZeFy+4klYLQu/rfdk=
|
github.com/fumiama/ahsai v0.1.0/go.mod h1:fFeNnqgo44i8FIaguK659aQryuZeFy+4klYLQu/rfdk=
|
||||||
github.com/fumiama/cron v1.3.0 h1:ZWlwuexF+HQHl3cYytEE5HNwD99q+3vNZF1GrEiXCFo=
|
github.com/fumiama/cron v1.3.0 h1:ZWlwuexF+HQHl3cYytEE5HNwD99q+3vNZF1GrEiXCFo=
|
||||||
github.com/fumiama/cron v1.3.0/go.mod h1:bz5Izvgi/xEUI8tlBN8BI2jr9Moo8N4or0KV8xXuPDY=
|
github.com/fumiama/cron v1.3.0/go.mod h1:bz5Izvgi/xEUI8tlBN8BI2jr9Moo8N4or0KV8xXuPDY=
|
||||||
github.com/fumiama/deepinfra v0.0.0-20250329170232-577f83008e8d h1:LCiYR+AbnDn8QV3s8yJrE+N340s3KwkvLjmDDQbWYvs=
|
github.com/fumiama/deepinfra v0.0.0-20250330125128-71ec2f7c085e h1:L/Z5N6UfpuqNIiPUrjSzmrnWj3mjd3auwl/2ctpGXNY=
|
||||||
github.com/fumiama/deepinfra v0.0.0-20250329170232-577f83008e8d/go.mod h1:wW05PQSn8mo1mZIoa6LBUE+3xIBjkoONvnfPTV5ZOhY=
|
github.com/fumiama/deepinfra v0.0.0-20250330125128-71ec2f7c085e/go.mod h1:wW05PQSn8mo1mZIoa6LBUE+3xIBjkoONvnfPTV5ZOhY=
|
||||||
github.com/fumiama/go-base16384 v1.7.0 h1:6fep7XPQWxRlh4Hu+KsdH+6+YdUp+w6CwRXtMWSsXCA=
|
github.com/fumiama/go-base16384 v1.7.0 h1:6fep7XPQWxRlh4Hu+KsdH+6+YdUp+w6CwRXtMWSsXCA=
|
||||||
github.com/fumiama/go-base16384 v1.7.0/go.mod h1:OEn+947GV5gsbTAnyuUW/SrfxJYUdYupSIQXOuGOcXM=
|
github.com/fumiama/go-base16384 v1.7.0/go.mod h1:OEn+947GV5gsbTAnyuUW/SrfxJYUdYupSIQXOuGOcXM=
|
||||||
github.com/fumiama/go-registry v0.2.7 h1:tLEqgEpsiybQMqBv0dLHm5leia/z1DhajMupwnOHeNs=
|
github.com/fumiama/go-registry v0.2.7 h1:tLEqgEpsiybQMqBv0dLHm5leia/z1DhajMupwnOHeNs=
|
||||||
|
|||||||
@ -22,7 +22,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// en data [4 type] [8 temp] [8 rate] LSB
|
// en data [4 cfg] [4 type] [8 temp] [8 rate] LSB
|
||||||
en = control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
en = control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
||||||
DisableOnDefault: false,
|
DisableOnDefault: false,
|
||||||
Extra: control.ExtraFromString("aichat"),
|
Extra: control.ExtraFromString("aichat"),
|
||||||
@ -30,9 +30,11 @@ var (
|
|||||||
Help: "- 设置AI聊天触发概率10\n" +
|
Help: "- 设置AI聊天触发概率10\n" +
|
||||||
"- 设置AI聊天温度80\n" +
|
"- 设置AI聊天温度80\n" +
|
||||||
"- 设置AI聊天接口类型[OpenAI|OLLaMA|GenAI]\n" +
|
"- 设置AI聊天接口类型[OpenAI|OLLaMA|GenAI]\n" +
|
||||||
|
"- 设置AI聊天(不)支持系统提示词\n" +
|
||||||
"- 设置AI聊天接口地址https://xxx\n" +
|
"- 设置AI聊天接口地址https://xxx\n" +
|
||||||
"- 设置AI聊天密钥xxx\n" +
|
"- 设置AI聊天密钥xxx\n" +
|
||||||
"- 设置AI聊天模型名xxx\n" +
|
"- 设置AI聊天模型名xxx\n" +
|
||||||
|
"- 查看AI聊天系统提示词\n" +
|
||||||
"- 重置AI聊天系统提示词\n" +
|
"- 重置AI聊天系统提示词\n" +
|
||||||
"- 设置AI聊天系统提示词xxx\n" +
|
"- 设置AI聊天系统提示词xxx\n" +
|
||||||
"- 设置AI聊天分隔符</think>(留空则清除)\n" +
|
"- 设置AI聊天分隔符</think>(留空则清除)\n" +
|
||||||
@ -42,11 +44,12 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
modelname = model.ModelDeepDeek
|
modelname = model.ModelDeepDeek
|
||||||
systemprompt = chat.SystemPrompt
|
systemprompt = chat.SystemPrompt
|
||||||
api = deepinfra.OpenAIDeepInfra
|
api = deepinfra.OpenAIDeepInfra
|
||||||
sepstr = ""
|
sepstr = ""
|
||||||
noreplyat = false
|
noreplyat = false
|
||||||
|
nosystemprompt = false
|
||||||
)
|
)
|
||||||
|
|
||||||
var apitypes = map[string]uint8{
|
var apitypes = map[string]uint8{
|
||||||
@ -61,6 +64,7 @@ func init() {
|
|||||||
pf := en.DataFolder() + "sep.txt"
|
pf := en.DataFolder() + "sep.txt"
|
||||||
af := en.DataFolder() + "api.txt"
|
af := en.DataFolder() + "api.txt"
|
||||||
nf := en.DataFolder() + "NoReplyAT"
|
nf := en.DataFolder() + "NoReplyAT"
|
||||||
|
syspf := en.DataFolder() + "NoSystemPrompt"
|
||||||
if file.IsExist(mf) {
|
if file.IsExist(mf) {
|
||||||
data, err := os.ReadFile(mf)
|
data, err := os.ReadFile(mf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -94,6 +98,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
noreplyat = file.IsExist(nf)
|
noreplyat = file.IsExist(nf)
|
||||||
|
nosystemprompt = file.IsExist(syspf)
|
||||||
|
|
||||||
en.OnMessage(func(ctx *zero.Ctx) bool {
|
en.OnMessage(func(ctx *zero.Ctx) bool {
|
||||||
return ctx.ExtractPlainText() != "" && (!noreplyat || (noreplyat && !ctx.Event.IsToMe))
|
return ctx.ExtractPlainText() != "" && (!noreplyat || (noreplyat && !ctx.Event.IsToMe))
|
||||||
@ -134,24 +139,21 @@ func init() {
|
|||||||
temp = 100
|
temp = 100
|
||||||
}
|
}
|
||||||
|
|
||||||
var x deepinfra.API
|
x := deepinfra.NewAPI(api, key)
|
||||||
var mod model.Protocol
|
var mod model.Protocol
|
||||||
|
|
||||||
switch typ {
|
switch typ {
|
||||||
case 0:
|
case 0:
|
||||||
x = deepinfra.NewAPI(api, key)
|
|
||||||
mod = model.NewOpenAI(
|
mod = model.NewOpenAI(
|
||||||
modelname, sepstr,
|
modelname, sepstr,
|
||||||
float32(temp)/100, 0.9, 4096,
|
float32(temp)/100, 0.9, 4096,
|
||||||
)
|
)
|
||||||
case 1:
|
case 1:
|
||||||
x = deepinfra.NewAPI(api, key)
|
|
||||||
mod = model.NewOLLaMA(
|
mod = model.NewOLLaMA(
|
||||||
modelname, sepstr,
|
modelname, sepstr,
|
||||||
float32(temp)/100, 0.9, 4096,
|
float32(temp)/100, 0.9, 4096,
|
||||||
)
|
)
|
||||||
case 2:
|
case 2:
|
||||||
x = deepinfra.NewAPI(api, key)
|
|
||||||
mod = model.NewGenAI(
|
mod = model.NewGenAI(
|
||||||
modelname,
|
modelname,
|
||||||
float32(temp)/100, 0.9, 4096,
|
float32(temp)/100, 0.9, 4096,
|
||||||
@ -161,7 +163,7 @@ func init() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := x.Request(chat.Ask(mod, gid, systemprompt))
|
data, err := x.Request(chat.Ask(mod, gid, systemprompt, nosystemprompt))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Warnln("[aichat] post err:", err)
|
logrus.Warnln("[aichat] post err:", err)
|
||||||
return
|
return
|
||||||
@ -344,6 +346,9 @@ func init() {
|
|||||||
}
|
}
|
||||||
ctx.SendChain(message.Text("成功"))
|
ctx.SendChain(message.Text("成功"))
|
||||||
})
|
})
|
||||||
|
en.OnFullMatch("查看AI聊天系统提示词", zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
|
||||||
|
ctx.SendChain(message.Text(systemprompt))
|
||||||
|
})
|
||||||
en.OnFullMatch("重置AI聊天系统提示词", zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
|
en.OnFullMatch("重置AI聊天系统提示词", zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
|
||||||
systemprompt = chat.SystemPrompt
|
systemprompt = chat.SystemPrompt
|
||||||
_ = os.Remove(sf)
|
_ = os.Remove(sf)
|
||||||
@ -387,4 +392,26 @@ func init() {
|
|||||||
}
|
}
|
||||||
ctx.SendChain(message.Text("成功"))
|
ctx.SendChain(message.Text("成功"))
|
||||||
})
|
})
|
||||||
|
en.OnRegex("^设置AI聊天(不)?支持系统提示词$", zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
|
||||||
|
args := ctx.State["regex_matched"].([]string)
|
||||||
|
isno := args[1] == "不"
|
||||||
|
if isno {
|
||||||
|
f, err := os.Create(syspf)
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
_, err = f.WriteString("PLACEHOLDER")
|
||||||
|
if err != nil {
|
||||||
|
ctx.SendChain(message.Text("ERROR: ", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
nosystemprompt = true
|
||||||
|
} else {
|
||||||
|
_ = os.Remove(syspf)
|
||||||
|
nosystemprompt = false
|
||||||
|
}
|
||||||
|
ctx.SendChain(message.Text("成功"))
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user