Codex commited on
Commit
e15b1ad
·
1 Parent(s): 86b1bf7

Preserve exact Gemini high model

Browse files
Files changed (1) hide show
  1. codex-luna-compat.patch +71 -0
codex-luna-compat.patch CHANGED
@@ -86,6 +86,77 @@ index 0000000..cd731ad
86
  + require.Equal(t, "https://example.test/v1beta/models/gemini-3.7-flash:generateContent", ordinaryURL)
87
  + require.Equal(t, "gemini-3.7-flash", ordinaryInfo.UpstreamModelName)
88
  +}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  diff --git a/relay/channel/openai/relay_responses.go b/relay/channel/openai/relay_responses.go
90
  index 697cc96..299247f 100644
91
  --- a/relay/channel/openai/relay_responses.go
 
86
  + require.Equal(t, "https://example.test/v1beta/models/gemini-3.7-flash:generateContent", ordinaryURL)
87
  + require.Equal(t, "gemini-3.7-flash", ordinaryInfo.UpstreamModelName)
88
  +}
89
+ diff --git a/relay/channel/openai/adaptor.go b/relay/channel/openai/adaptor.go
90
+ index 3fd2466..bd52825 100644
91
+ --- a/relay/channel/openai/adaptor.go
92
+ +++ b/relay/channel/openai/adaptor.go
93
+ @@ -602,6 +602,16 @@ func detectImageMimeType(filename string) string {
94
+ }
95
+
96
+ func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *relaycommon.RelayInfo, request dto.OpenAIResponsesRequest) (any, error) {
97
+ + if request.Model == codexLunaUpstreamModel ||
98
+ + (info != nil && info.OriginModelName == codexLunaOriginModel) {
99
+ + request.Model = codexLunaUpstreamModel
100
+ + request.Reasoning = nil
101
+ + if info != nil {
102
+ + info.ReasoningEffort = ""
103
+ + }
104
+ + return request, nil
105
+ + }
106
+ +
107
+ // 转换模型推理力度后缀
108
+ effort, originModel := reasoning.ParseOpenAIReasoningEffortFromModelSuffix(request.Model)
109
+ if effort != "" {
110
+ diff --git a/relay/channel/openai/adaptor_responses_luna_test.go b/relay/channel/openai/adaptor_responses_luna_test.go
111
+ new file mode 100644
112
+ index 0000000..2d79925
113
+ --- /dev/null
114
+ +++ b/relay/channel/openai/adaptor_responses_luna_test.go
115
+ @@ -0,0 +1,44 @@
116
+ +package openai
117
+ +
118
+ +import (
119
+ + "testing"
120
+ +
121
+ + "github.com/QuantumNous/new-api/dto"
122
+ + relaycommon "github.com/QuantumNous/new-api/relay/common"
123
+ + "github.com/stretchr/testify/require"
124
+ +)
125
+ +
126
+ +func TestConvertOpenAIResponsesRequestPreservesExactGeminiHighModel(t *testing.T) {
127
+ + info := &relaycommon.RelayInfo{
128
+ + OriginModelName: "gemini-3.7-flash-high",
129
+ + ReasoningEffort: "low",
130
+ + }
131
+ + request := dto.OpenAIResponsesRequest{
132
+ + Model: codexLunaUpstreamModel,
133
+ + Reasoning: &dto.Reasoning{
134
+ + Effort: "low",
135
+ + Summary: "detailed",
136
+ + },
137
+ + }
138
+ +
139
+ + converted, err := (&Adaptor{}).ConvertOpenAIResponsesRequest(nil, info, request)
140
+ + require.NoError(t, err)
141
+ + actual, ok := converted.(dto.OpenAIResponsesRequest)
142
+ + require.True(t, ok)
143
+ + require.Equal(t, codexLunaUpstreamModel, actual.Model)
144
+ + require.Nil(t, actual.Reasoning)
145
+ + require.Empty(t, info.ReasoningEffort)
146
+ +}
147
+ +
148
+ +func TestConvertOpenAIResponsesRequestStillParsesOtherEffortSuffixes(t *testing.T) {
149
+ + info := &relaycommon.RelayInfo{OriginModelName: "gemini-3.7-flash-low"}
150
+ + request := dto.OpenAIResponsesRequest{Model: "gemini-3.7-flash-low"}
151
+ +
152
+ + converted, err := (&Adaptor{}).ConvertOpenAIResponsesRequest(nil, info, request)
153
+ + require.NoError(t, err)
154
+ + actual, ok := converted.(dto.OpenAIResponsesRequest)
155
+ + require.True(t, ok)
156
+ + require.Equal(t, "gemini-3.7-flash", actual.Model)
157
+ + require.NotNil(t, actual.Reasoning)
158
+ + require.Equal(t, "low", actual.Reasoning.Effort)
159
+ +}
160
  diff --git a/relay/channel/openai/relay_responses.go b/relay/channel/openai/relay_responses.go
161
  index 697cc96..299247f 100644
162
  --- a/relay/channel/openai/relay_responses.go