238 lines
9.0 KiB
SQL
238 lines
9.0 KiB
SQL
WITH seedream50_pro AS (
|
|
SELECT
|
|
'volces:doubao-seedream-5-0-pro-260628' AS canonical_model_key,
|
|
'doubao-seedream-5-0-pro-260628' AS provider_model_name,
|
|
'Seedream-5.0-Pro' AS model_alias,
|
|
'Seedream 5.0 Pro' AS display_name,
|
|
'["image_edit","image_generate"]'::jsonb AS model_type,
|
|
'{
|
|
"image_edit": {
|
|
"input_multiple_images": true,
|
|
"input_max_images_count": 10,
|
|
"input_max_file_size_bytes": 31457280,
|
|
"output_resolutions": ["1K", "2K"],
|
|
"size_param_format": "resolution",
|
|
"allow_custom_width_height_size": true,
|
|
"output_max_size": 4624220,
|
|
"output_size_range": [921600, 4624220],
|
|
"aspect_ratio_range": [0.0625, 16],
|
|
"output_multiple_images": false,
|
|
"output_max_images_count": 1
|
|
},
|
|
"image_generate": {
|
|
"output_resolutions": ["1K", "2K"],
|
|
"size_param_format": "resolution",
|
|
"allow_custom_width_height_size": true,
|
|
"output_max_size": 4624220,
|
|
"output_size_range": [921600, 4624220],
|
|
"aspect_ratio_range": [0.0625, 16],
|
|
"output_multiple_images": false,
|
|
"output_max_images_count": 1
|
|
},
|
|
"stream": false,
|
|
"supportWebSearch": false,
|
|
"originalTypes": ["image_edit", "image_generate"]
|
|
}'::jsonb AS capabilities,
|
|
'{
|
|
"image": {
|
|
"basePrice": 10,
|
|
"baseWeight": 1,
|
|
"dynamicWeight": {"1K": 1, "2K": 1.5, "3K": 1.75, "4K": 2, "8K": 4}
|
|
},
|
|
"currency": "resource"
|
|
}'::jsonb AS base_billing_config,
|
|
'{"rules":[{"metric":"rpm","limit":500,"windowSeconds":60}]}'::jsonb AS rate_limit_policy,
|
|
'{
|
|
"source": "server-main.integration-platform",
|
|
"sourceProviderCode": "volces",
|
|
"sourceProviderName": "火山引擎(豆包)",
|
|
"sourceSpecType": "volces",
|
|
"originalTypes": ["image_edit", "image_generate"],
|
|
"alias": "Seedream-5.0-Pro",
|
|
"displayName": "Seedream 5.0 Pro",
|
|
"description": "高精度图片生成与多参考图编辑,支持 1K、2K 和自定义尺寸",
|
|
"iconPath": "https://ecmb.bdimg.com/tam-ogel/1801637412_-164881388_88_88.jpg",
|
|
"billingType": "external-api",
|
|
"billingMode": "",
|
|
"referenceModel": "",
|
|
"modelWeight": null,
|
|
"selectable": true,
|
|
"rawModel": {
|
|
"name": "doubao-seedream-5-0-pro-260628",
|
|
"types": ["image_edit", "image_generate"],
|
|
"alias": "Seedream-5.0-Pro",
|
|
"display_name": "Seedream 5.0 Pro",
|
|
"description": "高精度图片生成与多参考图编辑,支持 1K、2K 和自定义尺寸",
|
|
"icon_path": "https://ecmb.bdimg.com/tam-ogel/1801637412_-164881388_88_88.jpg",
|
|
"model_limits": {"max_request_per_minute": 500}
|
|
}
|
|
}'::jsonb AS metadata
|
|
)
|
|
INSERT INTO base_model_catalog (
|
|
provider_id,
|
|
provider_key,
|
|
canonical_model_key,
|
|
provider_model_name,
|
|
model_type,
|
|
display_name,
|
|
capabilities,
|
|
base_billing_config,
|
|
default_rate_limit_policy,
|
|
metadata,
|
|
catalog_type,
|
|
default_snapshot,
|
|
status
|
|
)
|
|
SELECT
|
|
(SELECT id FROM model_catalog_providers WHERE provider_key = 'volces' OR provider_code = 'volces' LIMIT 1),
|
|
'volces',
|
|
model.canonical_model_key,
|
|
model.provider_model_name,
|
|
model.model_type,
|
|
model.model_alias,
|
|
model.capabilities,
|
|
model.base_billing_config,
|
|
model.rate_limit_policy,
|
|
jsonb_set(model.metadata, '{rawModel,capabilities}', model.capabilities, true),
|
|
'system',
|
|
jsonb_build_object(
|
|
'providerKey', 'volces',
|
|
'canonicalModelKey', model.canonical_model_key,
|
|
'providerModelName', model.provider_model_name,
|
|
'modelType', model.model_type,
|
|
'modelAlias', model.model_alias,
|
|
'displayName', model.display_name,
|
|
'capabilities', model.capabilities,
|
|
'baseBillingConfig', model.base_billing_config,
|
|
'defaultRateLimitPolicy', model.rate_limit_policy,
|
|
'metadata', jsonb_set(model.metadata, '{rawModel,capabilities}', model.capabilities, true),
|
|
'status', 'active'
|
|
),
|
|
'active'
|
|
FROM seedream50_pro model
|
|
ON CONFLICT (canonical_model_key) DO UPDATE
|
|
SET provider_id = EXCLUDED.provider_id,
|
|
provider_key = EXCLUDED.provider_key,
|
|
provider_model_name = CASE WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.provider_model_name ELSE base_model_catalog.provider_model_name END,
|
|
model_type = CASE WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.model_type ELSE base_model_catalog.model_type END,
|
|
display_name = CASE WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.display_name ELSE base_model_catalog.display_name END,
|
|
capabilities = CASE WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.capabilities ELSE base_model_catalog.capabilities END,
|
|
base_billing_config = CASE WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.base_billing_config ELSE base_model_catalog.base_billing_config END,
|
|
default_rate_limit_policy = CASE WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.default_rate_limit_policy ELSE base_model_catalog.default_rate_limit_policy END,
|
|
metadata = CASE WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.metadata ELSE base_model_catalog.metadata END,
|
|
catalog_type = CASE WHEN base_model_catalog.customized_at IS NULL THEN 'system' ELSE base_model_catalog.catalog_type END,
|
|
default_snapshot = CASE WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.default_snapshot ELSE base_model_catalog.default_snapshot END,
|
|
status = CASE WHEN base_model_catalog.customized_at IS NULL THEN 'active' ELSE base_model_catalog.status END,
|
|
updated_at = now();
|
|
|
|
WITH seedream50_pro AS (
|
|
SELECT
|
|
base_model.id AS base_model_id,
|
|
base_model.provider_model_name,
|
|
'Seedream-5.0-Pro' AS model_alias,
|
|
'Seedream 5.0 Pro' AS display_name,
|
|
base_model.model_type,
|
|
base_model.capabilities,
|
|
base_model.base_billing_config,
|
|
base_model.default_rate_limit_policy
|
|
FROM base_model_catalog base_model
|
|
WHERE base_model.canonical_model_key = 'volces:doubao-seedream-5-0-pro-260628'
|
|
)
|
|
UPDATE platform_models model
|
|
SET base_model_id = seedream.base_model_id,
|
|
model_name = CASE
|
|
WHEN model.model_name = seedream.model_alias THEN seedream.model_alias
|
|
WHEN NOT EXISTS (
|
|
SELECT 1
|
|
FROM platform_models peer
|
|
WHERE peer.platform_id = model.platform_id
|
|
AND peer.id <> model.id
|
|
AND peer.model_name = seedream.model_alias
|
|
) THEN seedream.model_alias
|
|
ELSE model.model_name
|
|
END,
|
|
provider_model_name = seedream.provider_model_name,
|
|
model_alias = seedream.model_alias,
|
|
model_type = seedream.model_type,
|
|
display_name = seedream.display_name,
|
|
capabilities = seedream.capabilities,
|
|
pricing_mode = 'inherit_discount',
|
|
billing_config = seedream.base_billing_config,
|
|
retry_policy = '{"enabled":true,"maxAttempts":1}'::jsonb,
|
|
rate_limit_policy = seedream.default_rate_limit_policy,
|
|
enabled = NOT EXISTS (
|
|
SELECT 1
|
|
FROM platform_models peer
|
|
WHERE peer.platform_id = model.platform_id
|
|
AND peer.id <> model.id
|
|
AND peer.model_name = seedream.model_alias
|
|
),
|
|
updated_at = now()
|
|
FROM integration_platforms platform
|
|
JOIN seedream50_pro seedream ON TRUE
|
|
WHERE model.platform_id = platform.id
|
|
AND platform.provider = 'volces'
|
|
AND platform.deleted_at IS NULL
|
|
AND (
|
|
model.model_name IN ('Seedream-5.0-Pro', 'doubao-seedream-5-0-pro-260628')
|
|
OR model.provider_model_name = 'doubao-seedream-5-0-pro-260628'
|
|
OR model.model_alias = 'Seedream-5.0-Pro'
|
|
);
|
|
|
|
INSERT INTO platform_models (
|
|
platform_id,
|
|
base_model_id,
|
|
model_name,
|
|
provider_model_name,
|
|
model_alias,
|
|
model_type,
|
|
display_name,
|
|
capabilities,
|
|
pricing_mode,
|
|
billing_config,
|
|
retry_policy,
|
|
rate_limit_policy,
|
|
enabled
|
|
)
|
|
SELECT
|
|
platform.id,
|
|
base_model.id,
|
|
'Seedream-5.0-Pro',
|
|
base_model.provider_model_name,
|
|
'Seedream-5.0-Pro',
|
|
base_model.model_type,
|
|
'Seedream 5.0 Pro',
|
|
base_model.capabilities,
|
|
'inherit_discount',
|
|
base_model.base_billing_config,
|
|
'{"enabled":true,"maxAttempts":1}'::jsonb,
|
|
base_model.default_rate_limit_policy,
|
|
true
|
|
FROM integration_platforms platform
|
|
JOIN base_model_catalog base_model ON base_model.canonical_model_key = 'volces:doubao-seedream-5-0-pro-260628'
|
|
WHERE platform.provider = 'volces'
|
|
AND platform.deleted_at IS NULL
|
|
AND NOT EXISTS (
|
|
SELECT 1
|
|
FROM platform_models existing
|
|
WHERE existing.platform_id = platform.id
|
|
AND (
|
|
existing.model_name IN ('Seedream-5.0-Pro', 'doubao-seedream-5-0-pro-260628')
|
|
OR existing.provider_model_name = 'doubao-seedream-5-0-pro-260628'
|
|
OR existing.model_alias = 'Seedream-5.0-Pro'
|
|
)
|
|
)
|
|
ON CONFLICT (platform_id, model_name) DO UPDATE
|
|
SET base_model_id = EXCLUDED.base_model_id,
|
|
provider_model_name = EXCLUDED.provider_model_name,
|
|
model_alias = EXCLUDED.model_alias,
|
|
display_name = EXCLUDED.display_name,
|
|
model_type = EXCLUDED.model_type,
|
|
capabilities = EXCLUDED.capabilities,
|
|
pricing_mode = EXCLUDED.pricing_mode,
|
|
billing_config = EXCLUDED.billing_config,
|
|
retry_policy = EXCLUDED.retry_policy,
|
|
rate_limit_policy = EXCLUDED.rate_limit_policy,
|
|
enabled = EXCLUDED.enabled,
|
|
updated_at = now();
|