@@ -22,17 +22,19 @@ import (
22
22
)
23
23
24
24
var (
25
- // en data [4 type] [8 temp] [8 rate] LSB
25
+ // en data [4 cfg] [4 type] [8 temp] [8 rate] LSB
26
26
en = control .AutoRegister (& ctrl.Options [* zero.Ctx ]{
27
27
DisableOnDefault : false ,
28
28
Extra : control .ExtraFromString ("aichat" ),
29
29
Brief : "OpenAI聊天" ,
30
30
Help : "- 设置AI聊天触发概率10\n " +
31
31
"- 设置AI聊天温度80\n " +
32
32
"- 设置AI聊天接口类型[OpenAI|OLLaMA|GenAI]\n " +
33
+ "- 设置AI聊天(不)支持系统提示词\n " +
33
34
"- 设置AI聊天接口地址https://xxx\n " +
34
35
"- 设置AI聊天密钥xxx\n " +
35
36
"- 设置AI聊天模型名xxx\n " +
37
+ "- 查看AI聊天系统提示词\n " +
36
38
"- 重置AI聊天系统提示词\n " +
37
39
"- 设置AI聊天系统提示词xxx\n " +
38
40
"- 设置AI聊天分隔符</think>(留空则清除)\n " +
@@ -42,11 +44,12 @@ var (
42
44
)
43
45
44
46
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
50
53
)
51
54
52
55
var apitypes = map [string ]uint8 {
@@ -61,6 +64,7 @@ func init() {
61
64
pf := en .DataFolder () + "sep.txt"
62
65
af := en .DataFolder () + "api.txt"
63
66
nf := en .DataFolder () + "NoReplyAT"
67
+ syspf := en .DataFolder () + "NoSystemPrompt"
64
68
if file .IsExist (mf ) {
65
69
data , err := os .ReadFile (mf )
66
70
if err != nil {
@@ -94,6 +98,7 @@ func init() {
94
98
}
95
99
}
96
100
noreplyat = file .IsExist (nf )
101
+ nosystemprompt = file .IsExist (syspf )
97
102
98
103
en .OnMessage (func (ctx * zero.Ctx ) bool {
99
104
return ctx .ExtractPlainText () != "" && (! noreplyat || (noreplyat && ! ctx .Event .IsToMe ))
@@ -134,24 +139,21 @@ func init() {
134
139
temp = 100
135
140
}
136
141
137
- var x deepinfra.API
142
+ x := deepinfra .NewAPI ( api , key )
138
143
var mod model.Protocol
139
144
140
145
switch typ {
141
146
case 0 :
142
- x = deepinfra .NewAPI (api , key )
143
147
mod = model .NewOpenAI (
144
148
modelname , sepstr ,
145
149
float32 (temp )/ 100 , 0.9 , 4096 ,
146
150
)
147
151
case 1 :
148
- x = deepinfra .NewAPI (api , key )
149
152
mod = model .NewOLLaMA (
150
153
modelname , sepstr ,
151
154
float32 (temp )/ 100 , 0.9 , 4096 ,
152
155
)
153
156
case 2 :
154
- x = deepinfra .NewAPI (api , key )
155
157
mod = model .NewGenAI (
156
158
modelname ,
157
159
float32 (temp )/ 100 , 0.9 , 4096 ,
@@ -161,7 +163,7 @@ func init() {
161
163
return
162
164
}
163
165
164
- data , err := x .Request (chat .Ask (mod , gid , systemprompt ))
166
+ data , err := x .Request (chat .Ask (mod , gid , systemprompt , nosystemprompt ))
165
167
if err != nil {
166
168
logrus .Warnln ("[aichat] post err:" , err )
167
169
return
@@ -344,6 +346,9 @@ func init() {
344
346
}
345
347
ctx .SendChain (message .Text ("成功" ))
346
348
})
349
+ en .OnFullMatch ("查看AI聊天系统提示词" , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).Handle (func (ctx * zero.Ctx ) {
350
+ ctx .SendChain (message .Text (systemprompt ))
351
+ })
347
352
en .OnFullMatch ("重置AI聊天系统提示词" , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).Handle (func (ctx * zero.Ctx ) {
348
353
systemprompt = chat .SystemPrompt
349
354
_ = os .Remove (sf )
@@ -387,4 +392,26 @@ func init() {
387
392
}
388
393
ctx .SendChain (message .Text ("成功" ))
389
394
})
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
+ })
390
417
}
0 commit comments