Codex commited on
Commit ·
e15b1ad
1
Parent(s): 86b1bf7
Preserve exact Gemini high model
Browse files- 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
|