aisapi
Version:
A JavaScript/TypeScript API library for multiple AI providers
120 lines • 5.71 kB
JavaScript
"use strict";
/**
* 阿里巴巴千问(Qwen)API使用示例
*
* 此示例展示如何使用阿里巴巴千问API进行文本生成、聊天和JSON生成。
*
* 运行此示例前,请确保设置环境变量:
* QWEN_API_KEY=your_qwen_api_key
*/
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 qwen_1 = require("./providers/qwen");
function main() {
return __awaiter(this, void 0, void 0, function* () {
// 创建千问API提供商实例
const qwen = new qwen_1.QwenProvider({
apiKey: process.env.QWEN_API_KEY,
model: qwen_1.QwenModel.TURBO // 默认使用qwen-turbo模型
});
try {
// 示例1: 基本文本生成
console.log('=== 基本文本生成 ===');
const response1 = yield qwen.generateText({
prompt: '简要介绍一下阿里巴巴千问AI大模型的特点和应用场景',
maxTokens: 300,
temperature: 0.7
});
console.log(response1.text);
console.log('\n');
// 示例2: 使用系统消息设置角色
console.log('=== 带系统消息的文本生成 ===');
const response2 = yield qwen.generateText({
prompt: '中国传统节日有哪些?请简要介绍',
systemMessage: '你是一位中国文化专家,请用生动的语言介绍中国文化,使用简体中文回答。',
maxTokens: 300,
temperature: 0.7
});
console.log(response2.text);
console.log('\n');
// 示例3: 聊天对话
console.log('=== 聊天对话 ===');
const chatResponse = yield qwen.chatCompletion({
model: qwen_1.QwenModel.PLUS, // 使用更强大的qwen-plus模型
messages: [
{ role: 'system', content: '你是阿里巴巴千问AI助手,请提供专业、准确的信息。' },
{ role: 'user', content: '什么是向量数据库?它和传统数据库有什么区别?' },
{ role: 'assistant', content: '向量数据库是专门设计用来存储和检索向量embeddings的数据库系统。' },
{ role: 'user', content: '它们在AI应用中有什么具体用途?' }
],
temperature: 0.5
});
console.log(chatResponse.text);
console.log('\n');
// 示例4: 切换API模式
console.log('=== 切换到DashScope原生API模式 ===');
qwen.setApiMode(qwen_1.QwenApiMode.DASH_SCOPE);
const response3 = yield qwen.generateText({
prompt: '写一首关于人工智能的现代诗',
maxTokens: 200,
temperature: 0.8
});
console.log(response3.text);
console.log('\n');
// 示例5: 生成JSON格式响应
console.log('=== 生成JSON格式响应 ===');
// 切换回OpenAI兼容模式
qwen.setApiMode(qwen_1.QwenApiMode.OPENAI_COMPATIBLE);
const jsonResponse = yield qwen.generateJSON({
prompt: '列出中国五大科技公司及其主要业务领域,以JSON格式返回,格式为数组对象,每个对象包含name和business_areas字段',
temperature: 0.2,
model: qwen_1.QwenModel.MAX // 使用最强大的模型
});
console.log(JSON.stringify(jsonResponse, null, 2));
console.log('\n');
// 示例6: 使用流式输出
console.log('=== 流式输出示例 ===');
console.log('开始流式生成...\n');
const stream = yield qwen.createStreamingChatCompletion({
messages: [
{ role: 'user', content: '写一篇简短的科幻小说,主题是"AI与人类的共存"' }
],
model: qwen_1.QwenModel.TURBO,
temperature: 0.7,
maxTokens: 500
});
// 注意: 下面的代码在浏览器环境中可能需要调整
const reader = stream.getReader();
let streamOutput = '';
while (true) {
const { value, done } = yield reader.read();
if (done)
break;
try {
// 处理流式响应
const chunk = new TextDecoder().decode(value);
process.stdout.write(chunk);
streamOutput += chunk;
}
catch (e) {
console.error('解析流响应错误:', e);
}
}
console.log('\n\n流式输出完成\n');
}
catch (error) {
console.error('发生错误:', error);
}
});
}
// 执行主函数
main().catch(console.error);
//# sourceMappingURL=example-qwen.js.map