refactor(llm): 抽取 isTemperatureError 并优化推理模型重试条件
This commit is contained in:
1 parent
4e8bcdd68e
commit
738bce4a03
1 file changed
+13
-4
+13
-4
@@ -251,6 +251,15 @@ func isReasoningModel(model string) bool {
|
|||||||
strings.Contains(m, "sol")
|
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 一次性完整返回代码评审结果
|
// Review 一次性完整返回代码评审结果
|
||||||
func (c *Client) Review(ctx context.Context, systemPrompt, diff string) (string, error) {
|
func (c *Client) Review(ctx context.Context, systemPrompt, diff string) (string, error) {
|
||||||
temp := float32(0.2)
|
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)
|
resp, err := c.client.CreateChatCompletion(ctx, req)
|
||||||
// 针对限制了 temperature 的模型,自动降级为 1.0 重试
|
// 针对限制了 temperature 的模型,且首次非 1.0 时,自动调整为 1.0 重试
|
||||||
if err != nil && (strings.Contains(strings.ToLower(err.Error()), "temperature") || strings.Contains(strings.ToLower(err.Error()), "beta-limitations")) {
|
if err != nil && req.Temperature != 1.0 && isTemperatureError(err) {
|
||||||
req.Temperature = 1.0
|
req.Temperature = 1.0
|
||||||
resp, err = c.client.CreateChatCompletion(ctx, req)
|
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)
|
stream, err := c.client.CreateChatCompletionStream(ctx, req)
|
||||||
// 针对限制了 temperature 的模型,自动降级为 1.0 重试
|
// 针对限制了 temperature 的模型,且首次非 1.0 时,自动调整为 1.0 重试
|
||||||
if err != nil && (strings.Contains(strings.ToLower(err.Error()), "temperature") || strings.Contains(strings.ToLower(err.Error()), "beta-limitations")) {
|
if err != nil && req.Temperature != 1.0 && isTemperatureError(err) {
|
||||||
req.Temperature = 1.0
|
req.Temperature = 1.0
|
||||||
stream, err = c.client.CreateChatCompletionStream(ctx, req)
|
stream, err = c.client.CreateChatCompletionStream(ctx, req)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user