Skip to content

Commit 36b06f5

Browse files
authored
Update worker.mjs
简单来说用过url中的模型名来替换 请求体的模型,好处可以强制模型名 你的代码片段意图是: 用正则 /^\/([\w.-]+)\/v1\/(chat\/completions|embeddings)$/ 匹配 /模型名/v1/chat/completions 或 /模型名/v1/embeddings 这样的路径, 并从中提取模型名(如 gemini-1.5-pro), 如果不匹配则抛出 404。 这段代码的作用和你刚才的需求完全一致,并且更通用(支持 chat/completions 和 embeddings 两种 endpoint)。
1 parent e667fe9 commit 36b06f5

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

src/worker.mjs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,27 @@ export default {
1818
}
1919
};
2020
const { pathname } = new URL(request.url);
21-
switch (true) {
22-
case pathname.endsWith("/chat/completions"):
23-
assert(request.method === "POST");
24-
return handleCompletions(await request.json(), apiKey)
25-
.catch(errHandler);
26-
case pathname.endsWith("/embeddings"):
27-
assert(request.method === "POST");
28-
return handleEmbeddings(await request.json(), apiKey)
29-
.catch(errHandler);
30-
case pathname.endsWith("/models"):
31-
assert(request.method === "GET");
32-
return handleModels(apiKey)
33-
.catch(errHandler);
34-
default:
35-
throw new HttpError("404 Not Found", 404);
21+
const routeRegex = /^\/([\w.-]+)\/v1\/(chat\/completions|embeddings)$/;
22+
const match = pathname.match(routeRegex);
23+
24+
if (!match) {
25+
throw new HttpError("404 Not Found. Use format: /<model-name>/v1/chat/completions", 404);
26+
}
27+
28+
const modelFromUrl = match[1];
29+
const endpoint = match[2];
30+
let body;
31+
try {
32+
body = await request.json();
33+
} catch (e) {
34+
body = {};
35+
}
36+
body.model = modelFromUrl;
37+
38+
if (endpoint === "chat/completions") {
39+
return handleCompletions(body, apiKey).catch(errHandler);
40+
} else if (endpoint === "embeddings") {
41+
return handleEmbeddings(body, apiKey).catch(errHandler);
3642
}
3743
} catch (err) {
3844
return errHandler(err);

0 commit comments

Comments
 (0)