aisapi
Version:
A JavaScript/TypeScript API library for multiple AI providers
213 lines • 10 kB
JavaScript
;
/**
* AisAPI 统一接口使用示例
*
* 本示例展示如何使用AisAPI统一接口在不同提供商之间切换
* 而无需更改应用代码结构
*/
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 });
const index_1 = require("./index");
// 请将API密钥替换为实际值
// 推荐使用环境变量存储API密钥
const OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'your-openai-api-key';
const ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || 'your-anthropic-api-key';
const GEMINI_API_KEY = process.env.GEMINI_API_KEY || 'your-gemini-api-key';
const DEEPSEEK_API_KEY = process.env.DEEPSEEK_API_KEY || 'your-deepseek-api-key';
function main() {
return __awaiter(this, void 0, void 0, function* () {
var _a, _b, _c, _d;
console.log('===== AisAPI 统一接口使用示例 =====');
// 创建AisAPI实例,配置多个AI提供商
const aisapi = new index_1.AisAPI({
// 配置OpenAI (GPT)
openai: {
apiKey: OPENAI_API_KEY,
model: 'gpt-3.5-turbo'
},
// 配置Anthropic (Claude)
anthropic: {
apiKey: ANTHROPIC_API_KEY,
model: 'claude-3-haiku-20240307'
},
// 配置Google (Gemini)
gemini: {
apiKey: GEMINI_API_KEY,
model: 'gemini-pro'
},
// 配置DeepSeek
deepseek: {
apiKey: DEEPSEEK_API_KEY,
model: 'deepseek-chat',
enableCacheMonitoring: true
},
// 设置默认提供商
defaultProvider: 'openai'
});
// 获取可用的提供商列表
const providers = aisapi.getProviders();
console.log('可用的AI提供商:', providers);
console.log('默认提供商:', (_a = aisapi.getDefaultProvider()) === null || _a === void 0 ? void 0 : _a.name);
// 定义相同的提示,用于所有提供商
const prompt = '简要解释量子纠缠的概念';
const params = {
prompt,
maxTokens: 150,
temperature: 0.7,
systemMessage: '你是一个擅长解释复杂科学概念的助手。请用简洁清晰的语言回答。'
};
// 1. 使用默认提供商生成文本
console.log('\n1. 使用默认提供商 (OpenAI) 生成文本:');
try {
const defaultResult = yield aisapi.generateText(params);
console.log(`${(_b = aisapi.getDefaultProvider()) === null || _b === void 0 ? void 0 : _b.name} 回答:`, defaultResult.text);
console.log('Token使用:', defaultResult.usage);
}
catch (error) {
console.error('默认提供商错误:', error.message);
}
// 2. 在不同提供商之间切换
for (const provider of providers) {
if ((provider === 'openai' && OPENAI_API_KEY === 'your-openai-api-key') ||
(provider === 'anthropic' && ANTHROPIC_API_KEY === 'your-anthropic-api-key') ||
(provider === 'gemini' && GEMINI_API_KEY === 'your-gemini-api-key') ||
(provider === 'deepseek' && DEEPSEEK_API_KEY === 'your-deepseek-api-key')) {
console.log(`\n跳过 ${provider} (未提供API密钥)`);
continue;
}
console.log(`\n2.${providers.indexOf(provider) + 1}. 使用 ${provider} 生成文本:`);
try {
const result = yield aisapi.generateText(params, provider);
console.log(`${provider} 回答:`, result.text);
// 展示提供商特定的信息
if (provider === 'deepseek' && result.cacheInfo) {
console.log('DeepSeek缓存信息:');
console.log(`- 缓存命中率: ${(result.cacheInfo.hitRate || 0) * 100}%`);
}
}
catch (error) {
console.error(`${provider} 错误:`, error.message);
}
}
// 3. 改变默认提供商
console.log('\n3. 改变默认提供商:');
if (providers.includes('anthropic') && ANTHROPIC_API_KEY !== 'your-anthropic-api-key') {
aisapi.setDefaultProvider('anthropic');
console.log('已将默认提供商更改为:', (_c = aisapi.getDefaultProvider()) === null || _c === void 0 ? void 0 : _c.name);
try {
const claudeResult = yield aisapi.generateText(params);
console.log('Claude回答:', claudeResult.text);
}
catch (error) {
console.error('Claude错误:', error.message);
}
}
else {
console.log('未配置Anthropic或API密钥未提供,跳过此步骤');
}
// 4. 使用特定提供商的特殊功能
console.log('\n4. 使用特定提供商的特殊功能:');
// 4.1 OpenAI图像生成
if (providers.includes('openai') && OPENAI_API_KEY !== 'your-openai-api-key') {
console.log('4.1. 使用OpenAI生成图像:');
try {
const imageResult = yield aisapi.generateImage({
prompt: '一只可爱的红色机器人在花园中',
n: 1,
size: '512x512',
model: 'dall-e-2' // 使用较便宜的模型作为示例
}, 'openai');
console.log('生成的图像URL:', imageResult.urls[0]);
}
catch (error) {
console.error('图像生成错误:', error.message);
}
}
else {
console.log('未配置OpenAI或API密钥未提供,跳过图像生成示例');
}
// 4.2 DeepSeek链式推理
if (providers.includes('deepseek') && DEEPSEEK_API_KEY !== 'your-deepseek-api-key') {
console.log('\n4.2. 使用DeepSeek进行链式推理:');
try {
const cotResult = yield aisapi.chainOfThought({
prompt: '解决这个数学问题:小明今年8岁,他的姐姐比他大6岁,那么20年后,姐姐的年龄是小明年龄的多少倍?',
temperature: 0.3,
maxTokens: 300
});
console.log('链式推理结果:', cotResult.text);
}
catch (error) {
console.error('链式推理错误:', error.message);
}
}
else {
console.log('未配置DeepSeek或API密钥未提供,跳过链式推理示例');
}
// 5. 生成JSON格式数据
console.log('\n5. 生成JSON格式数据:');
if (aisapi.getDefaultProvider() && ((_d = aisapi.getDefaultProvider()) === null || _d === void 0 ? void 0 : _d.generateJSON)) {
try {
const jsonResult = yield aisapi.generateJSON({
prompt: '创建一个包含三本书的列表,每本书包含标题、作者和发布年份',
temperature: 0.7
});
console.log('JSON结果:');
console.log(JSON.stringify(jsonResult.data, null, 2));
}
catch (error) {
console.error('JSON生成错误:', error.message);
}
}
else {
console.log('当前默认提供商不支持JSON生成或未配置提供商');
}
// 6. 运行时添加新提供商
console.log('\n6. 运行时添加新提供商:');
if (DEEPSEEK_API_KEY !== 'your-deepseek-api-key' && !aisapi.getProvider('custom-deepseek')) {
// 从直接导入的DeepSeek类创建实例
const { DeepSeek } = require('./index');
const customDeepseek = new DeepSeek({
apiKey: DEEPSEEK_API_KEY,
model: 'deepseek-reasoner' // 专门用于复杂推理的模型
});
// 将新创建的提供商添加到AisAPI
aisapi.addProvider('custom-deepseek', customDeepseek);
console.log('已添加自定义DeepSeek提供商');
try {
const customResult = yield aisapi.generateText({
prompt: '解释一下爱因斯坦的相对论如何改变了物理学',
maxTokens: 200
}, 'custom-deepseek');
console.log('自定义DeepSeek回答:', customResult.text);
}
catch (error) {
console.error('自定义提供商错误:', error.message);
}
}
else {
console.log('未提供DeepSeek API密钥或已存在自定义提供商,跳过此步骤');
}
});
}
// 检查是否至少有一个API密钥
if (OPENAI_API_KEY === 'your-openai-api-key' &&
ANTHROPIC_API_KEY === 'your-anthropic-api-key' &&
GEMINI_API_KEY === 'your-gemini-api-key' &&
DEEPSEEK_API_KEY === 'your-deepseek-api-key') {
console.log('请至少设置一个AI提供商的API密钥后再运行此示例。');
console.log('可以通过环境变量设置,例如: export OPENAI_API_KEY="你的密钥"');
}
else {
// 运行示例
main().catch(console.error);
}
//# sourceMappingURL=example.js.map