luowuyin's picture
25:05:05 10:41:39 v0.3.7
a572854
import { NextResponse } from "next/server";
import { verifyApiToken } from "@/lib/auth";
export async function POST(req: Request) {
const authError = verifyApiToken(req);
if (authError) {
return authError;
}
try {
const { modelId } = await req.json();
if (!modelId) {
return NextResponse.json({
success: false,
message: "Model ID cannot be empty",
});
}
const domain = process.env.OPENWEBUI_DOMAIN;
const apiKey = process.env.OPENWEBUI_API_KEY;
if (!domain || !apiKey) {
return NextResponse.json({
success: false,
message: "Environment variables not configured correctly",
});
}
const apiUrl = domain.replace(/\/+$/, "") + "/api/chat/completions";
const response = await fetch(apiUrl, {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: modelId,
messages: [
{
role: "user",
content: "test, just say hi",
},
],
}),
});
const responseText = await response.text();
let data;
try {
data = JSON.parse(responseText);
} catch (e) {
return NextResponse.json({
success: false,
message: `Fail to resolve response: ${responseText}`,
});
}
if (!response.ok) {
return NextResponse.json({
success: false,
message:
data.error ||
`API request failed: ${response.status} ${response.statusText}`,
});
}
if (!data.choices?.[0]?.message?.content) {
return NextResponse.json({
success: false,
message: "Invalid response format",
});
}
return NextResponse.json({
success: true,
message: "Test successful",
response: data.choices[0].message.content,
});
} catch (error) {
return NextResponse.json({
success: false,
message: error instanceof Error ? error.message : "Unknown error",
});
}
}