MCPcopy Create free account
hub / github.com/aiprodcoder/MIXAPI / RerankHelper

Function RerankHelper

relay/rerank_handler.go:26–110  ·  view source on GitHub ↗
(c *gin.Context, relayMode int)

Source from the content-addressed store, hash-verified

24}
25
26func RerankHelper(c *gin.Context, relayMode int) (newAPIError *types.NewAPIError) {
27
28 var rerankRequest *dto.RerankRequest
29 err := common.UnmarshalBodyReusable(c, &rerankRequest)
30 if err != nil {
31 common.LogError(c, fmt.Sprintf("getAndValidateTextRequest failed: %s", err.Error()))
32 return types.NewError(err, types.ErrorCodeInvalidRequest)
33 }
34
35 relayInfo := relaycommon.GenRelayInfoRerank(c, rerankRequest)
36
37 if rerankRequest.Query == "" {
38 return types.NewError(fmt.Errorf("query is empty"), types.ErrorCodeInvalidRequest)
39 }
40 if len(rerankRequest.Documents) == 0 {
41 return types.NewError(fmt.Errorf("documents is empty"), types.ErrorCodeInvalidRequest)
42 }
43
44 err = helper.ModelMappedHelper(c, relayInfo, rerankRequest)
45 if err != nil {
46 return types.NewError(err, types.ErrorCodeChannelModelMappedError)
47 }
48
49 promptToken := getRerankPromptToken(*rerankRequest)
50 relayInfo.PromptTokens = promptToken
51
52 priceData, err := helper.ModelPriceHelper(c, relayInfo, promptToken, 0)
53 if err != nil {
54 return types.NewError(err, types.ErrorCodeModelPriceError)
55 }
56 // pre-consume quota 预消耗配额
57 preConsumedQuota, userQuota, newAPIError := preConsumeQuota(c, priceData.ShouldPreConsumedQuota, relayInfo)
58 if newAPIError != nil {
59 return newAPIError
60 }
61 defer func() {
62 if newAPIError != nil {
63 returnPreConsumedQuota(c, relayInfo, userQuota, preConsumedQuota)
64 }
65 }()
66
67 adaptor := GetAdaptor(relayInfo.ApiType)
68 if adaptor == nil {
69 return types.NewError(fmt.Errorf("invalid api type: %d", relayInfo.ApiType), types.ErrorCodeInvalidApiType)
70 }
71 adaptor.Init(relayInfo)
72
73 convertedRequest, err := adaptor.ConvertRerankRequest(c, relayInfo.RelayMode, *rerankRequest)
74 if err != nil {
75 return types.NewError(err, types.ErrorCodeConvertRequestFailed)
76 }
77 jsonData, err := common.Marshal(convertedRequest)
78 if err != nil {
79 return types.NewError(err, types.ErrorCodeConvertRequestFailed)
80 }
81 requestBody := bytes.NewBuffer(jsonData)
82 if common.DebugEnabled {
83 println(fmt.Sprintf("Rerank request body: %s", requestBody.String()))

Callers 1

relayHandlerFunction · 0.92

Calls 15

NewErrorFunction · 0.92
ModelMappedHelperFunction · 0.92
ModelPriceHelperFunction · 0.92
NewOpenAIErrorFunction · 0.92
RelayErrorHandlerFunction · 0.92
ResetStatusCodeFunction · 0.92
getRerankPromptTokenFunction · 0.85
preConsumeQuotaFunction · 0.85
returnPreConsumedQuotaFunction · 0.85
GetAdaptorFunction · 0.85
postConsumeQuotaFunction · 0.85
ErrorMethod · 0.80

Tested by

no test coverage detected