@@ -22,17 +22,19 @@ import (
2222)
2323
2424var (
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
4446var (
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
5255var 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