From 70c27bc662fd4edb6487261538208bc0a2e802a9 Mon Sep 17 00:00:00 2001 From: huanghejian Date: Thu, 11 Sep 2025 12:31:43 +0800 Subject: [PATCH] feat: improve nova config --- relay/channel/aws/dto.go | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/relay/channel/aws/dto.go b/relay/channel/aws/dto.go index 53daef288..9c9fe946f 100644 --- a/relay/channel/aws/dto.go +++ b/relay/channel/aws/dto.go @@ -75,7 +75,7 @@ func convertToNovaRequest(req *dto.GeneralOpenAIRequest) *NovaRequest { } // 设置推理配置 - if req.MaxTokens != 0 || (req.Temperature != nil && *req.Temperature != 0) || req.TopP != 0 { + if req.MaxTokens != 0 || (req.Temperature != nil && *req.Temperature != 0) || req.TopP != 0 || req.TopK != 0 || req.Stop != nil { novaReq.InferenceConfig = &NovaInferenceConfig{} if req.MaxTokens != 0 { novaReq.InferenceConfig.MaxTokens = int(req.MaxTokens) @@ -86,7 +86,40 @@ func convertToNovaRequest(req *dto.GeneralOpenAIRequest) *NovaRequest { if req.TopP != 0 { novaReq.InferenceConfig.TopP = req.TopP } + if req.TopK != 0 { + novaReq.InferenceConfig.TopK = req.TopK + } + if req.Stop != nil { + if stopSequences := parseStopSequences(req.Stop); len(stopSequences) > 0 { + novaReq.InferenceConfig.StopSequences = stopSequences + } + } } return novaReq } + +// parseStopSequences 解析停止序列,支持字符串或字符串数组 +func parseStopSequences(stop any) []string { + if stop == nil { + return nil + } + + switch v := stop.(type) { + case string: + if v != "" { + return []string{v} + } + case []string: + return v + case []interface{}: + var sequences []string + for _, item := range v { + if str, ok := item.(string); ok && str != "" { + sequences = append(sequences, str) + } + } + return sequences + } + return nil +}