修改全能创作发现问题

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
@@ -0,0 +1,85 @@
"""把默认文本模型换成火山 Doubao-Seed-2.1-Pro。
全能创作 / 实体提取 / 脚本思考都走 get_default_model(TEXT)。
此前后台默认是 DeepSeek(DP V4 Pro),看不了参考图,聊天里分不出男女。
Seed 2.1 Pro 支持图文 + function calling,模型 ID: doubao-seed-2-1-pro-260628。
幂等:可重复 apply。不改其它能力(生图/视频)的 is_default。
"""
from django.db import migrations
NAME = "doubao-seed-2-1-pro-260628"
DISPLAY = "Doubao-Seed-2.1-Pro"
METADATA = {
"think": True,
"vision": True,
"source": "volcengine ark · Seed 2.1 Pro",
"routing": {"fallback_on_failure": False, "fallback_candidate": True},
"capabilities": {
"operations": ["chat"],
"features": ["streaming", "structured_output", "vision", "image_input", "multimodal"],
},
}
def seed(apps, schema_editor):
ModelProvider = apps.get_model("ai", "ModelProvider")
ModelConfig = apps.get_model("ai", "ModelConfig")
provider, _ = ModelProvider.objects.get_or_create(
name="volcengine",
defaults={
"display_name": "火山引擎(豆包)",
"status": "active",
"base_url": "https://ark.cn-beijing.volces.com/api/v3",
},
)
config, created = ModelConfig.objects.get_or_create(
provider=provider,
name=NAME,
capability="text",
defaults={
"display_name": DISPLAY,
"endpoint": "chat/completions",
"status": "active",
"is_default": True,
"metadata": METADATA,
},
)
metadata = dict(config.metadata or {})
for key, value in METADATA.items():
if key == "capabilities":
caps = dict(metadata.get("capabilities") or {})
caps.setdefault("operations", value["operations"])
features = list(caps.get("features") or [])
for feat in value["features"]:
if feat not in features:
features.append(feat)
caps["features"] = features
metadata["capabilities"] = caps
else:
metadata.setdefault(key, value)
config.metadata = metadata
config.display_name = config.display_name or DISPLAY
config.endpoint = config.endpoint or "chat/completions"
config.status = "active"
config.is_default = True
config.save()
# 同一能力只留一个默认:清掉 DeepSeek 等其它文本模型的 is_default。
ModelConfig.objects.filter(capability="text", is_default=True).exclude(pk=config.pk).update(is_default=False)
def unseed(apps, schema_editor):
ModelConfig = apps.get_model("ai", "ModelConfig")
ModelConfig.objects.filter(name=NAME, capability="text").update(is_default=False)
class Migration(migrations.Migration):
dependencies = [
("ai", "0034_creationconversation_creationmessage_and_more"),
]
operations = [
migrations.RunPython(seed, unseed),
]
@@ -0,0 +1,39 @@
"""彻底停用 DeepSeek 文本模型,默认只留 Seed 2.1 Pro。
幂等:可重复 apply。不删行,方便后台还能看见历史配置。
"""
from django.db import migrations
from django.db.models import Q
def apply(apps, schema_editor):
ModelConfig = apps.get_model("ai", "ModelConfig")
retired = ModelConfig.objects.filter(capability="text").filter(
Q(name__icontains="deepseek") | Q(display_name__icontains="deepseek") | Q(display_name__icontains="DP V4")
)
retired.update(status="disabled", is_default=False)
seed = (
ModelConfig.objects.filter(name="doubao-seed-2-1-pro-260628", capability="text")
.order_by("created_at")
.first()
)
if seed is None:
return
seed.status = "active"
seed.is_default = True
seed.save(update_fields=["status", "is_default", "updated_at"])
ModelConfig.objects.filter(capability="text", is_default=True).exclude(pk=seed.pk).update(is_default=False)
def noop(apps, schema_editor):
return
class Migration(migrations.Migration):
dependencies = [
("ai", "0035_seed_21_pro_default_text"),
]
operations = [
migrations.RunPython(apply, noop),
]