2025-12-17 20:15:18 +08:00

46 lines
1.5 KiB
TypeScript

import { auth } from "@/app/(auth)/auth";
import { getEnabledAiModelsWithProvider, getDefaultAiModel } from "@/lib/db/queries";
import { ChatSDKError } from "@/lib/errors";
// 获取前端可用的 AI 模型列表(需要登录但不需要管理员权限)
export async function GET() {
try {
const session = await auth();
if (!session?.user) {
return new ChatSDKError("unauthorized:chat").toResponse();
}
// 只获取主模型(不包括子模型),子模型由后端根据 videoParams.mode 自动选择
const modelsWithProvider = await getEnabledAiModelsWithProvider(false);
const defaultModel = await getDefaultAiModel();
// 转换为前端需要的格式
const models = modelsWithProvider.map(({ model, provider }) => ({
id: model.id,
modelId: model.modelId,
displayName: model.displayName,
description: model.description,
supportsVision: model.supportsVision,
supportsImageGen: model.supportsImageGen,
isDefault: model.isDefault,
providerName: provider.name,
providerType: provider.type,
isSubModel: model.isSubModel,
parentModelId: model.parentModelId,
capabilities: model.capabilities, // 🆕 返回子模型的能力配置
}));
return Response.json({
models,
defaultModelId: defaultModel?.id ?? models[0]?.id ?? null,
});
} catch (error) {
if (error instanceof ChatSDKError) {
return error.toResponse();
}
return new ChatSDKError("offline:chat").toResponse();
}
}