mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-12-16 00:28:15 +00:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { NextResponse } from 'next/server';
|
|
import ModelRegistry from '@/lib/models/registry';
|
|
import UploadManager from '@/lib/uploads/manager';
|
|
|
|
export async function POST(req: Request) {
|
|
try {
|
|
const formData = await req.formData();
|
|
|
|
const files = formData.getAll('files') as File[];
|
|
const embeddingModel = formData.get('embedding_model_key') as string;
|
|
const embeddingModelProvider = formData.get('embedding_model_provider_id') as string;
|
|
|
|
if (!embeddingModel || !embeddingModelProvider) {
|
|
return NextResponse.json(
|
|
{ message: 'Missing embedding model or provider' },
|
|
{ status: 400 },
|
|
);
|
|
}
|
|
|
|
const registry = new ModelRegistry();
|
|
|
|
const model = await registry.loadEmbeddingModel(embeddingModelProvider, embeddingModel);
|
|
|
|
const uploadManager = new UploadManager({
|
|
embeddingModel: model,
|
|
})
|
|
|
|
const processedFiles = await uploadManager.processFiles(files);
|
|
|
|
return NextResponse.json({
|
|
files: processedFiles,
|
|
});
|
|
} catch (error) {
|
|
console.error('Error uploading file:', error);
|
|
return NextResponse.json(
|
|
{ message: 'An error has occurred.' },
|
|
{ status: 500 },
|
|
);
|
|
}
|
|
}
|