Explorar o código

fix: improve request handling by deep copying OpenAIResponsesRequest

CaIon hai 4 meses
pai
achega
fc18a3c89e
Modificáronse 1 ficheiros con 7 adicións e 2 borrados
  1. 7 2
      relay/responses_handler.go

+ 7 - 2
relay/responses_handler.go

@@ -20,12 +20,17 @@ import (
 func ResponsesHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIError *types.NewAPIError) {
 	info.InitChannelMeta(c)
 
-	request, ok := info.Request.(*dto.OpenAIResponsesRequest)
+	responsesReq, ok := info.Request.(*dto.OpenAIResponsesRequest)
 	if !ok {
 		common.FatalLog(fmt.Sprintf("invalid request type, expected dto.OpenAIResponsesRequest, got %T", info.Request))
 	}
 
-	err := helper.ModelMappedHelper(c, info, request)
+	request, err := common.DeepCopy(responsesReq)
+	if err != nil {
+		return types.NewError(fmt.Errorf("failed to copy request to GeneralOpenAIRequest: %w", err), types.ErrorCodeInvalidRequest, types.ErrOptionWithSkipRetry())
+	}
+
+	err = helper.ModelMappedHelper(c, info, request)
 	if err != nil {
 		return types.NewError(err, types.ErrorCodeChannelModelMappedError, types.ErrOptionWithSkipRetry())
 	}