fix: 图片计费代码审查问题修复

- isImageGenerationModel 改为精确匹配/前缀匹配,避免误匹配
- 新增 normalizePrice 函数,支持负数清除价格配置
- 更新注释说明 Gemini API 每次请求只生成一张图片
- 添加测试用例验证不会误匹配自定义模型名
This commit is contained in:
song
2026-01-05 17:14:06 +08:00
parent d4c2b723a5
commit 5b1907fe61
4 changed files with 37 additions and 12 deletions

View File

@@ -838,7 +838,7 @@ handleSuccess:
// 判断是否为图片生成模型
imageCount := 0
if isImageGenerationModel(mappedModel) {
// 图片模型按次计费,默认 1 张图片
// Gemini 图片生成 API 每次请求只生成一张图片API 限制)
imageCount = 1
}
@@ -1192,8 +1192,17 @@ func (s *AntigravityGatewayService) extractImageSize(body []byte) string {
}
// isImageGenerationModel 判断模型是否为图片生成模型
// 支持的模型gemini-3-pro-image, gemini-3-pro-image-preview, gemini-2.5-flash-image 等
func isImageGenerationModel(model string) bool {
modelLower := strings.ToLower(model)
return strings.Contains(modelLower, "gemini-3-pro-image") ||
strings.Contains(modelLower, "gemini-2.5-flash-image")
// 移除 models/ 前缀
modelLower = strings.TrimPrefix(modelLower, "models/")
// 精确匹配或前缀匹配
return modelLower == "gemini-3-pro-image" ||
modelLower == "gemini-3-pro-image-preview" ||
strings.HasPrefix(modelLower, "gemini-3-pro-image-") ||
modelLower == "gemini-2.5-flash-image" ||
modelLower == "gemini-2.5-flash-image-preview" ||
strings.HasPrefix(modelLower, "gemini-2.5-flash-image-")
}