|
|
|
import { CONFIG } from "./utils.ts";
|
|
import { ChatCompletionRequest, ModelInfo } from "./types.ts";
|
|
import { errorResponse, ResponseBuilder } from "./response.ts";
|
|
import { validateAuth } from "./auth.ts";
|
|
import { DDGService } from "./ddg-service.ts";
|
|
|
|
const ddgService = new DDGService();
|
|
|
|
export async function handleModels(req: Request): Promise<Response> {
|
|
const data: ModelInfo[] = CONFIG.MODELS.map((id) => ({
|
|
id,
|
|
object: "model",
|
|
created: 0,
|
|
owned_by: "ddg",
|
|
}));
|
|
|
|
return ResponseBuilder.jsonResponse({ object: "list", data });
|
|
}
|
|
|
|
export async function handleChatCompletions(req: Request): Promise<Response> {
|
|
|
|
const authError = validateAuth(req);
|
|
if (authError) return authError;
|
|
|
|
|
|
let body: ChatCompletionRequest;
|
|
try {
|
|
const bodyText = await req.text();
|
|
body = JSON.parse(bodyText);
|
|
} catch {
|
|
return errorResponse("请求 JSON 解析失败", 400);
|
|
}
|
|
|
|
|
|
const { model, messages, stream = false } = body;
|
|
if (!CONFIG.MODELS.includes(model)) {
|
|
return errorResponse(`模型 ${model} 未找到`, 404);
|
|
}
|
|
|
|
|
|
const ddgResponse = await ddgService.sendMessageWithRetry(model, messages);
|
|
if (!ddgResponse.ok) {
|
|
return ddgResponse;
|
|
}
|
|
|
|
return ResponseBuilder.buildResponse(ddgResponse.body!,stream,model);
|
|
}
|
|
|
|
export const handleMeow = async (request: Request): Promise<Response> => {
|
|
return new Response("Meow~", {
|
|
status: 200,
|
|
headers: {
|
|
"Content-Type": "text/plain",
|
|
},
|
|
});
|
|
}; |