(c *gin.Context, info *relaycommon.RelayInfo)
| 18 | ) |
| 19 | |
| 20 | func RerankHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIError *types.NewAPIError) { |
| 21 | info.InitChannelMeta(c) |
| 22 | |
| 23 | rerankReq, ok := info.Request.(*dto.RerankRequest) |
| 24 | if !ok { |
| 25 | return types.NewErrorWithStatusCode(fmt.Errorf("invalid request type, expected dto.RerankRequest, got %T", info.Request), types.ErrorCodeInvalidRequest, http.StatusBadRequest, types.ErrOptionWithSkipRetry()) |
| 26 | } |
| 27 | |
| 28 | request, err := common.DeepCopy(rerankReq) |
| 29 | if err != nil { |
| 30 | return types.NewError(fmt.Errorf("failed to copy request to ImageRequest: %w", err), types.ErrorCodeInvalidRequest, types.ErrOptionWithSkipRetry()) |
| 31 | } |
| 32 | |
| 33 | err = helper.ModelMappedHelper(c, info, request) |
| 34 | if err != nil { |
| 35 | return types.NewError(err, types.ErrorCodeChannelModelMappedError, types.ErrOptionWithSkipRetry()) |
| 36 | } |
| 37 | |
| 38 | adaptor := GetAdaptor(info.ApiType) |
| 39 | if adaptor == nil { |
| 40 | return types.NewError(fmt.Errorf("invalid api type: %d", info.ApiType), types.ErrorCodeInvalidApiType, types.ErrOptionWithSkipRetry()) |
| 41 | } |
| 42 | adaptor.Init(info) |
| 43 | |
| 44 | var requestBody io.Reader |
| 45 | if model_setting.GetGlobalSettings().PassThroughRequestEnabled || info.ChannelSetting.PassThroughBodyEnabled { |
| 46 | storage, err := common.GetBodyStorage(c) |
| 47 | if err != nil { |
| 48 | return types.NewErrorWithStatusCode(err, types.ErrorCodeReadRequestBodyFailed, http.StatusBadRequest, types.ErrOptionWithSkipRetry()) |
| 49 | } |
| 50 | requestBody = common.ReaderOnly(storage) |
| 51 | } else { |
| 52 | convertedRequest, err := adaptor.ConvertRerankRequest(c, info.RelayMode, *request) |
| 53 | if err != nil { |
| 54 | return types.NewError(err, types.ErrorCodeConvertRequestFailed, types.ErrOptionWithSkipRetry()) |
| 55 | } |
| 56 | relaycommon.AppendRequestConversionFromRequest(info, convertedRequest) |
| 57 | jsonData, err := common.Marshal(convertedRequest) |
| 58 | if err != nil { |
| 59 | return types.NewError(err, types.ErrorCodeConvertRequestFailed, types.ErrOptionWithSkipRetry()) |
| 60 | } |
| 61 | |
| 62 | // apply param override |
| 63 | if len(info.ParamOverride) > 0 { |
| 64 | jsonData, err = relaycommon.ApplyParamOverrideWithRelayInfo(jsonData, info) |
| 65 | if err != nil { |
| 66 | return newAPIErrorFromParamOverride(err) |
| 67 | } |
| 68 | } |
| 69 | |
| 70 | logger.LogDebug(c, "Rerank request body: %s", jsonData) |
| 71 | body, size, closer, err := relaycommon.NewOutboundJSONBody(jsonData) |
| 72 | if err != nil { |
| 73 | return types.NewError(err, types.ErrorCodeConvertRequestFailed, types.ErrOptionWithSkipRetry()) |
| 74 | } |
| 75 | defer closer.Close() |
| 76 | jsonData = nil |
| 77 | info.UpstreamRequestBodySize = size |
no test coverage detected