Spaces:
Sleeping
Sleeping
| import { NextResponse } from 'next/server' | |
| import { runInference } from '@/lib/huggingface' | |
| import { createServerSupabaseClient } from '@/lib/supabase-server' | |
| import type { InferenceRequest } from '@/types' | |
| export async function POST(request: Request) { | |
| try { | |
| const body: InferenceRequest = await request.json() | |
| const { model, inputs, parameters } = body | |
| if (!model || !inputs) { | |
| return NextResponse.json( | |
| { error: 'Model and inputs are required' }, | |
| { status: 400 } | |
| ) | |
| } | |
| // Run inference | |
| const result = await runInference(model, inputs, parameters) | |
| // Store in Supabase | |
| const supabase = await createServerSupabaseClient() | |
| const { data, error } = await supabase | |
| .from('model_interactions') | |
| .insert({ | |
| user_input: typeof inputs === 'string' ? inputs : JSON.stringify(inputs), | |
| model_output: JSON.stringify(result), | |
| model_name: model, | |
| }) | |
| .select() | |
| .single() | |
| if (error) { | |
| console.error('Supabase error:', error) | |
| // Still return result even if DB insert fails | |
| return NextResponse.json({ result }, { status: 200 }) | |
| } | |
| return NextResponse.json({ result, data }, { status: 200 }) | |
| } catch (error: any) { | |
| console.error('API Error:', error) | |
| return NextResponse.json( | |
| { error: error.message || 'Internal server error' }, | |
| { status: 500 } | |
| ) | |
| } | |
| } | |