UNPKG

aisapi

Version:

A JavaScript/TypeScript API library for multiple AI providers

388 lines 16.1 kB
"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