| package test |
|
|
| import ( |
| "fmt" |
| "strings" |
| "testing" |
| "time" |
|
|
| _ "github.com/router-for-me/CLIProxyAPI/v6/internal/translator" |
|
|
| |
| _ "github.com/router-for-me/CLIProxyAPI/v6/internal/thinking/provider/antigravity" |
| _ "github.com/router-for-me/CLIProxyAPI/v6/internal/thinking/provider/claude" |
| _ "github.com/router-for-me/CLIProxyAPI/v6/internal/thinking/provider/codex" |
| _ "github.com/router-for-me/CLIProxyAPI/v6/internal/thinking/provider/gemini" |
| _ "github.com/router-for-me/CLIProxyAPI/v6/internal/thinking/provider/geminicli" |
| _ "github.com/router-for-me/CLIProxyAPI/v6/internal/thinking/provider/iflow" |
| _ "github.com/router-for-me/CLIProxyAPI/v6/internal/thinking/provider/openai" |
|
|
| "github.com/router-for-me/CLIProxyAPI/v6/internal/registry" |
| "github.com/router-for-me/CLIProxyAPI/v6/internal/thinking" |
| sdktranslator "github.com/router-for-me/CLIProxyAPI/v6/sdk/translator" |
| "github.com/tidwall/gjson" |
| "github.com/tidwall/sjson" |
| ) |
|
|
| |
| type thinkingTestCase struct { |
| name string |
| from string |
| to string |
| model string |
| inputJSON string |
| expectField string |
| expectValue string |
| includeThoughts string |
| expectErr bool |
| } |
|
|
| |
| |
| |
| func TestThinkingE2EMatrix_Suffix(t *testing.T) { |
| reg := registry.GetGlobalRegistry() |
| uid := fmt.Sprintf("thinking-e2e-suffix-%d", time.Now().UnixNano()) |
|
|
| reg.RegisterClient(uid, "test", getTestModels()) |
| defer reg.UnregisterClient(uid) |
|
|
| cases := []thinkingTestCase{ |
| |
|
|
| |
| { |
| name: "1", |
| from: "openai", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "2", |
| from: "openai", |
| to: "codex", |
| model: "level-model(medium)", |
| inputJSON: `{"model":"level-model(medium)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "3", |
| from: "openai", |
| to: "codex", |
| model: "level-model(xhigh)", |
| inputJSON: `{"model":"level-model(xhigh)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "4", |
| from: "openai", |
| to: "codex", |
| model: "level-model(none)", |
| inputJSON: `{"model":"level-model(none)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "minimal", |
| expectErr: false, |
| }, |
| |
| { |
| name: "5", |
| from: "openai", |
| to: "codex", |
| model: "level-model(auto)", |
| inputJSON: `{"model":"level-model(auto)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "6", |
| from: "gemini", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "7", |
| from: "gemini", |
| to: "codex", |
| model: "level-model(8192)", |
| inputJSON: `{"model":"level-model(8192)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "8", |
| from: "gemini", |
| to: "codex", |
| model: "level-model(64000)", |
| inputJSON: `{"model":"level-model(64000)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "high", |
| expectErr: false, |
| }, |
| |
| { |
| name: "9", |
| from: "gemini", |
| to: "codex", |
| model: "level-model(0)", |
| inputJSON: `{"model":"level-model(0)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "minimal", |
| expectErr: false, |
| }, |
| |
| { |
| name: "10", |
| from: "gemini", |
| to: "codex", |
| model: "level-model(-1)", |
| inputJSON: `{"model":"level-model(-1)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "11", |
| from: "claude", |
| to: "openai", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "12", |
| from: "claude", |
| to: "openai", |
| model: "level-model(8192)", |
| inputJSON: `{"model":"level-model(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "13", |
| from: "claude", |
| to: "openai", |
| model: "level-model(64000)", |
| inputJSON: `{"model":"level-model(64000)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "high", |
| expectErr: false, |
| }, |
| |
| { |
| name: "14", |
| from: "claude", |
| to: "openai", |
| model: "level-model(0)", |
| inputJSON: `{"model":"level-model(0)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "minimal", |
| expectErr: false, |
| }, |
| |
| { |
| name: "15", |
| from: "claude", |
| to: "openai", |
| model: "level-model(-1)", |
| inputJSON: `{"model":"level-model(-1)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "16", |
| from: "gemini", |
| to: "openai", |
| model: "level-subset-model(8192)", |
| inputJSON: `{"model":"level-subset-model(8192)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "low", |
| expectErr: false, |
| }, |
| |
| { |
| name: "17", |
| from: "claude", |
| to: "gemini", |
| model: "level-subset-model(1)", |
| inputJSON: `{"model":"level-subset-model(1)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingLevel", |
| expectValue: "low", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "18", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "19", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model(medium)", |
| inputJSON: `{"model":"gemini-budget-model(medium)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "20", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model(xhigh)", |
| inputJSON: `{"model":"gemini-budget-model(xhigh)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "21", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model(none)", |
| inputJSON: `{"model":"gemini-budget-model(none)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "128", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "22", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model(auto)", |
| inputJSON: `{"model":"gemini-budget-model(auto)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "23", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "24", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model(8192)", |
| inputJSON: `{"model":"gemini-budget-model(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "25", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model(64000)", |
| inputJSON: `{"model":"gemini-budget-model(64000)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "26", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model(0)", |
| inputJSON: `{"model":"gemini-budget-model(0)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "128", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "27", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model(-1)", |
| inputJSON: `{"model":"gemini-budget-model(-1)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "28", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "29", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model(high)", |
| inputJSON: `{"model":"gemini-mixed-model(high)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingLevel", |
| expectValue: "high", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "30", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model(xhigh)", |
| inputJSON: `{"model":"gemini-mixed-model(xhigh)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "31", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model(none)", |
| inputJSON: `{"model":"gemini-mixed-model(none)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingLevel", |
| expectValue: "low", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "32", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model(auto)", |
| inputJSON: `{"model":"gemini-mixed-model(auto)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "33", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "34", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model(8192)", |
| inputJSON: `{"model":"gemini-mixed-model(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "35", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model(64000)", |
| inputJSON: `{"model":"gemini-mixed-model(64000)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "32768", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "36", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model(0)", |
| inputJSON: `{"model":"gemini-mixed-model(0)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingLevel", |
| expectValue: "low", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "37", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model(-1)", |
| inputJSON: `{"model":"gemini-mixed-model(-1)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "38", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "39", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model(medium)", |
| inputJSON: `{"model":"claude-budget-model(medium)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
| |
| { |
| name: "40", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model(xhigh)", |
| inputJSON: `{"model":"claude-budget-model(xhigh)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "32768", |
| expectErr: false, |
| }, |
| |
| { |
| name: "41", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model(none)", |
| inputJSON: `{"model":"claude-budget-model(none)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "thinking.type", |
| expectValue: "disabled", |
| expectErr: false, |
| }, |
| |
| { |
| name: "42", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model(auto)", |
| inputJSON: `{"model":"claude-budget-model(auto)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "64512", |
| expectErr: false, |
| }, |
| |
| { |
| name: "43", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "44", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model(8192)", |
| inputJSON: `{"model":"claude-budget-model(8192)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
| |
| { |
| name: "45", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model(200000)", |
| inputJSON: `{"model":"claude-budget-model(200000)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "128000", |
| expectErr: false, |
| }, |
| |
| { |
| name: "46", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model(0)", |
| inputJSON: `{"model":"claude-budget-model(0)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "thinking.type", |
| expectValue: "disabled", |
| expectErr: false, |
| }, |
| |
| { |
| name: "47", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model(-1)", |
| inputJSON: `{"model":"claude-budget-model(-1)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "64512", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "48", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "49", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model(medium)", |
| inputJSON: `{"model":"antigravity-budget-model(medium)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "50", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model(xhigh)", |
| inputJSON: `{"model":"antigravity-budget-model(xhigh)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "51", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model(none)", |
| inputJSON: `{"model":"antigravity-budget-model(none)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "0", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "52", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model(auto)", |
| inputJSON: `{"model":"antigravity-budget-model(auto)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "53", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "54", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model(8192)", |
| inputJSON: `{"model":"antigravity-budget-model(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "55", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model(64000)", |
| inputJSON: `{"model":"antigravity-budget-model(64000)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "56", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model(0)", |
| inputJSON: `{"model":"antigravity-budget-model(0)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "0", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "57", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model(-1)", |
| inputJSON: `{"model":"antigravity-budget-model(-1)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "58", |
| from: "gemini", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "59", |
| from: "gemini", |
| to: "openai", |
| model: "no-thinking-model(8192)", |
| inputJSON: `{"model":"no-thinking-model(8192)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "60", |
| from: "gemini", |
| to: "openai", |
| model: "no-thinking-model(0)", |
| inputJSON: `{"model":"no-thinking-model(0)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "61", |
| from: "gemini", |
| to: "openai", |
| model: "no-thinking-model(-1)", |
| inputJSON: `{"model":"no-thinking-model(-1)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "62", |
| from: "claude", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "63", |
| from: "claude", |
| to: "openai", |
| model: "no-thinking-model(8192)", |
| inputJSON: `{"model":"no-thinking-model(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "64", |
| from: "claude", |
| to: "openai", |
| model: "no-thinking-model(0)", |
| inputJSON: `{"model":"no-thinking-model(0)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "65", |
| from: "claude", |
| to: "openai", |
| model: "no-thinking-model(-1)", |
| inputJSON: `{"model":"no-thinking-model(-1)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "66", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "67", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model(8192)", |
| inputJSON: `{"model":"user-defined-model(8192)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "68", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model(64000)", |
| inputJSON: `{"model":"user-defined-model(64000)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "xhigh", |
| expectErr: false, |
| }, |
| |
| { |
| name: "69", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model(0)", |
| inputJSON: `{"model":"user-defined-model(0)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "none", |
| expectErr: false, |
| }, |
| |
| { |
| name: "70", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model(-1)", |
| inputJSON: `{"model":"user-defined-model(-1)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "auto", |
| expectErr: false, |
| }, |
| |
| { |
| name: "71", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "72", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model(8192)", |
| inputJSON: `{"model":"user-defined-model(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "73", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model(64000)", |
| inputJSON: `{"model":"user-defined-model(64000)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "xhigh", |
| expectErr: false, |
| }, |
| |
| { |
| name: "74", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model(0)", |
| inputJSON: `{"model":"user-defined-model(0)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "none", |
| expectErr: false, |
| }, |
| |
| { |
| name: "75", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model(-1)", |
| inputJSON: `{"model":"user-defined-model(-1)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "auto", |
| expectErr: false, |
| }, |
| |
| { |
| name: "76", |
| from: "openai", |
| to: "gemini", |
| model: "user-defined-model(8192)", |
| inputJSON: `{"model":"user-defined-model(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "77", |
| from: "openai", |
| to: "claude", |
| model: "user-defined-model(8192)", |
| inputJSON: `{"model":"user-defined-model(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
| |
| { |
| name: "78", |
| from: "openai-response", |
| to: "gemini", |
| model: "user-defined-model(8192)", |
| inputJSON: `{"model":"user-defined-model(8192)","input":[{"role":"user","content":"hi"}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "79", |
| from: "openai-response", |
| to: "claude", |
| model: "user-defined-model(8192)", |
| inputJSON: `{"model":"user-defined-model(8192)","input":[{"role":"user","content":"hi"}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "80", |
| from: "openai", |
| to: "openai", |
| model: "level-model(high)", |
| inputJSON: `{"model":"level-model(high)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning_effort", |
| expectValue: "high", |
| expectErr: false, |
| }, |
| |
| { |
| name: "81", |
| from: "openai", |
| to: "openai", |
| model: "level-model(xhigh)", |
| inputJSON: `{"model":"level-model(xhigh)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "82", |
| from: "openai-response", |
| to: "codex", |
| model: "level-model(high)", |
| inputJSON: `{"model":"level-model(high)","input":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "high", |
| expectErr: false, |
| }, |
| |
| { |
| name: "83", |
| from: "openai-response", |
| to: "codex", |
| model: "level-model(xhigh)", |
| inputJSON: `{"model":"level-model(xhigh)","input":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "84", |
| from: "gemini", |
| to: "gemini", |
| model: "gemini-budget-model(8192)", |
| inputJSON: `{"model":"gemini-budget-model(8192)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "85", |
| from: "gemini", |
| to: "gemini", |
| model: "gemini-budget-model(64000)", |
| inputJSON: `{"model":"gemini-budget-model(64000)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "86", |
| from: "claude", |
| to: "claude", |
| model: "claude-budget-model(8192)", |
| inputJSON: `{"model":"claude-budget-model(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
| |
| { |
| name: "87", |
| from: "claude", |
| to: "claude", |
| model: "claude-budget-model(200000)", |
| inputJSON: `{"model":"claude-budget-model(200000)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "128000", |
| expectErr: false, |
| }, |
| |
| { |
| name: "88", |
| from: "gemini-cli", |
| to: "antigravity", |
| model: "antigravity-budget-model(8192)", |
| inputJSON: `{"model":"antigravity-budget-model(8192)","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}]}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "89", |
| from: "gemini-cli", |
| to: "antigravity", |
| model: "antigravity-budget-model(64000)", |
| inputJSON: `{"model":"antigravity-budget-model(64000)","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}]}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| |
| { |
| name: "90", |
| from: "openai", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "91", |
| from: "openai", |
| to: "iflow", |
| model: "glm-test(medium)", |
| inputJSON: `{"model":"glm-test(medium)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "92", |
| from: "openai", |
| to: "iflow", |
| model: "glm-test(auto)", |
| inputJSON: `{"model":"glm-test(auto)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "93", |
| from: "openai", |
| to: "iflow", |
| model: "glm-test(none)", |
| inputJSON: `{"model":"glm-test(none)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "94", |
| from: "claude", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "95", |
| from: "claude", |
| to: "iflow", |
| model: "glm-test(8192)", |
| inputJSON: `{"model":"glm-test(8192)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "96", |
| from: "claude", |
| to: "iflow", |
| model: "glm-test(-1)", |
| inputJSON: `{"model":"glm-test(-1)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "97", |
| from: "claude", |
| to: "iflow", |
| model: "glm-test(0)", |
| inputJSON: `{"model":"glm-test(0)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "false", |
| expectErr: false, |
| }, |
|
|
| |
| |
| { |
| name: "98", |
| from: "openai", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "99", |
| from: "openai", |
| to: "iflow", |
| model: "minimax-test(medium)", |
| inputJSON: `{"model":"minimax-test(medium)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning_split", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "100", |
| from: "openai", |
| to: "iflow", |
| model: "minimax-test(auto)", |
| inputJSON: `{"model":"minimax-test(auto)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning_split", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "101", |
| from: "openai", |
| to: "iflow", |
| model: "minimax-test(none)", |
| inputJSON: `{"model":"minimax-test(none)","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning_split", |
| expectValue: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "102", |
| from: "gemini", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "103", |
| from: "gemini", |
| to: "iflow", |
| model: "minimax-test(8192)", |
| inputJSON: `{"model":"minimax-test(8192)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning_split", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "104", |
| from: "gemini", |
| to: "iflow", |
| model: "minimax-test(-1)", |
| inputJSON: `{"model":"minimax-test(-1)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning_split", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "105", |
| from: "gemini", |
| to: "iflow", |
| model: "minimax-test(0)", |
| inputJSON: `{"model":"minimax-test(0)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning_split", |
| expectValue: "false", |
| expectErr: false, |
| }, |
|
|
| |
| |
|
|
| |
| { |
| name: "106", |
| from: "gemini", |
| to: "antigravity", |
| model: "gemini-budget-model(64000)", |
| inputJSON: `{"model":"gemini-budget-model(64000)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "107", |
| from: "gemini", |
| to: "gemini-cli", |
| model: "gemini-budget-model(64000)", |
| inputJSON: `{"model":"gemini-budget-model(64000)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "108", |
| from: "gemini-cli", |
| to: "antigravity", |
| model: "gemini-budget-model(64000)", |
| inputJSON: `{"model":"gemini-budget-model(64000)","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}]}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "109", |
| from: "gemini-cli", |
| to: "gemini", |
| model: "gemini-budget-model(64000)", |
| inputJSON: `{"model":"gemini-budget-model(64000)","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}]}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "110", |
| from: "gemini", |
| to: "antigravity", |
| model: "gemini-budget-model(8192)", |
| inputJSON: `{"model":"gemini-budget-model(8192)","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "111", |
| from: "gemini-cli", |
| to: "antigravity", |
| model: "gemini-budget-model(8192)", |
| inputJSON: `{"model":"gemini-budget-model(8192)","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}]}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| } |
|
|
| runThinkingTests(t, cases) |
| } |
|
|
| |
| |
| func TestThinkingE2EMatrix_Body(t *testing.T) { |
| reg := registry.GetGlobalRegistry() |
| uid := fmt.Sprintf("thinking-e2e-body-%d", time.Now().UnixNano()) |
|
|
| reg.RegisterClient(uid, "test", getTestModels()) |
| defer reg.UnregisterClient(uid) |
|
|
| cases := []thinkingTestCase{ |
| |
|
|
| |
| { |
| name: "1", |
| from: "openai", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "2", |
| from: "openai", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"medium"}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "3", |
| from: "openai", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"xhigh"}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "4", |
| from: "openai", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"none"}`, |
| expectField: "reasoning.effort", |
| expectValue: "minimal", |
| expectErr: false, |
| }, |
| |
| { |
| name: "5", |
| from: "openai", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"auto"}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "6", |
| from: "gemini", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "7", |
| from: "gemini", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "8", |
| from: "gemini", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":64000}}}`, |
| expectField: "reasoning.effort", |
| expectValue: "high", |
| expectErr: false, |
| }, |
| |
| { |
| name: "9", |
| from: "gemini", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":0}}}`, |
| expectField: "reasoning.effort", |
| expectValue: "minimal", |
| expectErr: false, |
| }, |
| |
| { |
| name: "10", |
| from: "gemini", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":-1}}}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "11", |
| from: "claude", |
| to: "openai", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "12", |
| from: "claude", |
| to: "openai", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":8192}}`, |
| expectField: "reasoning_effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "13", |
| from: "claude", |
| to: "openai", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":64000}}`, |
| expectField: "reasoning_effort", |
| expectValue: "high", |
| expectErr: false, |
| }, |
| |
| { |
| name: "14", |
| from: "claude", |
| to: "openai", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":0}}`, |
| expectField: "reasoning_effort", |
| expectValue: "minimal", |
| expectErr: false, |
| }, |
| |
| { |
| name: "15", |
| from: "claude", |
| to: "openai", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":-1}}`, |
| expectField: "reasoning_effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "16", |
| from: "gemini", |
| to: "openai", |
| model: "level-subset-model", |
| inputJSON: `{"model":"level-subset-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}`, |
| expectField: "reasoning_effort", |
| expectValue: "low", |
| expectErr: false, |
| }, |
| |
| { |
| name: "17", |
| from: "claude", |
| to: "gemini", |
| model: "level-subset-model", |
| inputJSON: `{"model":"level-subset-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":1}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingLevel", |
| expectValue: "low", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "18", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "19", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"medium"}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "20", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"xhigh"}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "21", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"none"}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "128", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "22", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"auto"}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "23", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "24", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":8192}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "25", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":64000}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "26", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":0}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "128", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "27", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":-1}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "28", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "29", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"high"}`, |
| expectField: "generationConfig.thinkingConfig.thinkingLevel", |
| expectValue: "high", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "30", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"xhigh"}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "31", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"none"}`, |
| expectField: "generationConfig.thinkingConfig.thinkingLevel", |
| expectValue: "low", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "32", |
| from: "openai", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"auto"}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "33", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "34", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":8192}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "35", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":64000}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "32768", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "36", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":0}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingLevel", |
| expectValue: "low", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "37", |
| from: "claude", |
| to: "gemini", |
| model: "gemini-mixed-model", |
| inputJSON: `{"model":"gemini-mixed-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":-1}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "38", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "39", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"medium"}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
| |
| { |
| name: "40", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"xhigh"}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "32768", |
| expectErr: false, |
| }, |
| |
| { |
| name: "41", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"none"}`, |
| expectField: "thinking.type", |
| expectValue: "disabled", |
| expectErr: false, |
| }, |
| |
| { |
| name: "42", |
| from: "openai", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"auto"}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "64512", |
| expectErr: false, |
| }, |
| |
| { |
| name: "43", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "44", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
| |
| { |
| name: "45", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":200000}}}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "128000", |
| expectErr: false, |
| }, |
| |
| { |
| name: "46", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":0}}}`, |
| expectField: "thinking.type", |
| expectValue: "disabled", |
| expectErr: false, |
| }, |
| |
| { |
| name: "47", |
| from: "gemini", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":-1}}}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "64512", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "48", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "49", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingLevel":"medium"}}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "50", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingLevel":"xhigh"}}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "51", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingLevel":"none"}}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "0", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "52", |
| from: "gemini", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":-1}}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "53", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "54", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":8192}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "55", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":64000}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "20000", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "56", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":0}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "0", |
| includeThoughts: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "57", |
| from: "claude", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":-1}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "-1", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "58", |
| from: "gemini", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "59", |
| from: "gemini", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "60", |
| from: "gemini", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":0}}}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "61", |
| from: "gemini", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":-1}}}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "62", |
| from: "claude", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "63", |
| from: "claude", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":8192}}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "64", |
| from: "claude", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":0}}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "65", |
| from: "claude", |
| to: "openai", |
| model: "no-thinking-model", |
| inputJSON: `{"model":"no-thinking-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":-1}}`, |
| expectField: "", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "66", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "67", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}`, |
| expectField: "reasoning_effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "68", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":64000}}}`, |
| expectField: "reasoning_effort", |
| expectValue: "xhigh", |
| expectErr: false, |
| }, |
| |
| { |
| name: "69", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":0}}}`, |
| expectField: "reasoning_effort", |
| expectValue: "none", |
| expectErr: false, |
| }, |
| |
| { |
| name: "70", |
| from: "gemini", |
| to: "openai", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":-1}}}`, |
| expectField: "reasoning_effort", |
| expectValue: "auto", |
| expectErr: false, |
| }, |
| |
| { |
| name: "71", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "72", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":8192}}`, |
| expectField: "reasoning.effort", |
| expectValue: "medium", |
| expectErr: false, |
| }, |
| |
| { |
| name: "73", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":64000}}`, |
| expectField: "reasoning.effort", |
| expectValue: "xhigh", |
| expectErr: false, |
| }, |
| |
| { |
| name: "74", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":0}}`, |
| expectField: "reasoning.effort", |
| expectValue: "none", |
| expectErr: false, |
| }, |
| |
| { |
| name: "75", |
| from: "claude", |
| to: "codex", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":-1}}`, |
| expectField: "reasoning.effort", |
| expectValue: "auto", |
| expectErr: false, |
| }, |
| |
| { |
| name: "76", |
| from: "openai", |
| to: "gemini", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"medium"}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "77", |
| from: "openai", |
| to: "claude", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"medium"}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
| |
| { |
| name: "78", |
| from: "openai-response", |
| to: "gemini", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","input":[{"role":"user","content":"hi"}],"reasoning":{"effort":"medium"}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "79", |
| from: "openai-response", |
| to: "claude", |
| model: "user-defined-model", |
| inputJSON: `{"model":"user-defined-model","input":[{"role":"user","content":"hi"}],"reasoning":{"effort":"medium"}}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
|
|
| |
|
|
| |
| { |
| name: "80", |
| from: "openai", |
| to: "openai", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"high"}`, |
| expectField: "reasoning_effort", |
| expectValue: "high", |
| expectErr: false, |
| }, |
| |
| { |
| name: "81", |
| from: "openai", |
| to: "openai", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"xhigh"}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "82", |
| from: "openai-response", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","input":[{"role":"user","content":"hi"}],"reasoning":{"effort":"high"}}`, |
| expectField: "reasoning.effort", |
| expectValue: "high", |
| expectErr: false, |
| }, |
| |
| { |
| name: "83", |
| from: "openai-response", |
| to: "codex", |
| model: "level-model", |
| inputJSON: `{"model":"level-model","input":[{"role":"user","content":"hi"}],"reasoning":{"effort":"xhigh"}}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "84", |
| from: "gemini", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}`, |
| expectField: "generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "85", |
| from: "gemini", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":64000}}}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "86", |
| from: "claude", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":8192}}`, |
| expectField: "thinking.budget_tokens", |
| expectValue: "8192", |
| expectErr: false, |
| }, |
| |
| { |
| name: "87", |
| from: "claude", |
| to: "claude", |
| model: "claude-budget-model", |
| inputJSON: `{"model":"claude-budget-model","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":200000}}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "88", |
| from: "gemini-cli", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "89", |
| from: "gemini-cli", |
| to: "antigravity", |
| model: "antigravity-budget-model", |
| inputJSON: `{"model":"antigravity-budget-model","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":64000}}}}`, |
| expectField: "", |
| expectErr: true, |
| }, |
|
|
| |
|
|
| |
| |
| { |
| name: "90", |
| from: "openai", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "91", |
| from: "openai", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"medium"}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "92", |
| from: "openai", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"auto"}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "93", |
| from: "openai", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"none"}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "94", |
| from: "claude", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "95", |
| from: "claude", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":8192}}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "96", |
| from: "claude", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":-1}}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "97", |
| from: "claude", |
| to: "iflow", |
| model: "glm-test", |
| inputJSON: `{"model":"glm-test","messages":[{"role":"user","content":"hi"}],"thinking":{"type":"enabled","budget_tokens":0}}`, |
| expectField: "chat_template_kwargs.enable_thinking", |
| expectValue: "false", |
| expectErr: false, |
| }, |
|
|
| |
| |
| { |
| name: "98", |
| from: "openai", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","messages":[{"role":"user","content":"hi"}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "99", |
| from: "openai", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"medium"}`, |
| expectField: "reasoning_split", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "100", |
| from: "openai", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"auto"}`, |
| expectField: "reasoning_split", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "101", |
| from: "openai", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","messages":[{"role":"user","content":"hi"}],"reasoning_effort":"none"}`, |
| expectField: "reasoning_split", |
| expectValue: "false", |
| expectErr: false, |
| }, |
| |
| { |
| name: "102", |
| from: "gemini", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","contents":[{"role":"user","parts":[{"text":"hi"}]}]}`, |
| expectField: "", |
| expectErr: false, |
| }, |
| |
| { |
| name: "103", |
| from: "gemini", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}`, |
| expectField: "reasoning_split", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "104", |
| from: "gemini", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":-1}}}`, |
| expectField: "reasoning_split", |
| expectValue: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "105", |
| from: "gemini", |
| to: "iflow", |
| model: "minimax-test", |
| inputJSON: `{"model":"minimax-test","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":0}}}`, |
| expectField: "reasoning_split", |
| expectValue: "false", |
| expectErr: false, |
| }, |
|
|
| |
| |
|
|
| |
| { |
| name: "106", |
| from: "gemini", |
| to: "antigravity", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":64000}}}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "107", |
| from: "gemini", |
| to: "gemini-cli", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":64000}}}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "108", |
| from: "gemini-cli", |
| to: "antigravity", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":64000}}}}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "109", |
| from: "gemini-cli", |
| to: "gemini", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":64000}}}}`, |
| expectField: "", |
| expectErr: true, |
| }, |
| |
| { |
| name: "110", |
| from: "gemini", |
| to: "antigravity", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| |
| { |
| name: "111", |
| from: "gemini-cli", |
| to: "antigravity", |
| model: "gemini-budget-model", |
| inputJSON: `{"model":"gemini-budget-model","request":{"contents":[{"role":"user","parts":[{"text":"hi"}]}],"generationConfig":{"thinkingConfig":{"thinkingBudget":8192}}}}`, |
| expectField: "request.generationConfig.thinkingConfig.thinkingBudget", |
| expectValue: "8192", |
| includeThoughts: "true", |
| expectErr: false, |
| }, |
| } |
|
|
| runThinkingTests(t, cases) |
| } |
|
|
| |
| func getTestModels() []*registry.ModelInfo { |
| return []*registry.ModelInfo{ |
| { |
| ID: "level-model", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "openai", |
| DisplayName: "Level Model", |
| Thinking: ®istry.ThinkingSupport{Levels: []string{"minimal", "low", "medium", "high"}, ZeroAllowed: false, DynamicAllowed: false}, |
| }, |
| { |
| ID: "level-subset-model", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "gemini", |
| DisplayName: "Level Subset Model", |
| Thinking: ®istry.ThinkingSupport{Levels: []string{"low", "high"}, ZeroAllowed: false, DynamicAllowed: false}, |
| }, |
| { |
| ID: "gemini-budget-model", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "gemini", |
| DisplayName: "Gemini Budget Model", |
| Thinking: ®istry.ThinkingSupport{Min: 128, Max: 20000, ZeroAllowed: false, DynamicAllowed: true}, |
| }, |
| { |
| ID: "gemini-mixed-model", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "gemini", |
| DisplayName: "Gemini Mixed Model", |
| Thinking: ®istry.ThinkingSupport{Min: 128, Max: 32768, Levels: []string{"low", "high"}, ZeroAllowed: false, DynamicAllowed: true}, |
| }, |
| { |
| ID: "claude-budget-model", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "claude", |
| DisplayName: "Claude Budget Model", |
| Thinking: ®istry.ThinkingSupport{Min: 1024, Max: 128000, ZeroAllowed: true, DynamicAllowed: false}, |
| }, |
| { |
| ID: "antigravity-budget-model", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "gemini-cli", |
| DisplayName: "Antigravity Budget Model", |
| Thinking: ®istry.ThinkingSupport{Min: 128, Max: 20000, ZeroAllowed: true, DynamicAllowed: true}, |
| }, |
| { |
| ID: "no-thinking-model", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "openai", |
| DisplayName: "No Thinking Model", |
| Thinking: nil, |
| }, |
| { |
| ID: "user-defined-model", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "openai", |
| DisplayName: "User Defined Model", |
| UserDefined: true, |
| Thinking: nil, |
| }, |
| { |
| ID: "glm-test", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "iflow", |
| DisplayName: "GLM Test Model", |
| Thinking: ®istry.ThinkingSupport{Levels: []string{"none", "auto", "minimal", "low", "medium", "high", "xhigh"}}, |
| }, |
| { |
| ID: "minimax-test", |
| Object: "model", |
| Created: 1700000000, |
| OwnedBy: "test", |
| Type: "iflow", |
| DisplayName: "MiniMax Test Model", |
| Thinking: ®istry.ThinkingSupport{Levels: []string{"none", "auto", "minimal", "low", "medium", "high", "xhigh"}}, |
| }, |
| } |
| } |
|
|
| |
| func runThinkingTests(t *testing.T, cases []thinkingTestCase) { |
| for _, tc := range cases { |
| tc := tc |
| testName := fmt.Sprintf("Case%s_%s->%s_%s", tc.name, tc.from, tc.to, tc.model) |
| t.Run(testName, func(t *testing.T) { |
| suffixResult := thinking.ParseSuffix(tc.model) |
| baseModel := suffixResult.ModelName |
|
|
| translateTo := tc.to |
| applyTo := tc.to |
| if tc.to == "iflow" { |
| translateTo = "openai" |
| applyTo = "iflow" |
| } |
|
|
| body := sdktranslator.TranslateRequest( |
| sdktranslator.FromString(tc.from), |
| sdktranslator.FromString(translateTo), |
| baseModel, |
| []byte(tc.inputJSON), |
| true, |
| ) |
| if applyTo == "claude" { |
| body, _ = sjson.SetBytes(body, "max_tokens", 200000) |
| } |
|
|
| body, err := thinking.ApplyThinking(body, tc.model, tc.from, applyTo, applyTo) |
|
|
| if tc.expectErr { |
| if err == nil { |
| t.Fatalf("expected error but got none, body=%s", string(body)) |
| } |
| return |
| } |
| if err != nil { |
| t.Fatalf("unexpected error: %v, body=%s", err, string(body)) |
| } |
|
|
| if tc.expectField == "" { |
| var hasThinking bool |
| switch tc.to { |
| case "gemini": |
| hasThinking = gjson.GetBytes(body, "generationConfig.thinkingConfig").Exists() |
| case "gemini-cli": |
| hasThinking = gjson.GetBytes(body, "request.generationConfig.thinkingConfig").Exists() |
| case "antigravity": |
| hasThinking = gjson.GetBytes(body, "request.generationConfig.thinkingConfig").Exists() |
| case "claude": |
| hasThinking = gjson.GetBytes(body, "thinking").Exists() |
| case "openai": |
| hasThinking = gjson.GetBytes(body, "reasoning_effort").Exists() |
| case "codex": |
| hasThinking = gjson.GetBytes(body, "reasoning.effort").Exists() || gjson.GetBytes(body, "reasoning").Exists() |
| case "iflow": |
| hasThinking = gjson.GetBytes(body, "chat_template_kwargs.enable_thinking").Exists() || gjson.GetBytes(body, "reasoning_split").Exists() |
| } |
| if hasThinking { |
| t.Fatalf("expected no thinking field but found one, body=%s", string(body)) |
| } |
| return |
| } |
|
|
| val := gjson.GetBytes(body, tc.expectField) |
| if !val.Exists() { |
| t.Fatalf("expected field %s not found, body=%s", tc.expectField, string(body)) |
| } |
|
|
| actualValue := val.String() |
| if val.Type == gjson.Number { |
| actualValue = fmt.Sprintf("%d", val.Int()) |
| } |
| if actualValue != tc.expectValue { |
| t.Fatalf("field %s: expected %q, got %q, body=%s", tc.expectField, tc.expectValue, actualValue, string(body)) |
| } |
|
|
| if tc.includeThoughts != "" && (tc.to == "gemini" || tc.to == "gemini-cli" || tc.to == "antigravity") { |
| path := "generationConfig.thinkingConfig.includeThoughts" |
| if tc.to == "gemini-cli" || tc.to == "antigravity" { |
| path = "request.generationConfig.thinkingConfig.includeThoughts" |
| } |
| itVal := gjson.GetBytes(body, path) |
| if !itVal.Exists() { |
| t.Fatalf("expected includeThoughts field not found, body=%s", string(body)) |
| } |
| actual := fmt.Sprintf("%v", itVal.Bool()) |
| if actual != tc.includeThoughts { |
| t.Fatalf("includeThoughts: expected %s, got %s, body=%s", tc.includeThoughts, actual, string(body)) |
| } |
| } |
|
|
| |
| if tc.to == "iflow" && tc.expectField == "chat_template_kwargs.enable_thinking" && tc.expectValue == "true" { |
| baseModel := thinking.ParseSuffix(tc.model).ModelName |
| isGLM := strings.HasPrefix(strings.ToLower(baseModel), "glm") |
| ctVal := gjson.GetBytes(body, "chat_template_kwargs.clear_thinking") |
| if isGLM { |
| if !ctVal.Exists() { |
| t.Fatalf("expected clear_thinking field not found for GLM model, body=%s", string(body)) |
| } |
| if ctVal.Bool() != false { |
| t.Fatalf("clear_thinking: expected false, got %v, body=%s", ctVal.Bool(), string(body)) |
| } |
| } else if ctVal.Exists() { |
| t.Fatalf("expected no clear_thinking field for non-GLM enable_thinking model, body=%s", string(body)) |
| } |
| } |
| }) |
| } |
| } |
|
|