import { OpenAILikeInterface } from "../interfaces/OpenAILike" import { OllamaService } from "../services/ollama" import { ErnieAPIService } from "../services/ernie" import { OpenAIService } from "../services/openai" import { HunYuanService } from "../services/hunyuan.old" import { SparkAPIService } from "../services/spark" import { ZhiPuAPIService } from "../services/zhipu" import { DashScopeAPIService } from "../services/dashScope" import { DouBaoAPIService } from "../services/doubao" import { BaiChuanAPIService } from "../services/baichuan" import { YIAPIService } from "../services/yi" import { MoonShotAPIService } from "../services/moonShot" import { AzureOpenAIService } from "../services/azure" import { SenseAPIService } from "../services/sense" import { MiniMaxAPIService } from "../services/miniMax" import { DeepSeekAPIService } from "../services/deepSeek" import { XAPIService } from "../services/x" import { GeminiAPIService } from "../services/gemini" import { HunYuanAPIService } from "../services/hunyuan" import { QianFanAPIService } from "../services/qianfan" import { QCloudAPIService } from "../services/qcloud" export const ReAIOpenAILikeAPI = (options?: { host?: string, apiKey: string }): OpenAILikeInterface => { const host = options?.host || "" const apiKey = options?.apiKey || "" if (!apiKey) { throw new Error("apiKey is required") } if (apiKey.toLowerCase() === "ollama") { return new OllamaService({ host }) } else if (apiKey.startsWith("erine:")) { const [pre, clientId, clientSecret] = apiKey.split(":") return new ErnieAPIService(clientId, clientSecret) } else if (apiKey.startsWith("qianfan:")) { const [pre, key] = apiKey.split(":") return new QianFanAPIService(key) } else if (apiKey.startsWith("spark:")) { const [pre, key, secret] = apiKey.split(":") return new SparkAPIService(key, secret || '') } else if (apiKey.startsWith("hunyuan:")) { const [pre, key] = apiKey.split(":") return new HunYuanAPIService(key) } else if (apiKey.startsWith("qcloud:")) { const [pre, key] = apiKey.split(":") return new QCloudAPIService(key) } else if (apiKey.startsWith("zhipu:")) { const [pre, key] = apiKey.split(":") return new ZhiPuAPIService(key) } else if (apiKey.startsWith("doubao:")) { const [pre, key] = apiKey.split(":") return new DouBaoAPIService(key) } else if (apiKey.startsWith("doubaoBot:")) { const [pre, key] = apiKey.split(":") return new DouBaoAPIService(key, true) } else if (apiKey.startsWith("baichuan:")) { const [pre, key] = apiKey.split(":") return new BaiChuanAPIService(key) } else if (apiKey.startsWith("dashscope:") || apiKey.startsWith('qwen:')) { const [pre, key] = apiKey.split(":") return new DashScopeAPIService(key) } else if (apiKey.startsWith("yi:")) { const [pre, key] = apiKey.split(":") return new YIAPIService(key) } else if (apiKey.startsWith("moonshot:")) { const [pre, key] = apiKey.split(":") return new MoonShotAPIService(key) } else if (apiKey.startsWith("azure:")) { const [pre, key, deployment, endpoint] = apiKey.split(":") return new AzureOpenAIService(key, deployment, endpoint) } else if (apiKey.startsWith("sense:")) { const [pre, ak, sk] = apiKey.split(":") return new SenseAPIService(ak, sk) } else if (apiKey.startsWith("minimax:")) { // 不推荐使用,不好用,乱七八糟,就不适配这个的functionCall了 const [pre, key] = apiKey.split(":") return new MiniMaxAPIService(key) } else if (apiKey.startsWith("deepseek:")) { const [pre, key] = apiKey.split(":") return new DeepSeekAPIService(key) } else if (apiKey.startsWith("xai:")) { const [pre, key] = apiKey.split(":") return new XAPIService(key) } else if (apiKey.startsWith("gemini:")) { const [pre, key] = apiKey.split(":") return new GeminiAPIService(key) } else { return new OpenAIService({ host: options?.host || "", apiKey: apiKey }) } }