You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

42 lines
1.2 KiB

import { defineWrappedResponseHandler } from "#server/utils/handler";
import { R } from "#server/utils/response";
import { requireAdmin } from "#server/utils/admin-guard";
import { createSystemModel, getSystemProviderById } from "#server/service/llm";
export default defineWrappedResponseHandler(async (event) => {
await requireAdmin(event);
const body = await readBody(event);
const { providerId, name, modelId, type, maxTokens, enabled } = body as {
providerId: number;
name: string;
modelId: string;
type?: string;
maxTokens?: number;
enabled?: number;
};
if (!providerId || !name || !modelId) {
return R.error("参数无效:providerId、name、modelId 必填", null);
}
const provider = await getSystemProviderById(providerId);
if (!provider) {
return R.error("系统级供应商不存在", null);
}
if (type && !["chat", "embedding", "image", "audio"].includes(type)) {
return R.error("type 仅支持 chat、embedding、image、audio", null);
}
const result = await createSystemModel({
providerId,
name,
modelId,
type: type as "chat" | "embedding" | "image" | "audio" | undefined,
maxTokens,
enabled,
});
return R.success({ id: result.id });
});