@@ -63,6 +63,20 @@ func codexIsImagesEndpointPath(path string) bool {
6363 return strings .HasSuffix (path , codexImagesGenerationsPath ) || strings .HasSuffix (path , codexImagesEditsPath )
6464}
6565
66+ func (e * CodexExecutor ) resolveGPTImage2BaseModel () string {
67+ if e == nil || e .cfg == nil {
68+ return codexOpenAIImagesMainModel
69+ }
70+ model := strings .TrimSpace (e .cfg .GPTImage2BaseModel )
71+ if model == "" {
72+ return codexOpenAIImagesMainModel
73+ }
74+ if strings .HasPrefix (strings .ToLower (model ), "gpt-" ) {
75+ return model
76+ }
77+ return codexOpenAIImagesMainModel
78+ }
79+
6680func (e * CodexExecutor ) executeOpenAIImage (ctx context.Context , auth * cliproxyauth.Auth , req cliproxyexecutor.Request , opts cliproxyexecutor.Options ) (resp cliproxyexecutor.Response , err error ) {
6781 prepared , errPrepare := codexPrepareOpenAIImageRequest (req , opts )
6882 if errPrepare != nil {
@@ -74,10 +88,11 @@ func (e *CodexExecutor) executeOpenAIImage(ctx context.Context, auth *cliproxyau
7488 baseURL = "https://chatgpt.com/backend-api/codex"
7589 }
7690
77- reporter := helps .NewUsageReporter (ctx , e .Identifier (), codexOpenAIImagesMainModel , auth )
91+ mainModel := e .resolveGPTImage2BaseModel ()
92+ reporter := helps .NewUsageReporter (ctx , e .Identifier (), mainModel , auth )
7893 defer reporter .TrackFailure (ctx , & err )
7994
80- body , errBuild := e .prepareCodexOpenAIImageBody (prepared .Body , req , opts )
95+ body , errBuild := e .prepareCodexOpenAIImageBody (prepared .Body , req , opts , mainModel )
8196 if errBuild != nil {
8297 return resp , errBuild
8398 }
@@ -161,10 +176,11 @@ func (e *CodexExecutor) executeOpenAIImageStream(ctx context.Context, auth *clip
161176 baseURL = "https://chatgpt.com/backend-api/codex"
162177 }
163178
164- reporter := helps .NewUsageReporter (ctx , e .Identifier (), codexOpenAIImagesMainModel , auth )
179+ mainModel := e .resolveGPTImage2BaseModel ()
180+ reporter := helps .NewUsageReporter (ctx , e .Identifier (), mainModel , auth )
165181 defer reporter .TrackFailure (ctx , & err )
166182
167- body , errBuild := e .prepareCodexOpenAIImageBody (prepared .Body , req , opts )
183+ body , errBuild := e .prepareCodexOpenAIImageBody (prepared .Body , req , opts , mainModel )
168184 if errBuild != nil {
169185 return nil , errBuild
170186 }
@@ -277,18 +293,22 @@ func (e *CodexExecutor) executeOpenAIImageStream(ctx context.Context, auth *clip
277293 return & cliproxyexecutor.StreamResult {Headers : httpResp .Header .Clone (), Chunks : out }, nil
278294}
279295
280- func (e * CodexExecutor ) prepareCodexOpenAIImageBody (body []byte , req cliproxyexecutor.Request , opts cliproxyexecutor.Options ) ([]byte , error ) {
296+ func (e * CodexExecutor ) prepareCodexOpenAIImageBody (body []byte , req cliproxyexecutor.Request , opts cliproxyexecutor.Options , mainModel string ) ([]byte , error ) {
281297 out := body
298+ mainModel = strings .TrimSpace (mainModel )
299+ if mainModel == "" {
300+ mainModel = codexOpenAIImagesMainModel
301+ }
282302 var errThinking error
283- out , errThinking = thinking .ApplyThinking (out , codexOpenAIImagesMainModel , codexOpenAIImageSourceFormat , "codex" , e .Identifier ())
303+ out , errThinking = thinking .ApplyThinking (out , mainModel , codexOpenAIImageSourceFormat , "codex" , e .Identifier ())
284304 if errThinking != nil {
285305 return nil , errThinking
286306 }
287307
288308 requestedModel := helps .PayloadRequestedModel (opts , req .Model )
289309 requestPath := helps .PayloadRequestPath (opts )
290- out = helps .ApplyPayloadConfigWithRequest (e .cfg , codexOpenAIImagesMainModel , "codex" , codexOpenAIImageSourceFormat , "" , out , body , requestedModel , requestPath , opts .Headers )
291- out , _ = sjson .SetBytes (out , "model" , codexOpenAIImagesMainModel )
310+ out = helps .ApplyPayloadConfigWithRequest (e .cfg , mainModel , "codex" , codexOpenAIImageSourceFormat , "" , out , body , requestedModel , requestPath , opts .Headers )
311+ out , _ = sjson .SetBytes (out , "model" , mainModel )
292312 out , _ = sjson .SetBytes (out , "stream" , true )
293313 out , _ = sjson .DeleteBytes (out , "previous_response_id" )
294314 out , _ = sjson .DeleteBytes (out , "prompt_cache_retention" )
0 commit comments