haixunMaster/scripts/test-opencode-go.ts

54 lines
1.6 KiB
TypeScript
Raw Normal View History

2026-06-21 12:50:31 +00:00
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: "回傳 JSONanswer 一句話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);
});