From 738bce4a03a0745cbaac51238f46a2cc1e863aaa Mon Sep 17 00:00:00 2001 From: unclesam <2036253946@qq.com> Date: Sat, 22 Aug 2026 20:39:24 +0800 Subject: [PATCH] =?UTF-8?q?refactor(llm):=20=E6=8A=BD=E5=8F=96=20isTempera?= =?UTF-8?q?tureError=20=E5=B9=B6=E4=BC=98=E5=8C=96=E6=8E=A8=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E9=87=8D=E8=AF=95=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/llm/client.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/internal/llm/client.go b/internal/llm/client.go index 4baf78b..e542dc4 100644 --- a/internal/llm/client.go +++ b/internal/llm/client.go @@ -251,6 +251,15 @@ func isReasoningModel(model string) bool { strings.Contains(m, "sol") } +// isTemperatureError 检测 API 报错是否由 temperature 参数限制触发 +func isTemperatureError(err error) bool { + if err == nil { + return false + } + msg := strings.ToLower(err.Error()) + return strings.Contains(msg, "temperature") || strings.Contains(msg, "beta-limitations") +} + // Review 一次性完整返回代码评审结果 func (c *Client) Review(ctx context.Context, systemPrompt, diff string) (string, error) { temp := float32(0.2) @@ -268,8 +277,8 @@ func (c *Client) Review(ctx context.Context, systemPrompt, diff string) (string, } resp, err := c.client.CreateChatCompletion(ctx, req) - // 针对限制了 temperature 的模型,自动降级为 1.0 重试 - if err != nil && (strings.Contains(strings.ToLower(err.Error()), "temperature") || strings.Contains(strings.ToLower(err.Error()), "beta-limitations")) { + // 针对限制了 temperature 的模型,且首次非 1.0 时,自动调整为 1.0 重试 + if err != nil && req.Temperature != 1.0 && isTemperatureError(err) { req.Temperature = 1.0 resp, err = c.client.CreateChatCompletion(ctx, req) } @@ -420,8 +429,8 @@ func (c *Client) ReviewStream(ctx context.Context, systemPrompt, diff string, on } stream, err := c.client.CreateChatCompletionStream(ctx, req) - // 针对限制了 temperature 的模型,自动降级为 1.0 重试 - if err != nil && (strings.Contains(strings.ToLower(err.Error()), "temperature") || strings.Contains(strings.ToLower(err.Error()), "beta-limitations")) { + // 针对限制了 temperature 的模型,且首次非 1.0 时,自动调整为 1.0 重试 + if err != nil && req.Temperature != 1.0 && isTemperatureError(err) { req.Temperature = 1.0 stream, err = c.client.CreateChatCompletionStream(ctx, req) }