|
|
@@ -2,6 +2,7 @@ package relay
|
|
|
|
|
|
import (
|
|
|
"bytes"
|
|
|
+ "encoding/json"
|
|
|
"fmt"
|
|
|
"io"
|
|
|
"net/http"
|
|
|
@@ -14,6 +15,7 @@ import (
|
|
|
"github.com/QuantumNous/new-api/relay/helper"
|
|
|
"github.com/QuantumNous/new-api/service"
|
|
|
"github.com/QuantumNous/new-api/setting/model_setting"
|
|
|
+ "github.com/QuantumNous/new-api/setting/reasoning"
|
|
|
"github.com/QuantumNous/new-api/types"
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
@@ -49,7 +51,15 @@ func ClaudeHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIError *typ
|
|
|
request.MaxTokens = uint(model_setting.GetClaudeSettings().GetDefaultMaxTokens(request.Model))
|
|
|
}
|
|
|
|
|
|
- if model_setting.GetClaudeSettings().ThinkingAdapterEnabled &&
|
|
|
+ if baseModel, effortLevel, ok := reasoning.TrimEffortSuffix(request.Model); ok && effortLevel != "" &&
|
|
|
+ strings.HasPrefix(request.Model, "claude-opus-4-6") {
|
|
|
+ request.Model = baseModel
|
|
|
+ request.Thinking = &dto.Thinking{
|
|
|
+ Type: "adaptive",
|
|
|
+ }
|
|
|
+ request.OutputConfig = json.RawMessage(fmt.Sprintf(`{"effort":"%s"}`, effortLevel))
|
|
|
+ info.UpstreamModelName = request.Model
|
|
|
+ } else if model_setting.GetClaudeSettings().ThinkingAdapterEnabled &&
|
|
|
strings.HasSuffix(request.Model, "-thinking") {
|
|
|
if request.Thinking == nil {
|
|
|
// 因为BudgetTokens 必须大于1024
|