Spaces:
Sleeping
Sleeping
File size: 2,078 Bytes
4c2a557 a572854 4c2a557 a572854 4c2a557 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | 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",
});
}
}
|