Skip to content

Commit 62e9fe6

Browse files
committed
feat(aichat): add more funcs
1 parent 2df5216 commit 62e9fe6

File tree

4 files changed

+49
-18
lines changed

4 files changed

+49
-18
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1558,10 +1558,14 @@ print("run[CQ:image,file="+j["img"]+"]")
15581558

15591559
- [x] 设置AI聊天触发概率10
15601560
- [x] 设置AI聊天温度80
1561+
- [x] 设置AI聊天接口类型[OpenAI|OLLaMA|GenAI]
1562+
- [x] 设置AI聊天(不)支持系统提示词
1563+
- [x] 设置AI聊天接口地址https://xxx
15611564
- [x] 设置AI聊天密钥xxx
15621565
- [x] 设置AI聊天模型名xxx
1563-
- [x] 设置AI聊天系统提示词xxx
1566+
- [x] 查看AI聊天系统提示词
15641567
- [x] 重置AI聊天系统提示词
1568+
- [x] 设置AI聊天系统提示词xxx
15651569
- [x] 设置AI聊天分隔符`</think>`(留空则清除)
15661570
- [x] 设置AI聊天(不)响应AT
15671571

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
github.com/FloatTech/sqlite v1.7.1
1313
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562
1414
github.com/FloatTech/zbpctrl v1.7.0
15-
github.com/FloatTech/zbputils v1.7.2-0.20250329125132-70de78bc2407
15+
github.com/FloatTech/zbputils v1.7.2-0.20250330125231-d8be1c9d3b9c
1616
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7
1717
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5
1818
github.com/Tnze/go-mc v1.20.2
@@ -22,7 +22,7 @@ require (
2222
github.com/disintegration/imaging v1.6.2
2323
github.com/fumiama/ahsai v0.1.0
2424
github.com/fumiama/cron v1.3.0
25-
github.com/fumiama/deepinfra v0.0.0-20250329170232-577f83008e8d
25+
github.com/fumiama/deepinfra v0.0.0-20250330125128-71ec2f7c085e
2626
github.com/fumiama/go-base16384 v1.7.0
2727
github.com/fumiama/go-registry v0.2.7
2828
github.com/fumiama/gotracemoe v0.0.3

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562 h1:snfw7FNFym1eNnLrQ
1717
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
1818
github.com/FloatTech/zbpctrl v1.7.0 h1:Hxo6EIhJo+pHjcQP9QgIJgluaT1pHH99zkk3njqTNMo=
1919
github.com/FloatTech/zbpctrl v1.7.0/go.mod h1:xmM4dSwHA02Gei3ogCRiG+RTrw/7Z69PfrN5NYf8BPE=
20-
github.com/FloatTech/zbputils v1.7.2-0.20250329125132-70de78bc2407 h1:2+cY/Yn30x8hOczSvnU/lnj/jgtxmGyfOfv0eJn5GQI=
21-
github.com/FloatTech/zbputils v1.7.2-0.20250329125132-70de78bc2407/go.mod h1:LOBLheF9yCSSYAA85MtkQNyVYP1DblttTLk5OYFbtpk=
20+
github.com/FloatTech/zbputils v1.7.2-0.20250330125231-d8be1c9d3b9c h1:nIybmanPvQknseVOJ+s4/m3q7EZxtqMoTy3wiiZts6E=
21+
github.com/FloatTech/zbputils v1.7.2-0.20250330125231-d8be1c9d3b9c/go.mod h1:ArZ0fMAcmPEIXOqDmfzbSx+oYH8sssApQnbCu694iS8=
2222
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
2323
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU=
2424
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=
5959
github.com/fumiama/ahsai v0.1.0/go.mod h1:fFeNnqgo44i8FIaguK659aQryuZeFy+4klYLQu/rfdk=
6060
github.com/fumiama/cron v1.3.0 h1:ZWlwuexF+HQHl3cYytEE5HNwD99q+3vNZF1GrEiXCFo=
6161
github.com/fumiama/cron v1.3.0/go.mod h1:bz5Izvgi/xEUI8tlBN8BI2jr9Moo8N4or0KV8xXuPDY=
62-
github.com/fumiama/deepinfra v0.0.0-20250329170232-577f83008e8d h1:LCiYR+AbnDn8QV3s8yJrE+N340s3KwkvLjmDDQbWYvs=
63-
github.com/fumiama/deepinfra v0.0.0-20250329170232-577f83008e8d/go.mod h1:wW05PQSn8mo1mZIoa6LBUE+3xIBjkoONvnfPTV5ZOhY=
62+
github.com/fumiama/deepinfra v0.0.0-20250330125128-71ec2f7c085e h1:L/Z5N6UfpuqNIiPUrjSzmrnWj3mjd3auwl/2ctpGXNY=
63+
github.com/fumiama/deepinfra v0.0.0-20250330125128-71ec2f7c085e/go.mod h1:wW05PQSn8mo1mZIoa6LBUE+3xIBjkoONvnfPTV5ZOhY=
6464
github.com/fumiama/go-base16384 v1.7.0 h1:6fep7XPQWxRlh4Hu+KsdH+6+YdUp+w6CwRXtMWSsXCA=
6565
github.com/fumiama/go-base16384 v1.7.0/go.mod h1:OEn+947GV5gsbTAnyuUW/SrfxJYUdYupSIQXOuGOcXM=
6666
github.com/fumiama/go-registry v0.2.7 h1:tLEqgEpsiybQMqBv0dLHm5leia/z1DhajMupwnOHeNs=

plugin/aichat/main.go

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,19 @@ import (
2222
)
2323

2424
var (
25-
// en data [4 type] [8 temp] [8 rate] LSB
25+
// en data [4 cfg] [4 type] [8 temp] [8 rate] LSB
2626
en = control.AutoRegister(&ctrl.Options[*zero.Ctx]{
2727
DisableOnDefault: false,
2828
Extra: control.ExtraFromString("aichat"),
2929
Brief: "OpenAI聊天",
3030
Help: "- 设置AI聊天触发概率10\n" +
3131
"- 设置AI聊天温度80\n" +
3232
"- 设置AI聊天接口类型[OpenAI|OLLaMA|GenAI]\n" +
33+
"- 设置AI聊天(不)支持系统提示词\n" +
3334
"- 设置AI聊天接口地址https://xxx\n" +
3435
"- 设置AI聊天密钥xxx\n" +
3536
"- 设置AI聊天模型名xxx\n" +
37+
"- 查看AI聊天系统提示词\n" +
3638
"- 重置AI聊天系统提示词\n" +
3739
"- 设置AI聊天系统提示词xxx\n" +
3840
"- 设置AI聊天分隔符</think>(留空则清除)\n" +
@@ -42,11 +44,12 @@ var (
4244
)
4345

4446
var (
45-
modelname = model.ModelDeepDeek
46-
systemprompt = chat.SystemPrompt
47-
api = deepinfra.OpenAIDeepInfra
48-
sepstr = ""
49-
noreplyat = false
47+
modelname = model.ModelDeepDeek
48+
systemprompt = chat.SystemPrompt
49+
api = deepinfra.OpenAIDeepInfra
50+
sepstr = ""
51+
noreplyat = false
52+
nosystemprompt = false
5053
)
5154

5255
var apitypes = map[string]uint8{
@@ -61,6 +64,7 @@ func init() {
6164
pf := en.DataFolder() + "sep.txt"
6265
af := en.DataFolder() + "api.txt"
6366
nf := en.DataFolder() + "NoReplyAT"
67+
syspf := en.DataFolder() + "NoSystemPrompt"
6468
if file.IsExist(mf) {
6569
data, err := os.ReadFile(mf)
6670
if err != nil {
@@ -94,6 +98,7 @@ func init() {
9498
}
9599
}
96100
noreplyat = file.IsExist(nf)
101+
nosystemprompt = file.IsExist(syspf)
97102

98103
en.OnMessage(func(ctx *zero.Ctx) bool {
99104
return ctx.ExtractPlainText() != "" && (!noreplyat || (noreplyat && !ctx.Event.IsToMe))
@@ -134,24 +139,21 @@ func init() {
134139
temp = 100
135140
}
136141

137-
var x deepinfra.API
142+
x := deepinfra.NewAPI(api, key)
138143
var mod model.Protocol
139144

140145
switch typ {
141146
case 0:
142-
x = deepinfra.NewAPI(api, key)
143147
mod = model.NewOpenAI(
144148
modelname, sepstr,
145149
float32(temp)/100, 0.9, 4096,
146150
)
147151
case 1:
148-
x = deepinfra.NewAPI(api, key)
149152
mod = model.NewOLLaMA(
150153
modelname, sepstr,
151154
float32(temp)/100, 0.9, 4096,
152155
)
153156
case 2:
154-
x = deepinfra.NewAPI(api, key)
155157
mod = model.NewGenAI(
156158
modelname,
157159
float32(temp)/100, 0.9, 4096,
@@ -161,7 +163,7 @@ func init() {
161163
return
162164
}
163165

164-
data, err := x.Request(chat.Ask(mod, gid, systemprompt))
166+
data, err := x.Request(chat.Ask(mod, gid, systemprompt, nosystemprompt))
165167
if err != nil {
166168
logrus.Warnln("[aichat] post err:", err)
167169
return
@@ -344,6 +346,9 @@ func init() {
344346
}
345347
ctx.SendChain(message.Text("成功"))
346348
})
349+
en.OnFullMatch("查看AI聊天系统提示词", zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
350+
ctx.SendChain(message.Text(systemprompt))
351+
})
347352
en.OnFullMatch("重置AI聊天系统提示词", zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
348353
systemprompt = chat.SystemPrompt
349354
_ = os.Remove(sf)
@@ -387,4 +392,26 @@ func init() {
387392
}
388393
ctx.SendChain(message.Text("成功"))
389394
})
395+
en.OnRegex("^设置AI聊天(不)?支持系统提示词$", zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
396+
args := ctx.State["regex_matched"].([]string)
397+
isno := args[1] == "不"
398+
if isno {
399+
f, err := os.Create(syspf)
400+
if err != nil {
401+
ctx.SendChain(message.Text("ERROR: ", err))
402+
return
403+
}
404+
defer f.Close()
405+
_, err = f.WriteString("PLACEHOLDER")
406+
if err != nil {
407+
ctx.SendChain(message.Text("ERROR: ", err))
408+
return
409+
}
410+
nosystemprompt = true
411+
} else {
412+
_ = os.Remove(syspf)
413+
nosystemprompt = false
414+
}
415+
ctx.SendChain(message.Text("成功"))
416+
})
390417
}

0 commit comments

Comments
 (0)