mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-04-19 06:47:26 +00:00
fix: claude system prompt overwrite
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"one-api/common"
|
"one-api/common"
|
||||||
|
"one-api/constant"
|
||||||
"one-api/dto"
|
"one-api/dto"
|
||||||
relaycommon "one-api/relay/common"
|
relaycommon "one-api/relay/common"
|
||||||
"one-api/relay/helper"
|
"one-api/relay/helper"
|
||||||
@@ -69,6 +70,31 @@ func ClaudeHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIError *typ
|
|||||||
info.UpstreamModelName = request.Model
|
info.UpstreamModelName = request.Model
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if info.ChannelSetting.SystemPrompt != "" && info.ChannelSetting.SystemPromptOverride {
|
||||||
|
if request.System == nil {
|
||||||
|
request.SetStringSystem(info.ChannelSetting.SystemPrompt)
|
||||||
|
} else if info.ChannelSetting.SystemPromptOverride {
|
||||||
|
common.SetContextKey(c, constant.ContextKeySystemPromptOverride, true)
|
||||||
|
if request.IsStringSystem() {
|
||||||
|
existing := strings.TrimSpace(request.GetStringSystem())
|
||||||
|
if existing == "" {
|
||||||
|
request.SetStringSystem(info.ChannelSetting.SystemPrompt)
|
||||||
|
} else {
|
||||||
|
request.SetStringSystem(info.ChannelSetting.SystemPrompt + "\n" + existing)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
systemContents := request.ParseSystem()
|
||||||
|
newSystem := dto.ClaudeMediaMessage{Type: dto.ContentTypeText}
|
||||||
|
newSystem.SetText(info.ChannelSetting.SystemPrompt)
|
||||||
|
if len(systemContents) == 0 {
|
||||||
|
request.System = []dto.ClaudeMediaMessage{newSystem}
|
||||||
|
} else {
|
||||||
|
request.System = append([]dto.ClaudeMediaMessage{newSystem}, systemContents...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var requestBody io.Reader
|
var requestBody io.Reader
|
||||||
if model_setting.GetGlobalSettings().PassThroughRequestEnabled || info.ChannelSetting.PassThroughBodyEnabled {
|
if model_setting.GetGlobalSettings().PassThroughRequestEnabled || info.ChannelSetting.PassThroughBodyEnabled {
|
||||||
body, err := common.GetRequestBody(c)
|
body, err := common.GetRequestBody(c)
|
||||||
|
|||||||
Reference in New Issue
Block a user