This commit is contained in:
ai
2026-05-18 21:50:41 +08:00
commit 19347e0d80
8 changed files with 610 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
import { generateImage } from "ai";
import index from "./index.html";
const server = Bun.serve({
hostname: "0.0.0.0",
routes: {
"/": index,
"/api/generate": {
POST: async (req) => {
try {
const { baseURL, apiKey, model, prompt, size } = (await req.json()) as {
baseURL?: string;
apiKey?: string;
model?: string;
prompt?: string;
size?: `${number}x${number}`;
};
if (!baseURL || !apiKey || !model || !prompt) {
return Response.json(
{ error: "baseURL, apiKey, model, prompt are required" },
{ status: 400 },
);
}
const provider = createOpenAICompatible({
name: "custom",
apiKey,
baseURL,
});
const { images } = await generateImage({
model: provider.imageModel(model),
prompt,
size: size || "1024x1024",
});
const out = images.map((img) => {
const mediaType = (img as { mediaType?: string }).mediaType ?? "image/png";
const base64 = (img as { base64?: string }).base64;
return base64 ? `data:${mediaType};base64,${base64}` : null;
}).filter(Boolean);
return Response.json({ images: out });
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
console.error("[generate] error:", err);
return Response.json({ error: message }, { status: 500 });
}
},
},
},
development: {
hmr: true,
console: true,
},
});
console.log(`Listening on ${server.url}`);