feat: add claude-3.7-sonnet 128k output support

This commit is contained in:
wozulong 2025-02-26 11:50:24 +08:00
parent 7c0b93c38c
commit d870c1099f
3 changed files with 11 additions and 11 deletions

View File

@ -25,12 +25,12 @@ services:
- db
redis:
image: redis:latest
image: redis:7.4
container_name: redis
restart: always
db:
image: mysql:8.2.0
image: mysql:8.2
container_name: mysql
restart: always
volumes:

View File

@ -70,9 +70,9 @@ func (a *Adaptor) ConvertRequest(c *gin.Context, info *relaycommon.RelayInfo, re
return nil, errors.New("request is nil")
}
if a.RequestMode == RequestModeCompletion {
return RequestOpenAI2ClaudeComplete(*request), nil
return RequestOpenAI2ClaudeComplete(c, *request), nil
} else {
return RequestOpenAI2ClaudeMessage(*request)
return RequestOpenAI2ClaudeMessage(c, *request)
}
}

View File

@ -28,7 +28,7 @@ func stopReasonClaude2OpenAI(reason string) string {
}
}
func RequestOpenAI2ClaudeComplete(textRequest dto.GeneralOpenAIRequest) *ClaudeRequest {
func RequestOpenAI2ClaudeComplete(c *gin.Context, textRequest dto.GeneralOpenAIRequest) *ClaudeRequest {
claudeRequest := ClaudeRequest{
Model: textRequest.Model,
@ -59,16 +59,16 @@ func RequestOpenAI2ClaudeComplete(textRequest dto.GeneralOpenAIRequest) *ClaudeR
return &claudeRequest
}
func RequestOpenAI2ClaudeMessage(textRequest dto.GeneralOpenAIRequest) (*ClaudeRequest, error) {
func RequestOpenAI2ClaudeMessage(c *gin.Context, textRequest dto.GeneralOpenAIRequest) (*ClaudeRequest, error) {
claudeTools := make([]Tool, 0, len(textRequest.Tools))
if strings.HasSuffix(textRequest.Model, "-thinking") {
textRequest.Model = strings.TrimSuffix(textRequest.Model, "-thinking")
if textRequest.MaxTokens == 0 {
textRequest.MaxTokens = 4096
} else if textRequest.MaxTokens < 1280 {
textRequest.MaxTokens = 1280
if textRequest.MaxTokens < 2048 {
textRequest.MaxTokens = 2048
} else if textRequest.MaxTokens > 64000 {
c.Request.Header.Set("anthropic-beta", "output-128k-2025-02-19")
}
textRequest.TopP = 0
@ -76,7 +76,7 @@ func RequestOpenAI2ClaudeMessage(textRequest dto.GeneralOpenAIRequest) (*ClaudeR
textRequest.Temperature = 0
textRequest.Thinking = &dto.Thinking{
Type: "enabled",
BudgetTokens: int(float64(textRequest.MaxTokens) * 0.8),
BudgetTokens: int(float64(textRequest.MaxTokens) * 0.5),
}
}