aisapi
Version:
A JavaScript/TypeScript API library for multiple AI providers
388 lines • 16.1 kB
JavaScript
"use strict";
/**
* AisAPI - 多AI服务统一接口
*
* 整合了多家AI大模型,让你能用同样的方式调用不同的服务。
* 支持OpenAI、Claude、Gemini、文心一言等国内外主流大模型。
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AisAPI = exports.Qwen = exports.Ernie = exports.GLM = exports.Spark = exports.Kimi = exports.Doubao = exports.Grok = exports.DeepSeek = exports.Gemini = exports.Claude = exports.GPT = void 0;
exports.default = createAisAPI;
// 导出所有类型定义
__exportStar(require("./types"), exports);
// 导出所有AI服务提供商
__exportStar(require("./providers"), exports);
// 为方便使用,下面是常用服务的简写别名
const openai_1 = require("./providers/openai");
const anthropic_1 = require("./providers/anthropic");
const gemini_1 = require("./providers/gemini");
const deepseek_1 = require("./providers/deepseek");
const grok_1 = require("./providers/grok");
const doubao_1 = require("./providers/doubao");
const moonshot_1 = require("./providers/moonshot");
const spark_1 = require("./providers/spark");
const zhipu_1 = require("./providers/zhipu");
const ernie_1 = require("./providers/ernie");
const qwen_1 = require("./providers/qwen");
// 简化的别名导出,让代码写起来更简洁
exports.GPT = openai_1.OpenAIProvider;
exports.Claude = anthropic_1.AnthropicProvider;
exports.Gemini = gemini_1.GeminiProvider;
exports.DeepSeek = deepseek_1.DeepSeekProvider;
exports.Grok = grok_1.GrokProvider;
exports.Doubao = doubao_1.DoubaoProvider;
exports.Kimi = moonshot_1.MoonshotProvider;
exports.Spark = spark_1.SparkProvider;
exports.GLM = zhipu_1.ZhipuProvider;
exports.Ernie = ernie_1.ErnieProvider;
exports.Qwen = qwen_1.QwenProvider;
/**
* AisAPI 主类 - 让你能用统一方式调用各种AI服务
*/
class AisAPI {
/**
* 创建新的AisAPI实例
* @param options 各AI服务的配置
*/
constructor(options = {}) {
this.providers = new Map();
// 初始化各服务提供商
if (options.openai) {
this.providers.set('openai', new openai_1.OpenAIProvider(options.openai));
}
if (options.anthropic) {
this.providers.set('anthropic', new anthropic_1.AnthropicProvider(options.anthropic));
}
if (options.gemini) {
this.providers.set('gemini', new gemini_1.GeminiProvider(options.gemini));
}
if (options.deepseek) {
this.providers.set('deepseek', new deepseek_1.DeepSeekProvider(options.deepseek));
}
if (options.grok) {
this.providers.set('grok', new grok_1.GrokProvider(options.grok));
}
if (options.doubao) {
this.providers.set('doubao', new doubao_1.DoubaoProvider(options.doubao));
}
// 国内AI服务
if (options.moonshot) {
this.providers.set('moonshot', new moonshot_1.MoonshotProvider(options.moonshot));
}
if (options.spark) {
this.providers.set('spark', new spark_1.SparkProvider(options.spark));
}
if (options.zhipu) {
this.providers.set('zhipu', new zhipu_1.ZhipuProvider(options.zhipu));
}
if (options.ernie) {
this.providers.set('ernie', new ernie_1.ErnieProvider(options.ernie));
}
if (options.qwen) {
this.providers.set('qwen', new qwen_1.QwenProvider(options.qwen));
}
// 设置默认服务,如果没有指定就按优先级自动选择
this.defaultProviderName = options.defaultProvider ||
(this.providers.has('openai') ? 'openai' :
(this.providers.has('anthropic') ? 'anthropic' :
(this.providers.has('gemini') ? 'gemini' :
(this.providers.has('deepseek') ? 'deepseek' :
(this.providers.has('grok') ? 'grok' :
(this.providers.has('doubao') ? 'doubao' :
(this.providers.has('moonshot') ? 'moonshot' :
(this.providers.has('spark') ? 'spark' :
(this.providers.has('zhipu') ? 'zhipu' :
(this.providers.has('ernie') ? 'ernie' :
(this.providers.has('qwen') ? 'qwen' : '')))))))))));
if (this.providers.size === 0) {
console.warn('提示: 你没有配置任何AI服务,请至少配置一个才能使用');
}
if (!this.defaultProviderName && this.providers.size > 0) {
this.defaultProviderName = Array.from(this.providers.keys())[0];
}
}
/**
* 获取已配置的AI服务列表
*/
getProviders() {
return Array.from(this.providers.keys());
}
/**
* 获取指定名称的AI服务实例
*/
getProvider(name) {
return this.providers.get(name.toLowerCase());
}
/**
* 获取默认使用的AI服务
*/
getDefaultProvider() {
return this.defaultProviderName ? this.providers.get(this.defaultProviderName) : undefined;
}
/**
* 更改默认使用的AI服务
*/
setDefaultProvider(name) {
if (this.providers.has(name.toLowerCase())) {
this.defaultProviderName = name.toLowerCase();
return true;
}
return false;
}
/**
* 添加新的AI服务
*/
addProvider(name, provider) {
this.providers.set(name.toLowerCase(), provider);
// 如果还没有默认服务,就用新添加的
if (!this.defaultProviderName) {
this.defaultProviderName = name.toLowerCase();
}
}
/**
* 用指定的AI服务生成文本
*/
generateText(params, providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
return yield provider.generateText(params);
});
}
/**
* 用指定的AI服务生成图像
*/
generateImage(params, providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
if (!provider.generateImage) {
throw new Error(`${providerName || this.defaultProviderName} 不支持生成图片`);
}
return yield provider.generateImage(params);
});
}
/**
* 用指定的AI服务生成JSON格式回复
*/
generateJSON(params, providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
if (!provider.generateJSON) {
throw new Error(`${providerName || this.defaultProviderName} 不支持生成JSON`);
}
return yield provider.generateJSON(params);
});
}
/**
* 用指定的AI服务创建图片变体
*/
createImageVariation(params, providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
if (!provider.createImageVariation) {
throw new Error(`${providerName || this.defaultProviderName} 不支持图片变体功能`);
}
return yield provider.createImageVariation(params);
});
}
/**
* 用指定的AI服务编辑图片
*/
editImage(params, providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
if (!provider.editImage) {
throw new Error(`${providerName || this.defaultProviderName} 不支持图片编辑`);
}
return yield provider.editImage(params);
});
}
/**
* 用指定的AI服务将音频转成文字
*/
transcribeAudio(params, providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
if (!provider.transcribeAudio) {
throw new Error(`${providerName || this.defaultProviderName} 不支持语音转文字`);
}
return yield provider.transcribeAudio(params);
});
}
/**
* 用指定的AI服务将文字转成语音
*/
textToSpeech(params, providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
if (!provider.textToSpeech) {
throw new Error(`${providerName || this.defaultProviderName} 不支持文字转语音`);
}
return yield provider.textToSpeech(params);
});
}
/**
* 用指定的AI服务创建文本向量
*/
createEmbedding(params, providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
if (!provider.createEmbedding) {
throw new Error(`${providerName || this.defaultProviderName} 不支持向量嵌入功能`);
}
return yield provider.createEmbedding(params);
});
}
/**
* 获取指定AI服务的可用模型列表
*/
listModels(providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
if (!provider.listModels) {
throw new Error(`${providerName || this.defaultProviderName} 不支持获取模型列表`);
}
return yield provider.listModels();
});
}
/**
* 创建聊天对话(支持多轮对话的AI服务适用)
*/
chatCompletion(params_1) {
return __awaiter(this, arguments, void 0, function* (params, providerName = 'openai') {
var _a, _b;
const provider = this.providers.get(providerName.toLowerCase());
if (!provider) {
throw new Error(`找不到服务: ${providerName}`);
}
// OpenAI直接有专用接口
if (provider instanceof openai_1.OpenAIProvider) {
return yield provider.chatCompletion(params);
}
else {
// 其他服务尝试兼容处理
const systemMessage = ((_a = params.messages.find(m => m.role === 'system')) === null || _a === void 0 ? void 0 : _a.content) || '';
const userMessages = params.messages.filter(m => m.role === 'user');
const lastUserMessage = ((_b = userMessages[userMessages.length - 1]) === null || _b === void 0 ? void 0 : _b.content) || '';
return yield provider.generateText({
prompt: lastUserMessage,
systemMessage,
temperature: params.temperature,
maxTokens: params.maxTokens,
topP: params.topP,
stream: params.stream,
model: params.model
});
}
});
}
/**
* 创建流式对话(边生成边返回内容的方式)
*/
createStreamingChatCompletion(params, providerName) {
return __awaiter(this, void 0, void 0, function* () {
const provider = providerName
? this.providers.get(providerName.toLowerCase())
: this.getDefaultProvider();
if (!provider) {
throw new Error(`找不到服务: ${providerName || '默认服务'}`);
}
if (!provider.createStreamingChatCompletion) {
throw new Error(`${providerName || this.defaultProviderName} 不支持流式对话`);
}
return yield provider.createStreamingChatCompletion(params);
});
}
/**
* 使用DeepSeek的思维链功能
*/
chainOfThought(params) {
return __awaiter(this, void 0, void 0, function* () {
const provider = this.providers.get('deepseek');
if (!provider) {
throw new Error('没有配置DeepSeek服务,无法使用思维链功能');
}
if (provider instanceof deepseek_1.DeepSeekProvider) {
return yield provider.chainOfThought(params);
}
else {
throw new Error('无法访问DeepSeek的思维链功能');
}
});
}
}
exports.AisAPI = AisAPI;
/**
* 快速创建AisAPI实例的简便方法
*/
function createAisAPI(options = {}) {
return new AisAPI(options);
}
//# sourceMappingURL=index.js.map