54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { PrismaClient } from "@prisma/client";
|
||
import { generateText } from "ai";
|
||
import { z } from "zod";
|
||
import { generateStructuredObject } from "../lib/ai/generate-structured";
|
||
import { parseProviderApiKeys } from "../lib/ai/keys";
|
||
import { getModel } from "../lib/ai/provider";
|
||
|
||
async function main() {
|
||
const prisma = new PrismaClient();
|
||
const settings = await prisma.setting.findFirst();
|
||
const apiKeys = parseProviderApiKeys(settings?.providerApiKeys);
|
||
const schema = z.object({ answer: z.string(), score: z.number() });
|
||
|
||
const models = [
|
||
"deepseek-v4-flash",
|
||
"deepseek-v4-pro",
|
||
"minimax-m3",
|
||
"minimax-m2.7",
|
||
"kimi-k2.7-code",
|
||
"glm-5.1",
|
||
"qwen3.7-max",
|
||
];
|
||
|
||
for (const modelId of models) {
|
||
const model = getModel("opencode-go", modelId, apiKeys);
|
||
process.stdout.write(`\n=== ${modelId} ===\n`);
|
||
try {
|
||
const { text } = await generateText({ model, prompt: "只回覆 OK" });
|
||
console.log("generateText OK:", text.trim().slice(0, 60));
|
||
} catch (error) {
|
||
console.log("generateText FAIL:", error instanceof Error ? error.message : error);
|
||
}
|
||
|
||
try {
|
||
const object = await generateStructuredObject({
|
||
model,
|
||
provider: "opencode-go",
|
||
modelId,
|
||
schema,
|
||
prompt: "回傳 JSON:answer 一句話,score 為 0-100",
|
||
});
|
||
console.log("generateStructuredObject OK:", object);
|
||
} catch (error) {
|
||
console.log("generateStructuredObject FAIL:", error instanceof Error ? error.message : error);
|
||
}
|
||
}
|
||
|
||
await prisma.$disconnect();
|
||
}
|
||
|
||
main().catch((error) => {
|
||
console.error(error);
|
||
process.exit(1);
|
||
}); |