diff --git a/internal/apps/ai-proxy/filters/azure-director/filter.go b/internal/apps/ai-proxy/filters/azure-director/filter.go index 67a46cb0b7f..0284214c928 100644 --- a/internal/apps/ai-proxy/filters/azure-director/filter.go +++ b/internal/apps/ai-proxy/filters/azure-director/filter.go @@ -28,7 +28,6 @@ import ( "github.com/pkg/errors" "github.com/sashabaranov/go-openai" - "github.com/sirupsen/logrus" "sigs.k8s.io/yaml" "github.com/erda-project/erda-infra/base/logs" @@ -368,13 +367,13 @@ func (f *AzureDirector) AddContextMessages(ctx context.Context) error { infor := reverseproxy.NewInfor(ctx, req) var openaiReq openai.ChatCompletionRequest if err := json.NewDecoder(infor.BodyBuffer()).Decode(&openaiReq); err != nil && err != io.EOF { - logrus.Errorf("failed to decode request body, err: %v", err) + ctxhelper.GetLogger(ctx).Errorf("failed to decode request body, err: %v", err) return } openaiReq.Messages = messageGroup.AllMessages b, err := json.Marshal(&openaiReq) if err != nil { - logrus.Errorf("failed to marshal request body, err: %v", err) + ctxhelper.GetLogger(ctx).Errorf("failed to marshal request body, err: %v", err) return } infor.SetBody(io.NopCloser(strings.NewReader(string(b))), int64(len(b))) diff --git a/internal/apps/ai-proxy/filters/context-chat/filter.go b/internal/apps/ai-proxy/filters/context-chat/filter.go index 27d3e5db284..45db206d446 100644 --- a/internal/apps/ai-proxy/filters/context-chat/filter.go +++ b/internal/apps/ai-proxy/filters/context-chat/filter.go @@ -101,7 +101,15 @@ func (c *SessionContext) OnRequest(ctx context.Context, _ http.ResponseWriter, i // handle user message, wrap by '|start| your question here |end|' // to avoid from content-filter if msg.Role == openai.ChatMessageRoleUser { - msg.Content = vars.WrapUserPrompt(msg.Content) + if msg.Content != "" { + msg.Content = vars.WrapUserPrompt(msg.Content) + } else { + for i, part := range msg.MultiContent { + if part.Text != "" { + msg.MultiContent[i].Text = vars.WrapUserPrompt(part.Text) + } + } + } } requestedMessages = append(requestedMessages, msg) } diff --git a/internal/apps/ai-proxy/filters/dashscope-director/req.go b/internal/apps/ai-proxy/filters/dashscope-director/req.go index fabd4b13bf0..aefd6ad1aeb 100644 --- a/internal/apps/ai-proxy/filters/dashscope-director/req.go +++ b/internal/apps/ai-proxy/filters/dashscope-director/req.go @@ -104,11 +104,11 @@ func oneDirector(ctx context.Context, w http.ResponseWriter, infor reverseproxy. case metadata.AliyunDashScopeRequestTypeOpenAI: bodyObj = oreq case metadata.AliyunDashScopeRequestTypeDs: - qwreq, err := sdk.ConvertOpenAIChatRequestToDsRequest(oreq, model.Type) + dsreq, err := sdk.ConvertOpenAIChatRequestToDsRequest(ctx, oreq, model.Type) if err != nil { return reverseproxy.Intercept, fmt.Errorf("failed to convert openai chat request to dashscope request, err: %v", err) } - bodyObj = qwreq + bodyObj = dsreq default: return reverseproxy.Intercept, fmt.Errorf("unsupported metadata.public.request_type: %s", modelMeta.Public.RequestType) } diff --git a/internal/apps/ai-proxy/filters/dashscope-director/resp.go b/internal/apps/ai-proxy/filters/dashscope-director/resp.go index 2de3dc12d13..74fea6a9074 100644 --- a/internal/apps/ai-proxy/filters/dashscope-director/resp.go +++ b/internal/apps/ai-proxy/filters/dashscope-director/resp.go @@ -82,7 +82,7 @@ func (f *DashScopeDirector) dsHandleResponseStreamChunk(ctx context.Context, w r // convert ds response to openai response openaiChunk, err := sdk.ConvertDsStreamChunkToOpenAIFormat(*lastCompleteDeltaResp, modelName) if err != nil { - return reverseproxy.Intercept, fmt.Errorf("failed to convert qwenVL response to openai response, err: %v", err) + return reverseproxy.Intercept, fmt.Errorf("failed to convert dashscope response to openai response, err: %v", err) } b, err := json.Marshal(&openaiChunk) if err != nil { diff --git a/internal/apps/ai-proxy/filters/dashscope-director/sdk/converter.go b/internal/apps/ai-proxy/filters/dashscope-director/sdk/converter.go index 7aa146a1a74..560400b9ba9 100644 --- a/internal/apps/ai-proxy/filters/dashscope-director/sdk/converter.go +++ b/internal/apps/ai-proxy/filters/dashscope-director/sdk/converter.go @@ -15,16 +15,17 @@ package sdk import ( + "context" "fmt" "strings" "github.com/sashabaranov/go-openai" - "github.com/sirupsen/logrus" "github.com/erda-project/erda-proto-go/apps/aiproxy/model/pb" + "github.com/erda-project/erda/internal/apps/ai-proxy/common/ctxhelper" ) -func ConvertOpenAIChatRequestToDsRequest(oreq openai.ChatCompletionRequest, targetModelType pb.ModelType) (DsRequest, error) { +func ConvertOpenAIChatRequestToDsRequest(ctx context.Context, oreq openai.ChatCompletionRequest, targetModelType pb.ModelType) (DsRequest, error) { var dsReq DsRequest dsReq.Model = oreq.Model for _, om := range oreq.Messages { @@ -63,7 +64,7 @@ func ConvertOpenAIChatRequestToDsRequest(oreq openai.ChatCompletionRequest, targ case openai.ChatMessagePartTypeImageURL: parts = append(parts, DsRequestContentPart{Image: omc.ImageURL.URL}) default: - logrus.Warnf("unsupported message part type: %s", omc.Type) + ctxhelper.GetLogger(ctx).Warnf("unsupported message part type: %s", omc.Type) } } } diff --git a/internal/apps/ai-proxy/filters/openai-director/filter.go b/internal/apps/ai-proxy/filters/openai-director/filter.go index bdbf296c8fc..7d1ebb9d249 100644 --- a/internal/apps/ai-proxy/filters/openai-director/filter.go +++ b/internal/apps/ai-proxy/filters/openai-director/filter.go @@ -25,7 +25,6 @@ import ( "github.com/pkg/errors" "github.com/sashabaranov/go-openai" - "github.com/sirupsen/logrus" "sigs.k8s.io/yaml" "github.com/erda-project/erda-infra/base/logs" @@ -198,13 +197,13 @@ func (f *OpenaiDirector) AddModelInRequestBody(ctx context.Context) error { // read body to json, then add a `model` field, then write back to body var body map[string]interface{} if err := json.NewDecoder(infor.BodyBuffer()).Decode(&body); err != nil && err != io.EOF { - logrus.Errorf("failed to decode request body, err: %v", err) + ctxhelper.GetLogger(ctx).Errorf("failed to decode request body, err: %v", err) return } body["model"] = model.Name b, err := json.Marshal(body) if err != nil { - logrus.Errorf("failed to marshal request body, err: %v", err) + ctxhelper.GetLogger(ctx).Errorf("failed to marshal request body, err: %v", err) return } infor.SetBody(io.NopCloser(strings.NewReader(string(b))), int64(len(b))) @@ -221,13 +220,13 @@ func (f *OpenaiDirector) AddContextMessages(ctx context.Context) error { infor := reverseproxy.NewInfor(ctx, req) var openaiReq openai.ChatCompletionRequest if err := json.NewDecoder(infor.BodyBuffer()).Decode(&openaiReq); err != nil && err != io.EOF { - logrus.Errorf("failed to decode request body, err: %v", err) + ctxhelper.GetLogger(ctx).Errorf("failed to decode request body, err: %v", err) return } openaiReq.Messages = messageGroup.AllMessages b, err := json.Marshal(&openaiReq) if err != nil { - logrus.Errorf("failed to marshal request body, err: %v", err) + ctxhelper.GetLogger(ctx).Errorf("failed to marshal request body, err: %v", err) return } infor.SetBody(io.NopCloser(strings.NewReader(string(b))), int64(len(b)))