Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
fb4d0161
Unverified
Commit
fb4d0161
authored
Feb 27, 2026
by
Wesley Liddick
Committed by
GitHub
Feb 27, 2026
Browse files
Merge pull request #659 from touwaeriol/feature/gemini-3.1-flash-image
feat: 新增 gemini-3.1-flash-image 支持,替代 gemini-3-pro-image
parents
29759721
7388fcce
Changes
10
Show whitespace changes
Inline
Side-by-side
backend/internal/domain/constants.go
View file @
fb4d0161
...
@@ -92,16 +92,18 @@ var DefaultAntigravityModelMapping = map[string]string{
...
@@ -92,16 +92,18 @@ var DefaultAntigravityModelMapping = map[string]string{
"gemini-3-flash"
:
"gemini-3-flash"
,
"gemini-3-flash"
:
"gemini-3-flash"
,
"gemini-3-pro-high"
:
"gemini-3-pro-high"
,
"gemini-3-pro-high"
:
"gemini-3-pro-high"
,
"gemini-3-pro-low"
:
"gemini-3-pro-low"
,
"gemini-3-pro-low"
:
"gemini-3-pro-low"
,
"gemini-3-pro-image"
:
"gemini-3-pro-image"
,
// Gemini 3 preview 映射
// Gemini 3 preview 映射
"gemini-3-flash-preview"
:
"gemini-3-flash"
,
"gemini-3-flash-preview"
:
"gemini-3-flash"
,
"gemini-3-pro-preview"
:
"gemini-3-pro-high"
,
"gemini-3-pro-preview"
:
"gemini-3-pro-high"
,
"gemini-3-pro-image-preview"
:
"gemini-3-pro-image"
,
// Gemini 3.1 白名单
// Gemini 3.1 白名单
"gemini-3.1-pro-high"
:
"gemini-3.1-pro-high"
,
"gemini-3.1-pro-high"
:
"gemini-3.1-pro-high"
,
"gemini-3.1-pro-low"
:
"gemini-3.1-pro-low"
,
"gemini-3.1-pro-low"
:
"gemini-3.1-pro-low"
,
// Gemini 3.1 preview 映射
// Gemini 3.1 preview 映射
"gemini-3.1-pro-preview"
:
"gemini-3.1-pro-high"
,
"gemini-3.1-pro-preview"
:
"gemini-3.1-pro-high"
,
// Gemini 3.1 image 白名单
"gemini-3.1-flash-image"
:
"gemini-3.1-flash-image"
,
// Gemini 3.1 image preview 映射
"gemini-3.1-flash-image-preview"
:
"gemini-3.1-flash-image"
,
// 其他官方模型
// 其他官方模型
"gpt-oss-120b-medium"
:
"gpt-oss-120b-medium"
,
"gpt-oss-120b-medium"
:
"gpt-oss-120b-medium"
,
"tab_flash_lite_preview"
:
"tab_flash_lite_preview"
,
"tab_flash_lite_preview"
:
"tab_flash_lite_preview"
,
...
...
backend/internal/service/antigravity_gateway_service.go
View file @
fb4d0161
...
@@ -3757,14 +3757,17 @@ func (s *AntigravityGatewayService) extractImageSize(body []byte) string {
...
@@ -3757,14 +3757,17 @@ func (s *AntigravityGatewayService) extractImageSize(body []byte) string {
}
}
// isImageGenerationModel 判断模型是否为图片生成模型
// isImageGenerationModel 判断模型是否为图片生成模型
// 支持的模型:gemini-3
-pro
-image, gemini-3-pro-image
-preview
, gemini-2.5-flash-image 等
// 支持的模型:gemini-3
.1-flash
-image, gemini-3-pro-image, gemini-2.5-flash-image 等
func
isImageGenerationModel
(
model
string
)
bool
{
func
isImageGenerationModel
(
model
string
)
bool
{
modelLower
:=
strings
.
ToLower
(
model
)
modelLower
:=
strings
.
ToLower
(
model
)
// 移除 models/ 前缀
// 移除 models/ 前缀
modelLower
=
strings
.
TrimPrefix
(
modelLower
,
"models/"
)
modelLower
=
strings
.
TrimPrefix
(
modelLower
,
"models/"
)
// 精确匹配或前缀匹配
// 精确匹配或前缀匹配
return
modelLower
==
"gemini-3-pro-image"
||
return
modelLower
==
"gemini-3.1-flash-image"
||
modelLower
==
"gemini-3.1-flash-image-preview"
||
strings
.
HasPrefix
(
modelLower
,
"gemini-3.1-flash-image-"
)
||
modelLower
==
"gemini-3-pro-image"
||
modelLower
==
"gemini-3-pro-image-preview"
||
modelLower
==
"gemini-3-pro-image-preview"
||
strings
.
HasPrefix
(
modelLower
,
"gemini-3-pro-image-"
)
||
strings
.
HasPrefix
(
modelLower
,
"gemini-3-pro-image-"
)
||
modelLower
==
"gemini-2.5-flash-image"
||
modelLower
==
"gemini-2.5-flash-image"
||
...
...
backend/internal/service/gateway_service.go
View file @
fb4d0161
...
@@ -470,7 +470,7 @@ type ForwardResult struct {
...
@@ -470,7 +470,7 @@ type ForwardResult struct {
FirstTokenMs
*
int
// 首字时间(流式请求)
FirstTokenMs
*
int
// 首字时间(流式请求)
ClientDisconnect
bool
// 客户端是否在流式传输过程中断开
ClientDisconnect
bool
// 客户端是否在流式传输过程中断开
// 图片生成计费字段(
仅 gemini-3-pro-image
使用)
// 图片生成计费字段(
图片生成模型
使用)
ImageCount
int
// 生成的图片数量
ImageCount
int
// 生成的图片数量
ImageSize
string
// 图片尺寸 "1K", "2K", "4K"
ImageSize
string
// 图片尺寸 "1K", "2K", "4K"
...
...
backend/migrations/060_add_gemini31_flash_image_to_model_mapping.sql
0 → 100644
View file @
fb4d0161
-- Add gemini-3.1-flash-image and gemini-3.1-flash-image-preview to model_mapping
--
-- Background:
-- Antigravity now supports gemini-3.1-flash-image as the latest image generation model,
-- replacing the previous gemini-3-pro-image.
--
-- Strategy:
-- Directly overwrite the entire model_mapping with updated mappings
-- This ensures consistency with DefaultAntigravityModelMapping in constants.go
UPDATE
accounts
SET
credentials
=
jsonb_set
(
credentials
,
'{model_mapping}'
,
'{
"claude-opus-4-6-thinking": "claude-opus-4-6-thinking",
"claude-opus-4-6": "claude-opus-4-6-thinking",
"claude-opus-4-5-thinking": "claude-opus-4-6-thinking",
"claude-opus-4-5-20251101": "claude-opus-4-6-thinking",
"claude-sonnet-4-6": "claude-sonnet-4-6",
"claude-sonnet-4-5": "claude-sonnet-4-5",
"claude-sonnet-4-5-thinking": "claude-sonnet-4-5-thinking",
"claude-sonnet-4-5-20250929": "claude-sonnet-4-5",
"claude-haiku-4-5": "claude-sonnet-4-5",
"claude-haiku-4-5-20251001": "claude-sonnet-4-5",
"gemini-2.5-flash": "gemini-2.5-flash",
"gemini-2.5-flash-lite": "gemini-2.5-flash-lite",
"gemini-2.5-flash-thinking": "gemini-2.5-flash-thinking",
"gemini-2.5-pro": "gemini-2.5-pro",
"gemini-3-flash": "gemini-3-flash",
"gemini-3-pro-high": "gemini-3-pro-high",
"gemini-3-pro-low": "gemini-3-pro-low",
"gemini-3-flash-preview": "gemini-3-flash",
"gemini-3-pro-preview": "gemini-3-pro-high",
"gemini-3.1-pro-high": "gemini-3.1-pro-high",
"gemini-3.1-pro-low": "gemini-3.1-pro-low",
"gemini-3.1-pro-preview": "gemini-3.1-pro-high",
"gemini-3.1-flash-image": "gemini-3.1-flash-image",
"gemini-3.1-flash-image-preview": "gemini-3.1-flash-image",
"gpt-oss-120b-medium": "gpt-oss-120b-medium",
"tab_flash_lite_preview": "tab_flash_lite_preview"
}'
::
jsonb
)
WHERE
platform
=
'antigravity'
AND
deleted_at
IS
NULL
AND
credentials
->
'model_mapping'
IS
NOT
NULL
;
frontend/src/components/account/AccountStatusIndicator.vue
View file @
fb4d0161
...
@@ -181,6 +181,7 @@ const formatScopeName = (scope: string): string => {
...
@@ -181,6 +181,7 @@ const formatScopeName = (scope: string): string => {
'
gemini-3.1-pro-high
'
:
'
G3PH
'
,
'
gemini-3.1-pro-high
'
:
'
G3PH
'
,
'
gemini-3.1-pro-low
'
:
'
G3PL
'
,
'
gemini-3.1-pro-low
'
:
'
G3PL
'
,
'
gemini-3-pro-image
'
:
'
G3PI
'
,
'
gemini-3-pro-image
'
:
'
G3PI
'
,
'
gemini-3.1-flash-image
'
:
'
GImage
'
,
// 其他
// 其他
'
gpt-oss-120b-medium
'
:
'
GPT120
'
,
'
gpt-oss-120b-medium
'
:
'
GPT120
'
,
'
tab_flash_lite_preview
'
:
'
TabFL
'
,
'
tab_flash_lite_preview
'
:
'
TabFL
'
,
...
...
frontend/src/components/account/AccountUsageCell.vue
View file @
fb4d0161
...
@@ -397,8 +397,8 @@ const antigravity3ProUsageFromAPI = computed(() =>
...
@@ -397,8 +397,8 @@ const antigravity3ProUsageFromAPI = computed(() =>
// Gemini 3 Flash from API
// Gemini 3 Flash from API
const
antigravity3FlashUsageFromAPI
=
computed
(()
=>
getAntigravityUsageFromAPI
([
'
gemini-3-flash
'
]))
const
antigravity3FlashUsageFromAPI
=
computed
(()
=>
getAntigravityUsageFromAPI
([
'
gemini-3-flash
'
]))
// Gemini
3
Image from API
// Gemini Image from API
const
antigravity3ImageUsageFromAPI
=
computed
(()
=>
getAntigravityUsageFromAPI
([
'
gemini-3
-pro
-image
'
]))
const
antigravity3ImageUsageFromAPI
=
computed
(()
=>
getAntigravityUsageFromAPI
([
'
gemini-3
.1-flash
-image
'
]))
// Claude from API (all Claude model variants)
// Claude from API (all Claude model variants)
const
antigravityClaudeUsageFromAPI
=
computed
(()
=>
const
antigravityClaudeUsageFromAPI
=
computed
(()
=>
...
...
frontend/src/components/keys/UseKeyModal.vue
View file @
fb4d0161
...
@@ -864,8 +864,8 @@ function generateOpenCodeConfig(platform: string, baseUrl: string, apiKey: strin
...
@@ -864,8 +864,8 @@ function generateOpenCodeConfig(platform: string, baseUrl: string, apiKey: strin
}
}
}
}
},
},
'
gemini-3
-pro
-image
'
:
{
'
gemini-3
.1-flash
-image
'
:
{
name
:
'
Gemini 3
Pro (
Image
)
'
,
name
:
'
Gemini 3
.1 Flash
Image
'
,
limit
:
{
limit
:
{
context
:
1048576
,
context
:
1048576
,
output
:
65536
output
:
65536
...
...
frontend/src/composables/useModelWhitelist.ts
View file @
fb4d0161
...
@@ -91,10 +91,10 @@ const antigravityModels = [
...
@@ -91,10 +91,10 @@ const antigravityModels = [
'
gemini-3-flash
'
,
'
gemini-3-flash
'
,
'
gemini-3-pro-high
'
,
'
gemini-3-pro-high
'
,
'
gemini-3-pro-low
'
,
'
gemini-3-pro-low
'
,
'
gemini-3-pro-image
'
,
// Gemini 3.1 系列
// Gemini 3.1 系列
'
gemini-3.1-pro-high
'
,
'
gemini-3.1-pro-high
'
,
'
gemini-3.1-pro-low
'
,
'
gemini-3.1-pro-low
'
,
'
gemini-3.1-flash-image
'
,
// 其他
// 其他
'
gpt-oss-120b-medium
'
,
'
gpt-oss-120b-medium
'
,
'
tab_flash_lite_preview
'
'
tab_flash_lite_preview
'
...
...
frontend/src/i18n/locales/en.ts
View file @
fb4d0161
...
@@ -1133,7 +1133,7 @@ export default {
...
@@ -1133,7 +1133,7 @@ export default {
},
},
imagePricing
:
{
imagePricing
:
{
title
:
'
Image Generation Pricing
'
,
title
:
'
Image Generation Pricing
'
,
description
:
'
Configure pricing for
gemini-3-pro-image
model. Leave empty to use default prices.
'
description
:
'
Configure pricing for
image generation
model
s
. Leave empty to use default prices.
'
},
},
soraPricing
:
{
soraPricing
:
{
title
:
'
Sora Per-Request Pricing
'
,
title
:
'
Sora Per-Request Pricing
'
,
...
@@ -2047,7 +2047,7 @@ export default {
...
@@ -2047,7 +2047,7 @@ export default {
geminiFlashDaily
:
'
Flash
'
,
geminiFlashDaily
:
'
Flash
'
,
gemini3Pro
:
'
G3P
'
,
gemini3Pro
:
'
G3P
'
,
gemini3Flash
:
'
G3F
'
,
gemini3Flash
:
'
G3F
'
,
gemini3Image
:
'
G
3
I
'
,
gemini3Image
:
'
GI
mage
'
,
claude
:
'
Claude
'
claude
:
'
Claude
'
},
},
tier
:
{
tier
:
{
...
...
frontend/src/i18n/locales/zh.ts
View file @
fb4d0161
...
@@ -1220,7 +1220,7 @@ export default {
...
@@ -1220,7 +1220,7 @@ export default {
},
},
imagePricing
:
{
imagePricing
:
{
title
:
'
图片生成计费
'
,
title
:
'
图片生成计费
'
,
description
:
'
配置
gemini-3-pro-image
模型的图片生成价格,留空则使用默认价格
'
description
:
'
配置
图片生成
模型的图片生成价格,留空则使用默认价格
'
},
},
soraPricing
:
{
soraPricing
:
{
title
:
'
Sora 按次计费
'
,
title
:
'
Sora 按次计费
'
,
...
@@ -1582,7 +1582,7 @@ export default {
...
@@ -1582,7 +1582,7 @@ export default {
geminiFlashDaily
:
'
Flash
'
,
geminiFlashDaily
:
'
Flash
'
,
gemini3Pro
:
'
G3P
'
,
gemini3Pro
:
'
G3P
'
,
gemini3Flash
:
'
G3F
'
,
gemini3Flash
:
'
G3F
'
,
gemini3Image
:
'
G
3
I
'
,
gemini3Image
:
'
GI
mage
'
,
claude
:
'
Claude
'
claude
:
'
Claude
'
},
},
tier
:
{
tier
:
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment