From 5f1c5945f86c71892862ee97d6e01cefc8834a4f Mon Sep 17 00:00:00 2001 From: wozulong <> Date: Wed, 26 Feb 2025 12:03:16 +0800 Subject: [PATCH] feat: add claude-3.7-sonnet 128k output support --- relay/channel/aws/adaptor.go | 2 +- relay/channel/claude/relay-claude.go | 4 +++- relay/channel/vertex/adaptor.go | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/relay/channel/aws/adaptor.go b/relay/channel/aws/adaptor.go index 875d3dd..48a6876 100644 --- a/relay/channel/aws/adaptor.go +++ b/relay/channel/aws/adaptor.go @@ -48,7 +48,7 @@ func (a *Adaptor) ConvertRequest(c *gin.Context, info *relaycommon.RelayInfo, re var claudeReq *claude.ClaudeRequest var err error - claudeReq, err = claude.RequestOpenAI2ClaudeMessage(*request) + claudeReq, err = claude.RequestOpenAI2ClaudeMessage(c, *request) c.Set("request_model", request.Model) c.Set("converted_request", claudeReq) diff --git a/relay/channel/claude/relay-claude.go b/relay/channel/claude/relay-claude.go index cd2c334..dcaed36 100644 --- a/relay/channel/claude/relay-claude.go +++ b/relay/channel/claude/relay-claude.go @@ -65,7 +65,9 @@ func RequestOpenAI2ClaudeMessage(c *gin.Context, textRequest dto.GeneralOpenAIRe if strings.HasSuffix(textRequest.Model, "-thinking") { textRequest.Model = strings.TrimSuffix(textRequest.Model, "-thinking") - if textRequest.MaxTokens < 2048 { + if textRequest.MaxTokens == 0 { + textRequest.MaxTokens = 8192 + } else if textRequest.MaxTokens < 2048 { textRequest.MaxTokens = 2048 } else if textRequest.MaxTokens > 64000 { c.Request.Header.Set("anthropic-beta", "output-128k-2025-02-19") diff --git a/relay/channel/vertex/adaptor.go b/relay/channel/vertex/adaptor.go index 4174d78..03d1f02 100644 --- a/relay/channel/vertex/adaptor.go +++ b/relay/channel/vertex/adaptor.go @@ -122,7 +122,7 @@ func (a *Adaptor) ConvertRequest(c *gin.Context, info *relaycommon.RelayInfo, re return nil, errors.New("request is nil") } if a.RequestMode == RequestModeClaude { - claudeReq, err := claude.RequestOpenAI2ClaudeMessage(*request) + claudeReq, err := claude.RequestOpenAI2ClaudeMessage(c, *request) if err != nil { return nil, err }