修改全能创作发现问题
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user