fix: use thinking.adaptive for Opus 4.7 in ReasoningEffort and Reasoning paths
Opus 4.7 rejects thinking.type="enabled". The effort-suffix and -thinking suffix paths already handled this, but the ReasoningEffort and Reasoning parameter paths still sent "enabled". Now all paths use "adaptive" + output_config.effort for Opus 4.7. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -204,22 +204,32 @@ func RequestOpenAI2ClaudeMessage(c *gin.Context, textRequest dto.GeneralOpenAIRe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isOpus47 := strings.HasPrefix(claudeRequest.Model, "claude-opus-4-7")
|
||||||
|
|
||||||
if textRequest.ReasoningEffort != "" {
|
if textRequest.ReasoningEffort != "" {
|
||||||
switch textRequest.ReasoningEffort {
|
if isOpus47 {
|
||||||
case "low":
|
claudeRequest.Thinking = &dto.Thinking{Type: "adaptive", Display: "summarized"}
|
||||||
claudeRequest.Thinking = &dto.Thinking{
|
claudeRequest.OutputConfig = json.RawMessage(fmt.Sprintf(`{"effort":"%s"}`, textRequest.ReasoningEffort))
|
||||||
Type: "enabled",
|
claudeRequest.Temperature = nil
|
||||||
BudgetTokens: common.GetPointer[int](1280),
|
claudeRequest.TopP = nil
|
||||||
}
|
claudeRequest.TopK = nil
|
||||||
case "medium":
|
} else {
|
||||||
claudeRequest.Thinking = &dto.Thinking{
|
switch textRequest.ReasoningEffort {
|
||||||
Type: "enabled",
|
case "low":
|
||||||
BudgetTokens: common.GetPointer[int](2048),
|
claudeRequest.Thinking = &dto.Thinking{
|
||||||
}
|
Type: "enabled",
|
||||||
case "high":
|
BudgetTokens: common.GetPointer[int](1280),
|
||||||
claudeRequest.Thinking = &dto.Thinking{
|
}
|
||||||
Type: "enabled",
|
case "medium":
|
||||||
BudgetTokens: common.GetPointer[int](4096),
|
claudeRequest.Thinking = &dto.Thinking{
|
||||||
|
Type: "enabled",
|
||||||
|
BudgetTokens: common.GetPointer[int](2048),
|
||||||
|
}
|
||||||
|
case "high":
|
||||||
|
claudeRequest.Thinking = &dto.Thinking{
|
||||||
|
Type: "enabled",
|
||||||
|
BudgetTokens: common.GetPointer[int](4096),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -233,9 +243,17 @@ func RequestOpenAI2ClaudeMessage(c *gin.Context, textRequest dto.GeneralOpenAIRe
|
|||||||
|
|
||||||
budgetTokens := reasoning.MaxTokens
|
budgetTokens := reasoning.MaxTokens
|
||||||
if budgetTokens > 0 {
|
if budgetTokens > 0 {
|
||||||
claudeRequest.Thinking = &dto.Thinking{
|
if isOpus47 {
|
||||||
Type: "enabled",
|
claudeRequest.Thinking = &dto.Thinking{Type: "adaptive", Display: "summarized"}
|
||||||
BudgetTokens: &budgetTokens,
|
claudeRequest.OutputConfig = json.RawMessage(`{"effort":"high"}`)
|
||||||
|
claudeRequest.Temperature = nil
|
||||||
|
claudeRequest.TopP = nil
|
||||||
|
claudeRequest.TopK = nil
|
||||||
|
} else {
|
||||||
|
claudeRequest.Thinking = &dto.Thinking{
|
||||||
|
Type: "enabled",
|
||||||
|
BudgetTokens: &budgetTokens,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user