修改全能创作发现问题

This commit is contained in:
Azmat@qq.com
2026-09-03 19:00:59 +08:00
parent e7122b78fb
commit 3e904479d9
23 changed files with 1325 additions and 433 deletions
+50
View File
@@ -54,11 +54,61 @@ logger = logging.getLogger(__name__)
OFFICIAL_DIRECT_PROVIDERS = {"volcengine", "volcano", "ark", "volcano_ark", "doubao"}
SEED_21_PRO_NAME = "doubao-seed-2-1-pro-260628"
def is_retired_text_model(model) -> bool:
"""DeepSeek / DP V4 Pro 已停用,解析层一律跳过。"""
blob = f"{getattr(model, 'name', '')} {getattr(model, 'display_name', '')}".lower()
return "deepseek" in blob or "dp v4" in blob or "dp-v4" in blob
def get_seed_text_model() -> ModelConfig | None:
qs = (
ModelConfig.objects.select_related("provider")
.filter(
capability=ModelConfig.Capability.TEXT,
status=ModelConfig.Status.ACTIVE,
provider__status="active",
)
)
return (
qs.filter(name=SEED_21_PRO_NAME).first()
or qs.filter(name__startswith="doubao-seed-2-1-pro").first()
or qs.filter(name__startswith="doubao-seed-2-0-pro").first()
)
def resolve_text_model(requested: ModelConfig | None = None, requested_id=None) -> ModelConfig | None:
"""文本模型入口:用户选了 DeepSeek 也改走 Seed 2.1 Pro。"""
model = requested
if model is None and requested_id:
model = (
ModelConfig.objects.select_related("provider")
.filter(id=requested_id, capability=ModelConfig.Capability.TEXT, status=ModelConfig.Status.ACTIVE)
.first()
)
if model is not None and not is_retired_text_model(model):
return model
return get_default_model(ModelConfig.Capability.TEXT)
def get_default_model(capability: str) -> ModelConfig:
qs = (
ModelConfig.objects.select_related("provider")
.filter(capability=capability, status=ModelConfig.Status.ACTIVE, provider__status="active")
)
if capability == ModelConfig.Capability.TEXT:
for model in qs.filter(is_default=True).order_by("created_at"):
if not is_retired_text_model(model):
return model
seed = get_seed_text_model()
if seed is not None:
return seed
for model in qs.order_by("created_at"):
if not is_retired_text_model(model):
return model
return None
# 优先平台超管钦定的默认模型;未钦定则回落「最早创建的 active」(原行为,零回归)
return qs.filter(is_default=True).order_by("created_at").first() or qs.order_by("created_at").first()