new-api / codex-image-b64.patch
Codex
Fix Codex Luna compatibility
61ed9bf
Raw
History Blame Contribute Delete
2.7 kB
diff --git a/relay/channel/openai/adaptor.go b/relay/channel/openai/adaptor.go
index 3fd2466..9400aa0 100644
--- a/relay/channel/openai/adaptor.go
+++ b/relay/channel/openai/adaptor.go
@@ -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) {
diff --git a/relay/channel/openai/relay_image.go b/relay/channel/openai/relay_image.go
index e0f09aa..f9372d7 100644
--- a/relay/channel/openai/relay_image.go
+++ b/relay/channel/openai/relay_image.go
@@ -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 {