mirror of
https://github.com/alibaba/higress.git
synced 2026-06-07 11:47:30 +08:00
Fix the issue with multiple system prompts when using qwen-long file id mode. (#994)
Signed-off-by: johnlanni <zty98751@alibaba-inc.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
PLUGIN_NAME ?= hello-world
|
PLUGIN_NAME ?= hello-world
|
||||||
BUILDER_REGISTRY ?= higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/
|
BUILDER_REGISTRY ?= higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/
|
||||||
REGISTRY ?=
|
REGISTRY ?= higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/
|
||||||
GO_VERSION ?= 1.19
|
GO_VERSION ?= 1.19
|
||||||
TINYGO_VERSION ?= 0.28.1
|
TINYGO_VERSION ?= 0.28.1
|
||||||
ORAS_VERSION ?= 1.0.0
|
ORAS_VERSION ?= 1.0.0
|
||||||
@@ -12,12 +12,14 @@ COMMIT_ID := $(shell git rev-parse --short HEAD 2>/dev/null)
|
|||||||
IMAGE_TAG = $(if $(strip $(PLUGIN_VERSION)),${PLUGIN_VERSION},${BUILD_TIME}-${COMMIT_ID})
|
IMAGE_TAG = $(if $(strip $(PLUGIN_VERSION)),${PLUGIN_VERSION},${BUILD_TIME}-${COMMIT_ID})
|
||||||
IMG ?= ${REGISTRY}${PLUGIN_NAME}:${IMAGE_TAG}
|
IMG ?= ${REGISTRY}${PLUGIN_NAME}:${IMAGE_TAG}
|
||||||
GOPROXY := $(shell go env GOPROXY)
|
GOPROXY := $(shell go env GOPROXY)
|
||||||
|
EXTRA_TAGS ?=
|
||||||
|
|
||||||
.DEFAULT:
|
.DEFAULT:
|
||||||
build:
|
build:
|
||||||
DOCKER_BUILDKIT=1 docker build --build-arg PLUGIN_NAME=${PLUGIN_NAME} \
|
DOCKER_BUILDKIT=1 docker build --build-arg PLUGIN_NAME=${PLUGIN_NAME} \
|
||||||
--build-arg BUILDER=${BUILDER} \
|
--build-arg BUILDER=${BUILDER} \
|
||||||
--build-arg GOPROXY=$(GOPROXY) \
|
--build-arg GOPROXY=$(GOPROXY) \
|
||||||
|
--build-arg EXTRA_TAGS=$(EXTRA_TAGS) \
|
||||||
-t ${IMG} \
|
-t ${IMG} \
|
||||||
--output extensions/${PLUGIN_NAME} \
|
--output extensions/${PLUGIN_NAME} \
|
||||||
.
|
.
|
||||||
@@ -28,6 +30,7 @@ build-image:
|
|||||||
DOCKER_BUILDKIT=1 docker build --build-arg PLUGIN_NAME=${PLUGIN_NAME} \
|
DOCKER_BUILDKIT=1 docker build --build-arg PLUGIN_NAME=${PLUGIN_NAME} \
|
||||||
--build-arg BUILDER=${BUILDER} \
|
--build-arg BUILDER=${BUILDER} \
|
||||||
--build-arg GOPROXY=$(GOPROXY) \
|
--build-arg GOPROXY=$(GOPROXY) \
|
||||||
|
--build-arg EXTRA_TAGS=$(EXTRA_TAGS) \
|
||||||
-t ${IMG} \
|
-t ${IMG} \
|
||||||
.
|
.
|
||||||
@echo ""
|
@echo ""
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ func (m *qwenProvider) OnRequestBody(ctx wrapper.HttpContext, apiName ApiName, b
|
|||||||
log.Errorf("failed to load context file: %v", err)
|
log.Errorf("failed to load context file: %v", err)
|
||||||
_ = util.SendResponse(500, util.MimeTypeTextPlain, fmt.Sprintf("failed to load context file: %v", err))
|
_ = util.SendResponse(500, util.MimeTypeTextPlain, fmt.Sprintf("failed to load context file: %v", err))
|
||||||
}
|
}
|
||||||
m.insertContextMessage(request, content)
|
m.insertContextMessage(request, content, false)
|
||||||
if err := replaceJsonRequestBody(request, log); err != nil {
|
if err := replaceJsonRequestBody(request, log); err != nil {
|
||||||
_ = util.SendResponse(500, util.MimeTypeTextPlain, fmt.Sprintf("failed to replace request body: %v", err))
|
_ = util.SendResponse(500, util.MimeTypeTextPlain, fmt.Sprintf("failed to replace request body: %v", err))
|
||||||
}
|
}
|
||||||
@@ -301,7 +301,7 @@ func (m *qwenProvider) buildQwenTextGenerationRequest(origRequest *chatCompletio
|
|||||||
builder.WriteString("fileid://")
|
builder.WriteString("fileid://")
|
||||||
builder.WriteString(fileId)
|
builder.WriteString(fileId)
|
||||||
}
|
}
|
||||||
contextMessageId := m.insertContextMessage(request, builder.String())
|
contextMessageId := m.insertContextMessage(request, builder.String(), true)
|
||||||
if contextMessageId == 0 {
|
if contextMessageId == 0 {
|
||||||
// The context message cannot come first. We need to add another dummy system message before it.
|
// The context message cannot come first. We need to add another dummy system message before it.
|
||||||
request.Input.Messages = append([]qwenMessage{{Role: roleSystem, Content: qwenDummySystemMessageContent}}, request.Input.Messages...)
|
request.Input.Messages = append([]qwenMessage{{Role: roleSystem, Content: qwenDummySystemMessageContent}}, request.Input.Messages...)
|
||||||
@@ -417,7 +417,7 @@ func (m *qwenProvider) convertStreamEvent(ctx wrapper.HttpContext, responseBuild
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *qwenProvider) insertContextMessage(request *qwenTextGenRequest, content string) int {
|
func (m *qwenProvider) insertContextMessage(request *qwenTextGenRequest, content string, onlyOneSystemBeforeFile bool) int {
|
||||||
fileMessage := qwenMessage{
|
fileMessage := qwenMessage{
|
||||||
Role: roleSystem,
|
Role: roleSystem,
|
||||||
Content: content,
|
Content: content,
|
||||||
@@ -435,9 +435,19 @@ func (m *qwenProvider) insertContextMessage(request *qwenTextGenRequest, content
|
|||||||
if firstNonSystemMessageIndex == -1 {
|
if firstNonSystemMessageIndex == -1 {
|
||||||
request.Input.Messages = append([]qwenMessage{fileMessage}, request.Input.Messages...)
|
request.Input.Messages = append([]qwenMessage{fileMessage}, request.Input.Messages...)
|
||||||
return 0
|
return 0
|
||||||
} else {
|
} else if !onlyOneSystemBeforeFile {
|
||||||
request.Input.Messages = append(request.Input.Messages[:firstNonSystemMessageIndex], append([]qwenMessage{fileMessage}, request.Input.Messages[firstNonSystemMessageIndex:]...)...)
|
request.Input.Messages = append(request.Input.Messages[:firstNonSystemMessageIndex], append([]qwenMessage{fileMessage}, request.Input.Messages[firstNonSystemMessageIndex:]...)...)
|
||||||
return firstNonSystemMessageIndex
|
return firstNonSystemMessageIndex
|
||||||
|
} else {
|
||||||
|
builder := strings.Builder{}
|
||||||
|
for _, message := range request.Input.Messages[:firstNonSystemMessageIndex] {
|
||||||
|
if builder.Len() != 0 {
|
||||||
|
builder.WriteString("\n")
|
||||||
|
}
|
||||||
|
builder.WriteString(message.Content)
|
||||||
|
}
|
||||||
|
request.Input.Messages = append([]qwenMessage{{Role: roleSystem, Content: builder.String()}, fileMessage}, request.Input.Messages[firstNonSystemMessageIndex:]...)
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user