You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
| import { ApiPath } from "@/app/constant";
 | |
| import { NextRequest } from "next/server";
 | |
| import { handle as openaiHandler } from "../../openai";
 | |
| import { handle as azureHandler } from "../../azure";
 | |
| import { handle as googleHandler } from "../../google";
 | |
| import { handle as anthropicHandler } from "../../anthropic";
 | |
| import { handle as baiduHandler } from "../../baidu";
 | |
| import { handle as bytedanceHandler } from "../../bytedance";
 | |
| import { handle as alibabaHandler } from "../../alibaba";
 | |
| import { handle as moonshotHandler } from "../../moonshot";
 | |
| import { handle as stabilityHandler } from "../../stability";
 | |
| import { handle as iflytekHandler } from "../../iflytek";
 | |
| import { handle as deepseekHandler } from "../../deepseek";
 | |
| import { handle as siliconflowHandler } from "../../siliconflow";
 | |
| import { handle as xaiHandler } from "../../xai";
 | |
| import { handle as chatglmHandler } from "../../glm";
 | |
| import { handle as proxyHandler } from "../../proxy";
 | |
| 
 | |
| async function handle(
 | |
|   req: NextRequest,
 | |
|   { params }: { params: { provider: string; path: string[] } },
 | |
| ) {
 | |
|   const apiPath = `/api/${params.provider}`;
 | |
|   console.log(`[${params.provider} Route] params `, params);
 | |
|   switch (apiPath) {
 | |
|     case ApiPath.Azure:
 | |
|       return azureHandler(req, { params });
 | |
|     case ApiPath.Google:
 | |
|       return googleHandler(req, { params });
 | |
|     case ApiPath.Anthropic:
 | |
|       return anthropicHandler(req, { params });
 | |
|     case ApiPath.Baidu:
 | |
|       return baiduHandler(req, { params });
 | |
|     case ApiPath.ByteDance:
 | |
|       return bytedanceHandler(req, { params });
 | |
|     case ApiPath.Alibaba:
 | |
|       return alibabaHandler(req, { params });
 | |
|     // case ApiPath.Tencent: using "/api/tencent"
 | |
|     case ApiPath.Moonshot:
 | |
|       return moonshotHandler(req, { params });
 | |
|     case ApiPath.Stability:
 | |
|       return stabilityHandler(req, { params });
 | |
|     case ApiPath.Iflytek:
 | |
|       return iflytekHandler(req, { params });
 | |
|     case ApiPath.DeepSeek:
 | |
|       return deepseekHandler(req, { params });
 | |
|     case ApiPath.XAI:
 | |
|       return xaiHandler(req, { params });
 | |
|     case ApiPath.ChatGLM:
 | |
|       return chatglmHandler(req, { params });
 | |
|     case ApiPath.SiliconFlow:
 | |
|       return siliconflowHandler(req, { params });
 | |
|     case ApiPath.OpenAI:
 | |
|       return openaiHandler(req, { params });
 | |
|     default:
 | |
|       return proxyHandler(req, { params });
 | |
|   }
 | |
| }
 | |
| 
 | |
| export const GET = handle;
 | |
| export const POST = handle;
 | |
| 
 | |
| export const runtime = "edge";
 | |
| export const preferredRegion = [
 | |
|   "arn1",
 | |
|   "bom1",
 | |
|   "cdg1",
 | |
|   "cle1",
 | |
|   "cpt1",
 | |
|   "dub1",
 | |
|   "fra1",
 | |
|   "gru1",
 | |
|   "hnd1",
 | |
|   "iad1",
 | |
|   "icn1",
 | |
|   "kix1",
 | |
|   "lhr1",
 | |
|   "pdx1",
 | |
|   "sfo1",
 | |
|   "sin1",
 | |
|   "syd1",
 | |
| ];
 |