feat: 添加智能自动模式的默认生图模型配置
This commit is contained in:
parent
51196ea0dd
commit
3855cb05cd
@ -168,6 +168,7 @@ type SiteSettings = {
|
||||
rankingEnabled: boolean;
|
||||
canvasEnabled: boolean;
|
||||
canvasDefaultModelId: string | null;
|
||||
canvasAutoModeDefaultModelId: string | null;
|
||||
};
|
||||
|
||||
type NavLink = {
|
||||
@ -382,6 +383,7 @@ export function AdminSettingsClient() {
|
||||
rankingEnabled: true,
|
||||
canvasEnabled: true,
|
||||
canvasDefaultModelId: null,
|
||||
canvasAutoModeDefaultModelId: null,
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
@ -409,6 +411,7 @@ export function AdminSettingsClient() {
|
||||
rankingEnabled: siteSettingsData.rankingEnabled ?? true,
|
||||
canvasEnabled: siteSettingsData.canvasEnabled ?? true,
|
||||
canvasDefaultModelId: siteSettingsData.canvasDefaultModelId || null,
|
||||
canvasAutoModeDefaultModelId: siteSettingsData.canvasAutoModeDefaultModelId || null,
|
||||
});
|
||||
}
|
||||
}, [siteSettingsData]);
|
||||
@ -2615,6 +2618,33 @@ export function AdminSettingsClient() {
|
||||
设置无限画布中用户的默认生图模型。"智能自动"会根据用户需求自动选择最佳模型。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 智能自动模式下的默认生图模型 */}
|
||||
<div className="space-y-2 mt-4 pt-4 border-t">
|
||||
<Label htmlFor="canvasAutoModeDefaultModelId">智能自动模式 - 默认生图模型</Label>
|
||||
<Select
|
||||
value={siteSettings.canvasAutoModeDefaultModelId || "system"}
|
||||
onValueChange={(value) => setSiteSettings({
|
||||
...siteSettings,
|
||||
canvasAutoModeDefaultModelId: value === "system" ? null : value
|
||||
})}
|
||||
>
|
||||
<SelectTrigger id="canvasAutoModeDefaultModelId">
|
||||
<SelectValue placeholder="选择默认模型" />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="system">系统智能选择(根据意图路由)</SelectItem>
|
||||
{modelsData?.models?.filter((m: any) => m.supportsImageGen).map((model: any) => (
|
||||
<SelectItem key={model.id} value={model.id}>
|
||||
{model.displayName}
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<div className="text-xs text-muted-foreground">
|
||||
当用户选择"智能自动"模式时,系统实际使用的生图模型。"系统智能选择"会根据用户意图(如抠图、换背景等)自动路由到最佳模型。
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -43,6 +43,7 @@ export async function GET() {
|
||||
rankingEnabled: true,
|
||||
canvasEnabled: true,
|
||||
canvasDefaultModelId: null,
|
||||
canvasAutoModeDefaultModelId: null,
|
||||
};
|
||||
|
||||
const response = NextResponse.json({
|
||||
@ -88,6 +89,7 @@ const updateSchema = z.object({
|
||||
rankingEnabled: z.boolean().optional(),
|
||||
canvasEnabled: z.boolean().optional(),
|
||||
canvasDefaultModelId: z.string().nullable().optional(),
|
||||
canvasAutoModeDefaultModelId: z.string().nullable().optional(),
|
||||
});
|
||||
|
||||
// PUT /api/site-settings - 更新网站设置(仅管理员)
|
||||
@ -149,6 +151,7 @@ export async function PUT(request: NextRequest) {
|
||||
rankingEnabled: data.rankingEnabled ?? true,
|
||||
canvasEnabled: data.canvasEnabled ?? true,
|
||||
canvasDefaultModelId: data.canvasDefaultModelId,
|
||||
canvasAutoModeDefaultModelId: data.canvasAutoModeDefaultModelId,
|
||||
updatedBy: session.user.id,
|
||||
})
|
||||
.returning();
|
||||
|
||||
@ -110,10 +110,36 @@ export async function routeToModel(params: {
|
||||
|
||||
// 使用动态导入避免循环依赖
|
||||
const { getEnabledAiModelsWithProvider } = await import("@/lib/db/queries");
|
||||
const { db } = await import("@/lib/db");
|
||||
const { siteSettings } = await import("@/lib/db/schema");
|
||||
|
||||
// 获取所有可用模型
|
||||
const allModels = await getEnabledAiModelsWithProvider();
|
||||
console.log("[Model Router] Available models:", allModels.length);
|
||||
|
||||
// 🆕 检查是否有配置的默认生图模型
|
||||
const [settings] = await db.select().from(siteSettings).limit(1);
|
||||
const configuredDefaultModelId = settings?.canvasAutoModeDefaultModelId;
|
||||
|
||||
if (configuredDefaultModelId) {
|
||||
// 如果配置了默认模型,直接使用该模型
|
||||
const configuredModel = allModels.find(
|
||||
(m) => m.model.id === configuredDefaultModelId && m.model.isEnabled && !m.model.isSubModel
|
||||
);
|
||||
|
||||
if (configuredModel) {
|
||||
console.log("[Model Router] ✅ Using configured default model:", configuredModel.model.displayName);
|
||||
return {
|
||||
id: configuredModel.model.id,
|
||||
displayName: configuredModel.model.displayName,
|
||||
providerType: configuredModel.provider.type,
|
||||
modelId: configuredModel.model.modelId,
|
||||
reason: `管理员配置的默认模型 → ${configuredModel.model.displayName}`,
|
||||
};
|
||||
} else {
|
||||
console.log("[Model Router] ⚠️ Configured default model not found or disabled, falling back to intent routing");
|
||||
}
|
||||
}
|
||||
|
||||
// 获取意图对应的配置
|
||||
let config = INTENT_MODEL_MAP[intent] || INTENT_MODEL_MAP["chat"];
|
||||
|
||||
@ -308,7 +308,8 @@ export const siteSettings = pgTable("SiteSettings", {
|
||||
rankingEnabled: boolean("rankingEnabled").notNull().default(true), // 是否显示精选榜按钮
|
||||
// 无限画布设置
|
||||
canvasEnabled: boolean("canvasEnabled").notNull().default(true), // 是否启用无限画布功能
|
||||
canvasDefaultModelId: varchar("canvasDefaultModelId", { length: 128 }), // 画布默认生图模型ID(null表示智能自动)
|
||||
canvasDefaultModelId: varchar("canvasDefaultModelId", { length: 128 }), // 画布默认选择的模型ID(null表示智能自动)
|
||||
canvasAutoModeDefaultModelId: varchar("canvasAutoModeDefaultModelId", { length: 128 }), // 智能自动模式下实际使用的默认生图模型ID
|
||||
updatedAt: timestamp("updatedAt").notNull().defaultNow(),
|
||||
updatedBy: uuid("updatedBy").references(() => user.id),
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user