mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 04:50:52 +08:00
fix(thinking): fix auth matching for thinking suffix and json field conflicts
This commit is contained in:
@@ -127,6 +127,8 @@ func (a *Applier) applyLevelFormat(body []byte, config thinking.ThinkingConfig)
|
|||||||
|
|
||||||
// Remove conflicting field to avoid both thinkingLevel and thinkingBudget in output
|
// Remove conflicting field to avoid both thinkingLevel and thinkingBudget in output
|
||||||
result, _ := sjson.DeleteBytes(body, "generationConfig.thinkingConfig.thinkingBudget")
|
result, _ := sjson.DeleteBytes(body, "generationConfig.thinkingConfig.thinkingBudget")
|
||||||
|
// Normalize includeThoughts field name to avoid oneof conflicts in upstream JSON parsing.
|
||||||
|
result, _ = sjson.DeleteBytes(result, "generationConfig.thinkingConfig.include_thoughts")
|
||||||
|
|
||||||
if config.Mode == thinking.ModeNone {
|
if config.Mode == thinking.ModeNone {
|
||||||
result, _ = sjson.SetBytes(result, "generationConfig.thinkingConfig.includeThoughts", false)
|
result, _ = sjson.SetBytes(result, "generationConfig.thinkingConfig.includeThoughts", false)
|
||||||
@@ -150,6 +152,8 @@ func (a *Applier) applyLevelFormat(body []byte, config thinking.ThinkingConfig)
|
|||||||
func (a *Applier) applyBudgetFormat(body []byte, config thinking.ThinkingConfig) ([]byte, error) {
|
func (a *Applier) applyBudgetFormat(body []byte, config thinking.ThinkingConfig) ([]byte, error) {
|
||||||
// Remove conflicting field to avoid both thinkingLevel and thinkingBudget in output
|
// Remove conflicting field to avoid both thinkingLevel and thinkingBudget in output
|
||||||
result, _ := sjson.DeleteBytes(body, "generationConfig.thinkingConfig.thinkingLevel")
|
result, _ := sjson.DeleteBytes(body, "generationConfig.thinkingConfig.thinkingLevel")
|
||||||
|
// Normalize includeThoughts field name to avoid oneof conflicts in upstream JSON parsing.
|
||||||
|
result, _ = sjson.DeleteBytes(result, "generationConfig.thinkingConfig.include_thoughts")
|
||||||
|
|
||||||
budget := config.Budget
|
budget := config.Budget
|
||||||
// ModeNone semantics:
|
// ModeNone semantics:
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ func (a *Applier) applyCompatible(body []byte, config thinking.ThinkingConfig) (
|
|||||||
func (a *Applier) applyLevelFormat(body []byte, config thinking.ThinkingConfig) ([]byte, error) {
|
func (a *Applier) applyLevelFormat(body []byte, config thinking.ThinkingConfig) ([]byte, error) {
|
||||||
// Remove conflicting field to avoid both thinkingLevel and thinkingBudget in output
|
// Remove conflicting field to avoid both thinkingLevel and thinkingBudget in output
|
||||||
result, _ := sjson.DeleteBytes(body, "request.generationConfig.thinkingConfig.thinkingBudget")
|
result, _ := sjson.DeleteBytes(body, "request.generationConfig.thinkingConfig.thinkingBudget")
|
||||||
|
// Normalize includeThoughts field name to avoid oneof conflicts in upstream JSON parsing.
|
||||||
|
result, _ = sjson.DeleteBytes(result, "request.generationConfig.thinkingConfig.include_thoughts")
|
||||||
|
|
||||||
if config.Mode == thinking.ModeNone {
|
if config.Mode == thinking.ModeNone {
|
||||||
result, _ = sjson.SetBytes(result, "request.generationConfig.thinkingConfig.includeThoughts", false)
|
result, _ = sjson.SetBytes(result, "request.generationConfig.thinkingConfig.includeThoughts", false)
|
||||||
@@ -110,6 +112,8 @@ func (a *Applier) applyLevelFormat(body []byte, config thinking.ThinkingConfig)
|
|||||||
func (a *Applier) applyBudgetFormat(body []byte, config thinking.ThinkingConfig) ([]byte, error) {
|
func (a *Applier) applyBudgetFormat(body []byte, config thinking.ThinkingConfig) ([]byte, error) {
|
||||||
// Remove conflicting field to avoid both thinkingLevel and thinkingBudget in output
|
// Remove conflicting field to avoid both thinkingLevel and thinkingBudget in output
|
||||||
result, _ := sjson.DeleteBytes(body, "request.generationConfig.thinkingConfig.thinkingLevel")
|
result, _ := sjson.DeleteBytes(body, "request.generationConfig.thinkingConfig.thinkingLevel")
|
||||||
|
// Normalize includeThoughts field name to avoid oneof conflicts in upstream JSON parsing.
|
||||||
|
result, _ = sjson.DeleteBytes(result, "request.generationConfig.thinkingConfig.include_thoughts")
|
||||||
|
|
||||||
budget := config.Budget
|
budget := config.Budget
|
||||||
includeThoughts := false
|
includeThoughts := false
|
||||||
|
|||||||
@@ -1711,6 +1711,13 @@ func (m *Manager) pickNext(ctx context.Context, provider, model string, opts cli
|
|||||||
}
|
}
|
||||||
candidates := make([]*Auth, 0, len(m.auths))
|
candidates := make([]*Auth, 0, len(m.auths))
|
||||||
modelKey := strings.TrimSpace(model)
|
modelKey := strings.TrimSpace(model)
|
||||||
|
// Always use base model name (without thinking suffix) for auth matching.
|
||||||
|
if modelKey != "" {
|
||||||
|
parsed := thinking.ParseSuffix(modelKey)
|
||||||
|
if parsed.ModelName != "" {
|
||||||
|
modelKey = strings.TrimSpace(parsed.ModelName)
|
||||||
|
}
|
||||||
|
}
|
||||||
registryRef := registry.GetGlobalRegistry()
|
registryRef := registry.GetGlobalRegistry()
|
||||||
for _, candidate := range m.auths {
|
for _, candidate := range m.auths {
|
||||||
if candidate.Provider != provider || candidate.Disabled {
|
if candidate.Provider != provider || candidate.Disabled {
|
||||||
|
|||||||
Reference in New Issue
Block a user