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