doomiaichat
Version:
Doomisoft OpenAI
74 lines • 3.44 kB
text/typescript
//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;
}
};