|
|
@@ -90,41 +90,43 @@ func TextHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIError *types
|
|
|
|
|
|
if info.ChannelSetting.SystemPrompt != "" {
|
|
|
// 如果有系统提示,则将其添加到请求中
|
|
|
- request := convertedRequest.(*dto.GeneralOpenAIRequest)
|
|
|
- containSystemPrompt := false
|
|
|
- for _, message := range request.Messages {
|
|
|
- if message.Role == request.GetSystemRoleName() {
|
|
|
- containSystemPrompt = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if !containSystemPrompt {
|
|
|
- // 如果没有系统提示,则添加系统提示
|
|
|
- systemMessage := dto.Message{
|
|
|
- Role: request.GetSystemRoleName(),
|
|
|
- Content: info.ChannelSetting.SystemPrompt,
|
|
|
- }
|
|
|
- request.Messages = append([]dto.Message{systemMessage}, request.Messages...)
|
|
|
- } else if info.ChannelSetting.SystemPromptOverride {
|
|
|
- common.SetContextKey(c, constant.ContextKeySystemPromptOverride, true)
|
|
|
- // 如果有系统提示,且允许覆盖,则拼接到前面
|
|
|
- for i, message := range request.Messages {
|
|
|
+ request, ok := convertedRequest.(*dto.GeneralOpenAIRequest)
|
|
|
+ if ok {
|
|
|
+ containSystemPrompt := false
|
|
|
+ for _, message := range request.Messages {
|
|
|
if message.Role == request.GetSystemRoleName() {
|
|
|
- if message.IsStringContent() {
|
|
|
- request.Messages[i].SetStringContent(info.ChannelSetting.SystemPrompt + "\n" + message.StringContent())
|
|
|
- } else {
|
|
|
- contents := message.ParseContent()
|
|
|
- contents = append([]dto.MediaContent{
|
|
|
- {
|
|
|
- Type: dto.ContentTypeText,
|
|
|
- Text: info.ChannelSetting.SystemPrompt,
|
|
|
- },
|
|
|
- }, contents...)
|
|
|
- request.Messages[i].Content = contents
|
|
|
- }
|
|
|
+ containSystemPrompt = true
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
+ if !containSystemPrompt {
|
|
|
+ // 如果没有系统提示,则添加系统提示
|
|
|
+ systemMessage := dto.Message{
|
|
|
+ Role: request.GetSystemRoleName(),
|
|
|
+ Content: info.ChannelSetting.SystemPrompt,
|
|
|
+ }
|
|
|
+ request.Messages = append([]dto.Message{systemMessage}, request.Messages...)
|
|
|
+ } else if info.ChannelSetting.SystemPromptOverride {
|
|
|
+ common.SetContextKey(c, constant.ContextKeySystemPromptOverride, true)
|
|
|
+ // 如果有系统提示,且允许覆盖,则拼接到前面
|
|
|
+ for i, message := range request.Messages {
|
|
|
+ if message.Role == request.GetSystemRoleName() {
|
|
|
+ if message.IsStringContent() {
|
|
|
+ request.Messages[i].SetStringContent(info.ChannelSetting.SystemPrompt + "\n" + message.StringContent())
|
|
|
+ } else {
|
|
|
+ contents := message.ParseContent()
|
|
|
+ contents = append([]dto.MediaContent{
|
|
|
+ {
|
|
|
+ Type: dto.ContentTypeText,
|
|
|
+ Text: info.ChannelSetting.SystemPrompt,
|
|
|
+ },
|
|
|
+ }, contents...)
|
|
|
+ request.Messages[i].Content = contents
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|