chat bot integration

This commit is contained in:
Ashishyg
2025-11-07 23:37:42 +05:30
parent ff34ea7b28
commit 2a7dd4aaba
5 changed files with 189 additions and 638 deletions

View File

@@ -0,0 +1,38 @@
import { NextResponse } from 'next/server';
const CHAT_HOST = process.env.CHAT_API_URL || process.env.NEXT_PUBLIC_CHAT_API_URL || 'https://f52c8f4e7dfc.ngrok-free.app';
export async function POST(req: Request) {
try {
const body = await req.json().catch(() => ({}));
const prompt = typeof body?.prompt === 'string' ? body.prompt : '';
if (!prompt.trim()) {
return NextResponse.json({ detail: 'Missing prompt' }, { status: 400 });
}
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 120_000);
try {
const upstream = await fetch(`${CHAT_HOST}/chat`, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: JSON.stringify({ prompt }),
signal: controller.signal,
});
const text = await upstream.text();
let json: any;
try { json = JSON.parse(text); } catch { json = { response: text }; }
if (!upstream.ok) {
return NextResponse.json(json || { detail: 'Chat failed' }, { status: upstream.status });
}
return NextResponse.json(json);
} finally {
clearTimeout(timeout);
}
} catch (err: any) {
const msg = err?.name === 'AbortError' ? 'Request timed out model may be overloaded.' : (err?.message || 'Unexpected error');
return NextResponse.json({ detail: msg }, { status: 500 });
}
}