| |
| |
| |
| |
| @@ -621,15 +621,28 @@ func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *relaycommo |
| } |
| |
| func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInfo, requestBody io.Reader) (any, error) { |
| - if info.RelayMode == relayconstant.RelayModeAudioTranscription || |
| - info.RelayMode == relayconstant.RelayModeAudioTranslation || |
| - (info.RelayMode == relayconstant.RelayModeImagesEdits && !isJSONRequest(c)) { |
| + if info.RelayMode == relayconstant.RelayModeAudioTranscription || info.RelayMode == relayconstant.RelayModeAudioTranslation { |
| return channel.DoFormRequest(a, c, info, requestBody) |
| - } else if info.RelayMode == relayconstant.RelayModeRealtime { |
| + } |
| + if info.RelayMode == relayconstant.RelayModeImagesEdits && !isJSONRequest(c) { |
| + response, err := channel.DoFormRequest(a, c, info, requestBody) |
| + if err != nil { |
| + return nil, err |
| + } |
| + return resolveOpenAIImageTask(c, info, response) |
| + } |
| + if info.RelayMode == relayconstant.RelayModeRealtime { |
| return channel.DoWssRequest(a, c, info, requestBody) |
| - } else { |
| - return channel.DoApiRequest(a, c, info, requestBody) |
| } |
| + |
| + response, err := channel.DoApiRequest(a, c, info, requestBody) |
| + if err != nil { |
| + return nil, err |
| + } |
| + if info.RelayMode == relayconstant.RelayModeImagesGenerations || info.RelayMode == relayconstant.RelayModeImagesEdits { |
| + return resolveOpenAIImageTask(c, info, response) |
| + } |
| + return response, nil |
| } |
| |
| func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo) (usage any, err *types.NewAPIError) { |
| |
| |
| |
| |
| @@ -39,6 +39,16 @@ func OpenaiImageHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http. |
| return nil, types.NewOpenAIError(err, types.ErrorCodeReadResponseBodyFailed, http.StatusInternalServerError) |
| } |
| |
| + responseBody, compatStats, err := convertOpenAIImageURLsToBase64(responseBody, downloadOpenAIImageURLCompat) |
| + if err != nil { |
| + return nil, types.NewOpenAIError(err, types.ErrorCodeBadResponseBody, http.StatusBadGateway) |
| + } |
| + if compatStats.Converted > 0 { |
| + c.Header("Server-Timing", compatStats.ServerTiming()) |
| + c.Header("X-New-API-Image-Compat", "url-to-b64") |
| + logger.LogInfo(c, compatStats.LogMessage()) |
| + } |
| + |
| var usageResp dto.SimpleResponse |
| err = common.Unmarshal(responseBody, &usageResp) |
| if err != nil { |
|
|