diff --git a/relay/channel/openai/adaptor.go b/relay/channel/openai/adaptor.go index 01a5fa97..c74dbc12 100644 --- a/relay/channel/openai/adaptor.go +++ b/relay/channel/openai/adaptor.go @@ -188,6 +188,7 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycommon.RelayIn if len(request.Usage) == 0 { request.Usage = json.RawMessage(`{"include":true}`) } + // 适配 OpenRouter 的 thinking 后缀 if strings.HasSuffix(info.UpstreamModelName, "-thinking") { info.UpstreamModelName = strings.TrimSuffix(info.UpstreamModelName, "-thinking") request.Model = info.UpstreamModelName @@ -195,7 +196,7 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycommon.RelayIn reasoning := map[string]any{ "enabled": true, } - if request.ReasoningEffort != "" { + if request.ReasoningEffort != "" && request.ReasoningEffort != "none" { reasoning["effort"] = request.ReasoningEffort } marshal, err := common.Marshal(reasoning) @@ -204,6 +205,23 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycommon.RelayIn } request.Reasoning = marshal } + } else { + if len(request.Reasoning) == 0 { + // 适配 OpenAI 的 ReasoningEffort 格式 + if request.ReasoningEffort != "" { + reasoning := map[string]any{ + "enabled": true, + } + if request.ReasoningEffort != "none" { + reasoning["effort"] = request.ReasoningEffort + marshal, err := common.Marshal(reasoning) + if err != nil { + return nil, fmt.Errorf("error marshalling reasoning: %w", err) + } + request.Reasoning = marshal + } + } + } } } if strings.HasPrefix(request.Model, "o") || strings.HasPrefix(request.Model, "gpt-5") {