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
import Pipeline from "https://esm.town/v/iamseeley/pipeline";
const defaultModels = {
"feature-extraction": "sentence-transformers/all-MiniLM-L6-v2",
"text-classification": "distilbert-base-uncased-finetuned-sst-2-english",
"token-classification": "dbmdz/bert-large-cased-finetuned-conll03-english",
"question-answering": "deepset/roberta-base-squad2",
"summarization": "sshleifer/distilbart-cnn-12-6",
"translation": "google-t5/t5-small",
"text-generation": "gpt2",
"sentence-similarity": "sentence-transformers/all-MiniLM-L6-v2"
};
export async function handler(req) {
const url = new URL(req.url);
const task = url.searchParams.get("task") || "feature-extraction";
const model = url.searchParams.get("model") || defaultModels[task];
let requestBody;
try {
requestBody = await req.json();
} catch (error) {
return new Response(JSON.stringify({ error: "Invalid JSON payload" }), { status: 400 });
}
let input;
if (task === "sentence-similarity" || task === "feature-extraction") {
input = requestBody.inputs || {
source_sentence: requestBody.source_sentence || "This is a test",
sentences: requestBody.sentences || ["This is a test", "Each sentence is converted"]
};
} else {
input = requestBody.inputs || "This is a test";
}
console.log(`Task: ${task}, Model: ${model}, Input: ${JSON.stringify(input)}`);
const pipeline = new Pipeline(task, model);
let result;
try {
result = await pipeline.run(input);
} catch (error) {
result = { error: error.message };
}
return new Response(JSON.stringify(result), { status: 200 });
}