254 lines
8.6 KiB
SQL
254 lines
8.6 KiB
SQL
WITH aliyun_model_defs AS (
|
||
SELECT
|
||
'aliyun-bailian-openai' AS provider_key,
|
||
'aliyun-bailian-openai:text-embedding-v4' AS canonical_model_key,
|
||
'text-embedding-v4' AS provider_model_name,
|
||
'Qwen3-Embedding-v4' AS display_name,
|
||
'Qwen3-Embedding-v4' AS model_alias,
|
||
'Qwen3-Embedding 系列,默认维度 1024,最长输入 8192 tokens;支持 100+ 语种与多种编程语言。' AS description,
|
||
'https://static.51easyai.com/qwen-color.webp' AS icon_path,
|
||
jsonb_build_array('text_embedding') AS model_type,
|
||
jsonb_build_object(
|
||
'text_embedding', jsonb_build_object(
|
||
'dimensions', jsonb_build_array(2048, 1536, 1024, 768, 512, 256, 128, 64),
|
||
'defaultDimension', 1024,
|
||
'maxRows', 10,
|
||
'maxTokensPerRow', 8192
|
||
),
|
||
'originalTypes', jsonb_build_array('text_embedding')
|
||
) AS capabilities
|
||
UNION ALL
|
||
SELECT
|
||
'aliyun-bailian-openai',
|
||
'aliyun-bailian-openai:text-embedding-v3',
|
||
'text-embedding-v3',
|
||
'Qwen3-Embedding-v3',
|
||
'Qwen3-Embedding-v3',
|
||
'Qwen3-Embedding 系列,默认维度 1024;支持中文、英文及 50+ 主流语种。',
|
||
'https://static.51easyai.com/qwen-color.webp',
|
||
jsonb_build_array('text_embedding'),
|
||
jsonb_build_object(
|
||
'text_embedding', jsonb_build_object(
|
||
'dimensions', jsonb_build_array(1024, 768, 512, 256, 128, 64),
|
||
'defaultDimension', 1024
|
||
),
|
||
'originalTypes', jsonb_build_array('text_embedding')
|
||
)
|
||
UNION ALL
|
||
SELECT
|
||
'aliyun-bailian-openai',
|
||
'aliyun-bailian-openai:text-embedding-v2',
|
||
'text-embedding-v2',
|
||
'Text-Embedding-v2',
|
||
'Text-Embedding-v2',
|
||
'固定维度 1536,最长输入 2048 tokens;支持中英西法葡印尼日韩德俄等语种。',
|
||
'https://static.51easyai.com/qwen-color.webp',
|
||
jsonb_build_array('text_embedding'),
|
||
jsonb_build_object(
|
||
'text_embedding', jsonb_build_object(
|
||
'dimensions', jsonb_build_array(1536),
|
||
'defaultDimension', 1536,
|
||
'maxRows', 25,
|
||
'maxTokensPerRow', 2048
|
||
),
|
||
'originalTypes', jsonb_build_array('text_embedding')
|
||
)
|
||
UNION ALL
|
||
SELECT
|
||
'aliyun-bailian-openai',
|
||
'aliyun-bailian-openai:text-embedding-v1',
|
||
'text-embedding-v1',
|
||
'Text-Embedding-v1',
|
||
'Text-Embedding-v1',
|
||
'百炼 OpenAI 兼容渠道 embedding 基础模型。',
|
||
'https://static.51easyai.com/qwen-color.webp',
|
||
jsonb_build_array('text_embedding'),
|
||
jsonb_build_object('originalTypes', jsonb_build_array('text_embedding'))
|
||
UNION ALL
|
||
SELECT
|
||
'aliyun-bailian-openai',
|
||
'aliyun-bailian-openai:qwen3-rerank',
|
||
'qwen3-rerank',
|
||
'Qwen3-Rerank',
|
||
'Qwen3-Rerank',
|
||
'阿里云百炼 OpenAI 兼容重排序模型,支持 100+ 语种,适用于语义文本搜索和 RAG。',
|
||
'https://static.51easyai.com/qwen-color.webp',
|
||
jsonb_build_array('text_rerank'),
|
||
jsonb_build_object(
|
||
'text_rerank', jsonb_build_object(
|
||
'maxDocuments', 500,
|
||
'maxTokensPerDocument', 4000,
|
||
'maxRequestTokens', 120000,
|
||
'supportTopN', true,
|
||
'supportInstruct', true
|
||
),
|
||
'originalTypes', jsonb_build_array('text_rerank')
|
||
)
|
||
),
|
||
source_rows AS (
|
||
SELECT
|
||
providers.id AS provider_id,
|
||
defs.provider_key,
|
||
defs.canonical_model_key,
|
||
defs.provider_model_name,
|
||
defs.model_type,
|
||
defs.display_name,
|
||
defs.model_alias,
|
||
defs.description,
|
||
defs.icon_path,
|
||
defs.capabilities,
|
||
COALESCE(template.base_billing_config, '{"text":{"basePrice":0.01,"baseWeight":1}}'::jsonb) AS base_billing_config,
|
||
COALESCE(template.default_rate_limit_policy, '{}'::jsonb) AS default_rate_limit_policy,
|
||
COALESCE(
|
||
template.pricing_rule_set_id,
|
||
(SELECT id FROM model_pricing_rule_sets WHERE rule_set_key = 'default-multimodal-v1' LIMIT 1)
|
||
) AS pricing_rule_set_id,
|
||
COALESCE(
|
||
template.runtime_policy_set_id,
|
||
(SELECT id FROM model_runtime_policy_sets WHERE policy_key = 'default-runtime-v1' LIMIT 1)
|
||
) AS runtime_policy_set_id,
|
||
COALESCE(template.runtime_policy_override, '{}'::jsonb) AS runtime_policy_override,
|
||
COALESCE(template.pricing_version, 1) AS pricing_version
|
||
FROM aliyun_model_defs defs
|
||
LEFT JOIN model_catalog_providers providers
|
||
ON providers.provider_key = defs.provider_key
|
||
OR providers.provider_code = defs.provider_key
|
||
LEFT JOIN base_model_catalog template
|
||
ON template.canonical_model_key = 'aliyun-bailian-openai:text-embedding-v4'
|
||
),
|
||
payload AS (
|
||
SELECT
|
||
source_rows.*,
|
||
jsonb_build_object(
|
||
'source', 'aliyun.model-studio.docs',
|
||
'sourceProviderCode', provider_key,
|
||
'sourceProviderName', '阿里云百炼(OpenAI兼容)',
|
||
'sourceSpecType', 'openai',
|
||
'originalTypes', model_type,
|
||
'alias', model_alias,
|
||
'description', description,
|
||
'iconPath', icon_path,
|
||
'billingType', 'external-api',
|
||
'billingMode', '',
|
||
'referenceModel', '',
|
||
'modelWeight', NULL,
|
||
'selectable', true,
|
||
'rawModel', jsonb_build_object(
|
||
'name', provider_model_name,
|
||
'types', model_type,
|
||
'icon_path', icon_path,
|
||
'alias', model_alias,
|
||
'description', description,
|
||
'capabilities', capabilities - 'originalTypes'
|
||
)
|
||
) AS metadata
|
||
FROM source_rows
|
||
),
|
||
snapshot AS (
|
||
SELECT
|
||
payload.*,
|
||
jsonb_build_object(
|
||
'providerKey', provider_key,
|
||
'canonicalModelKey', canonical_model_key,
|
||
'providerModelName', provider_model_name,
|
||
'modelType', model_type,
|
||
'modelAlias', model_alias,
|
||
'capabilities', capabilities,
|
||
'baseBillingConfig', base_billing_config,
|
||
'defaultRateLimitPolicy', default_rate_limit_policy,
|
||
'pricingRuleSetId', COALESCE(pricing_rule_set_id::text, ''),
|
||
'runtimePolicySetId', COALESCE(runtime_policy_set_id::text, ''),
|
||
'runtimePolicyOverride', runtime_policy_override,
|
||
'metadata', metadata,
|
||
'pricingVersion', pricing_version,
|
||
'status', 'active'
|
||
) AS default_snapshot
|
||
FROM payload
|
||
)
|
||
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,
|
||
pricing_rule_set_id,
|
||
runtime_policy_set_id,
|
||
runtime_policy_override,
|
||
metadata,
|
||
catalog_type,
|
||
default_snapshot,
|
||
pricing_version,
|
||
status
|
||
)
|
||
SELECT
|
||
provider_id,
|
||
provider_key,
|
||
canonical_model_key,
|
||
provider_model_name,
|
||
model_type,
|
||
display_name,
|
||
capabilities,
|
||
base_billing_config,
|
||
default_rate_limit_policy,
|
||
pricing_rule_set_id,
|
||
runtime_policy_set_id,
|
||
runtime_policy_override,
|
||
metadata,
|
||
'system',
|
||
default_snapshot,
|
||
pricing_version,
|
||
'active'
|
||
FROM snapshot
|
||
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,
|
||
pricing_rule_set_id = COALESCE(base_model_catalog.pricing_rule_set_id, EXCLUDED.pricing_rule_set_id),
|
||
runtime_policy_set_id = COALESCE(base_model_catalog.runtime_policy_set_id, EXCLUDED.runtime_policy_set_id),
|
||
runtime_policy_override = CASE
|
||
WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.runtime_policy_override
|
||
ELSE base_model_catalog.runtime_policy_override
|
||
END,
|
||
metadata = CASE
|
||
WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.metadata
|
||
ELSE base_model_catalog.metadata
|
||
END,
|
||
catalog_type = 'system',
|
||
default_snapshot = EXCLUDED.default_snapshot,
|
||
pricing_version = CASE
|
||
WHEN base_model_catalog.customized_at IS NULL THEN EXCLUDED.pricing_version
|
||
ELSE base_model_catalog.pricing_version
|
||
END,
|
||
status = CASE
|
||
WHEN base_model_catalog.customized_at IS NULL THEN 'active'
|
||
ELSE base_model_catalog.status
|
||
END,
|
||
updated_at = now();
|