UNPKG

doomiaichat

Version:

Doomisoft OpenAI

74 lines 3.44 kB
//ts check /** * 语音转文字服务商工厂 */ import OpenAIGpt from './openai'; import DeepSeek from './deepseek'; import CorzBot from './corzbot' import OpenAIProxt from './openaiproxy'; import AzureAI from './azureai' import StabilityAI from './stabilityai' import StabilityPlusAI from './stabilityplusai' import BaiduWenXinAI, { ApiCredential } from './baiduai' import AIMiddlePlatform from './aimp'; import DouBaoAI from './doubaoai' import GptBase from './gptbase'; import { CorzAuthorization } from './corzauthorization' // 扣子的身份认证应用 const corzAuth: Map<string, CorzAuthorization> = new Map(); /** * OpenAI/NLP 的服务提供商 OpenAI,微软,百度文心(待接入),google(待接入) */ export const GptProviderEnum = { OPENAI: 'openai', OPENAIPROXY:'openaiproxy', MICROSOFT: 'microsoft', AIMP: 'aimp', ///AI 中台业务 COZE:'coze', BAIDU: 'baidu', DOUBAO:'doubao', DEEPSEEK:'deepseek', GOOGLE:'google', STABILITY:'stability', STABILITY2: 'stability2', } as const; export type GptProviderEnum = typeof GptProviderEnum[keyof typeof GptProviderEnum]; /** * 根据类型创建不同的TTS引擎对象 * @param {*} provider * @param {*} apikey * @param {*} setting * @returns */ export function createGpt(provider: GptProviderEnum, apikey: string|ApiCredential, setting: any): GptBase | null { let { model,agentid, maxtoken, temperature, serviceurl,endpoint, engine, version, embedding, top_p, presence_penalty, frequency_penalty } = setting || {}; switch (provider) { case GptProviderEnum.OPENAI: return new OpenAIGpt(apikey + '', { model, maxtoken, temperature, embedding, top_p, presence_penalty, frequency_penalty }); case GptProviderEnum.DEEPSEEK: return new DeepSeek(apikey + '', { model, maxtoken, temperature, embedding, top_p, presence_penalty, frequency_penalty }); case GptProviderEnum.OPENAIPROXY: return new OpenAIProxt(apikey + '', { serviceurl}, { model, maxtoken, temperature, embedding, top_p, presence_penalty, frequency_penalty }); case GptProviderEnum.MICROSOFT: return new AzureAI(apikey + '', { endpoint, engine, version }, { model, maxtoken, temperature, embedding, top_p, presence_penalty, frequency_penalty }, ); case GptProviderEnum.BAIDU: let cred: ApiCredential = typeof (apikey) === 'string' ? { apikey, securitykey: apikey } : apikey; return new BaiduWenXinAI(cred); case GptProviderEnum.AIMP: return new AIMiddlePlatform(apikey+'',{ endpoint,agentid }); case GptProviderEnum.COZE: let authorizationProvider = corzAuth.get(apikey + ''); if (!authorizationProvider) { authorizationProvider = new CorzAuthorization(apikey + '',setting); corzAuth.set(apikey + '', authorizationProvider); } return new CorzBot(authorizationProvider!, setting); case GptProviderEnum.DOUBAO: return new DouBaoAI(apikey + '', { model, maxtoken, temperature, top_p, presence_penalty, frequency_penalty }) case GptProviderEnum.STABILITY: return new StabilityAI(apikey + '', { endpoint, engine }, setting); case GptProviderEnum.STABILITY2: return new StabilityPlusAI(apikey + '', { endpoint, engine }, setting); default: return null; } };