52 lines
2.6 KiB
SQL
52 lines
2.6 KiB
SQL
CREATE TABLE IF NOT EXISTS model_runtime_policy_sets (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
policy_key text NOT NULL UNIQUE,
|
|
name text NOT NULL,
|
|
description text,
|
|
rate_limit_policy jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
retry_policy jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
auto_disable_policy jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
degrade_policy jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
metadata jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
status text NOT NULL DEFAULT 'active',
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
updated_at timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
|
|
INSERT INTO model_runtime_policy_sets (
|
|
policy_key, name, description, rate_limit_policy, retry_policy, auto_disable_policy, degrade_policy, metadata, status
|
|
)
|
|
VALUES (
|
|
'default-runtime-v1',
|
|
'默认运行策略',
|
|
'默认包含 TPM/RPM/并发、失败重试、自动禁用和优先级降级关键词。',
|
|
'{"rules":[{"metric":"rpm","limit":120,"windowSeconds":60},{"metric":"tpm_total","limit":240000,"windowSeconds":60},{"metric":"concurrent","limit":6,"leaseTtlSeconds":120}]}'::jsonb,
|
|
'{"enabled":true,"maxAttempts":2,"allowKeywords":["rate_limit","timeout","server_error","network","429","5xx"],"denyKeywords":["invalid_api_key","insufficient_quota","billing_not_active","permission_denied"]}'::jsonb,
|
|
'{"enabled":false,"threshold":3,"windowSeconds":300,"keywords":["invalid_api_key","account_deactivated","permission_denied","billing_not_active"]}'::jsonb,
|
|
'{"enabled":true,"cooldownSeconds":300,"keywords":["rate_limit","quota","timeout","temporarily_unavailable","overloaded"]}'::jsonb,
|
|
'{"seed":"0012_runtime_policy_sets"}'::jsonb,
|
|
'active'
|
|
)
|
|
ON CONFLICT (policy_key) DO NOTHING;
|
|
|
|
ALTER TABLE IF EXISTS base_model_catalog
|
|
ADD COLUMN IF NOT EXISTS runtime_policy_set_id uuid REFERENCES model_runtime_policy_sets(id) ON DELETE SET NULL,
|
|
ADD COLUMN IF NOT EXISTS runtime_policy_override jsonb NOT NULL DEFAULT '{}'::jsonb;
|
|
|
|
ALTER TABLE IF EXISTS platform_models
|
|
ADD COLUMN IF NOT EXISTS runtime_policy_set_id uuid REFERENCES model_runtime_policy_sets(id) ON DELETE SET NULL,
|
|
ADD COLUMN IF NOT EXISTS runtime_policy_override jsonb NOT NULL DEFAULT '{}'::jsonb;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_base_model_catalog_runtime_policy
|
|
ON base_model_catalog(runtime_policy_set_id);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_platform_models_runtime_policy
|
|
ON platform_models(runtime_policy_set_id);
|
|
|
|
UPDATE base_model_catalog
|
|
SET runtime_policy_set_id = (
|
|
SELECT id FROM model_runtime_policy_sets WHERE policy_key = 'default-runtime-v1' LIMIT 1
|
|
)
|
|
WHERE runtime_policy_set_id IS NULL
|
|
AND EXISTS (SELECT 1 FROM model_runtime_policy_sets WHERE policy_key = 'default-runtime-v1');
|