From d870c1099f09eaa3c730a197197210a3c98ae573 Mon Sep 17 00:00:00 2001 From: wozulong <> Date: Wed, 26 Feb 2025 11:50:24 +0800 Subject: [PATCH] feat: add claude-3.7-sonnet 128k output support --- docker-compose.yml | 4 ++-- relay/channel/claude/adaptor.go | 4 ++-- relay/channel/claude/relay-claude.go | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b125e68..f042bfa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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: diff --git a/relay/channel/claude/adaptor.go b/relay/channel/claude/adaptor.go index a1b26a8..9751faa 100644 --- a/relay/channel/claude/adaptor.go +++ b/relay/channel/claude/adaptor.go @@ -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) } } diff --git a/relay/channel/claude/relay-claude.go b/relay/channel/claude/relay-claude.go index db0986e..cd2c334 100644 --- a/relay/channel/claude/relay-claude.go +++ b/relay/channel/claude/relay-claude.go @@ -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), } }