Skip to content

Commit 15c3cc3

Browse files
fix(openai-compat): prevent model alias from being overwritten by ResolveOriginalModel
When using OpenAI-compatible providers with model aliases (e.g., glm-4.6-zai -> glm-4.6), the alias resolution was correctly applied but then immediately overwritten by ResolveOriginalModel, causing 'Unknown Model' errors from upstream APIs. This fix skips the ResolveOriginalModel override when a model alias has already been resolved, ensuring the correct model name is sent to the upstream provider. Co-authored-by: Amp <amp@ampcode.com>
1 parent fc054db commit 15c3cc3

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

internal/runtime/executor/openai_compat_executor.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,14 @@ func (e *OpenAICompatExecutor) Execute(ctx context.Context, auth *cliproxyauth.A
5454
from := opts.SourceFormat
5555
to := sdktranslator.FromString("openai")
5656
translated := sdktranslator.TranslateRequest(from, to, req.Model, bytes.Clone(req.Payload), opts.Stream)
57-
if modelOverride := e.resolveUpstreamModel(req.Model, auth); modelOverride != "" {
57+
modelOverride := e.resolveUpstreamModel(req.Model, auth)
58+
if modelOverride != "" {
5859
translated = e.overrideModel(translated, modelOverride)
5960
}
6061
translated = applyPayloadConfigWithRoot(e.cfg, req.Model, to.String(), "", translated)
6162
translated = applyReasoningEffortMetadata(translated, req.Metadata, req.Model, "reasoning_effort")
6263
upstreamModel := util.ResolveOriginalModel(req.Model, req.Metadata)
63-
if upstreamModel != "" {
64+
if upstreamModel != "" && modelOverride == "" {
6465
translated, _ = sjson.SetBytes(translated, "model", upstreamModel)
6566
}
6667
translated = normalizeThinkingConfig(translated, upstreamModel)
@@ -148,13 +149,14 @@ func (e *OpenAICompatExecutor) ExecuteStream(ctx context.Context, auth *cliproxy
148149
from := opts.SourceFormat
149150
to := sdktranslator.FromString("openai")
150151
translated := sdktranslator.TranslateRequest(from, to, req.Model, bytes.Clone(req.Payload), true)
151-
if modelOverride := e.resolveUpstreamModel(req.Model, auth); modelOverride != "" {
152+
modelOverride := e.resolveUpstreamModel(req.Model, auth)
153+
if modelOverride != "" {
152154
translated = e.overrideModel(translated, modelOverride)
153155
}
154156
translated = applyPayloadConfigWithRoot(e.cfg, req.Model, to.String(), "", translated)
155157
translated = applyReasoningEffortMetadata(translated, req.Metadata, req.Model, "reasoning_effort")
156158
upstreamModel := util.ResolveOriginalModel(req.Model, req.Metadata)
157-
if upstreamModel != "" {
159+
if upstreamModel != "" && modelOverride == "" {
158160
translated, _ = sjson.SetBytes(translated, "model", upstreamModel)
159161
}
160162
translated = normalizeThinkingConfig(translated, upstreamModel)

0 commit comments

Comments
 (0)