mirror of
https://github.com/vercel-labs/json-render.git
synced 2026-10-22 06:39:46 +08:00
* image * fixes * fixes * fix ci * fix ci * disable @next/next/no-img-element rule in ESLint configuration * update route.ts to use path.join for font resolution and adjust next-env.d.ts import path
35 lines
862 B
TypeScript
35 lines
862 B
TypeScript
import { streamText } from "ai";
|
|
import { buildUserPrompt, type Spec } from "@json-render/core";
|
|
import { imageCatalog } from "@/lib/catalog";
|
|
|
|
export const maxDuration = 60;
|
|
|
|
const SYSTEM_PROMPT = imageCatalog.prompt();
|
|
|
|
const DEFAULT_MODEL = "anthropic/claude-haiku-4.5";
|
|
|
|
export async function POST(req: Request) {
|
|
const { prompt, startingSpec } = (await req.json()) as {
|
|
prompt: string;
|
|
startingSpec?: Spec | null;
|
|
};
|
|
|
|
if (!prompt || typeof prompt !== "string") {
|
|
return Response.json({ error: "prompt is required" }, { status: 400 });
|
|
}
|
|
|
|
const userPrompt = buildUserPrompt({
|
|
prompt,
|
|
currentSpec: startingSpec,
|
|
});
|
|
|
|
const result = streamText({
|
|
model: process.env.AI_GATEWAY_MODEL ?? DEFAULT_MODEL,
|
|
system: SYSTEM_PROMPT,
|
|
prompt: userPrompt,
|
|
temperature: 0.7,
|
|
});
|
|
|
|
return result.toTextStreamResponse();
|
|
}
|