aisapi
Version:
A JavaScript/TypeScript API library for multiple AI providers
192 lines • 8.7 kB
JavaScript
"use strict";
/**
* OpenAI API使用示例
* 展示如何使用GPT和相关功能
*/
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 src_1 = require("../src");
function main() {
return __awaiter(this, void 0, void 0, function* () {
console.log('===== OpenAI API使用示例 =====');
// 创建GPT实例
const gpt = new src_1.GPT({
apiKey: process.env.OPENAI_API_KEY || 'your-openai-api-key',
model: 'gpt-4o' // 默认使用最新的GPT-4o
});
// 1. 基本文本生成 (传统completions API)
console.log('\n1. 基本文本生成 (传统completions API)');
try {
const result = yield gpt.generateText({
prompt: '请用简短的语言解释什么是量子计算',
maxTokens: 150,
temperature: 0.7,
model: 'gpt-3.5-turbo-instruct' // 使用传统completions需要指定兼容模型
});
console.log('回答:', result.text);
console.log('Token使用:', result.usage);
}
catch (error) {
console.error('文本生成错误:', error.message);
}
// 2. 聊天完成 API (推荐方式)
console.log('\n2. 聊天完成 API (ChatGPT)');
try {
const messages = [
{ role: 'system', content: '你是一个专业的科学顾问,擅长简洁易懂地解释复杂概念。' },
{ role: 'user', content: '请简单解释一下黑洞是什么,以及它们如何形成?' }
];
const chatResult = yield gpt.chatCompletion({
model: 'gpt-4',
messages,
temperature: 0.5,
maxTokens: 300
});
console.log('ChatGPT回答:', chatResult.text);
console.log('Token使用:', chatResult.usage);
}
catch (error) {
console.error('聊天API错误:', error.message);
}
// 3. 多轮对话
console.log('\n3. 多轮对话示例');
try {
// 初始化对话历史
const conversation = [
{ role: 'system', content: '你是一名友好的人工智能助手。' }
];
// 第一轮问答
conversation.push({ role: 'user', content: '你好!请问你叫什么名字?' });
let response = yield gpt.chatCompletion({
model: 'gpt-3.5-turbo',
messages: [...conversation],
temperature: 0.7
});
console.log('用户: 你好!请问你叫什么名字?');
console.log('AI:', response.text);
// 添加AI回复到对话历史
conversation.push({ role: 'assistant', content: response.text });
// 第二轮问答
conversation.push({ role: 'user', content: '你能帮我写一首简短的诗吗?主题是春天。' });
response = yield gpt.chatCompletion({
model: 'gpt-3.5-turbo',
messages: [...conversation],
temperature: 0.7
});
console.log('用户: 你能帮我写一首简短的诗吗?主题是春天。');
console.log('AI:', response.text);
// 添加AI回复到对话历史
conversation.push({ role: 'assistant', content: response.text });
// 第三轮问答
conversation.push({ role: 'user', content: '这首诗用英语怎么说?' });
response = yield gpt.chatCompletion({
model: 'gpt-3.5-turbo',
messages: [...conversation],
temperature: 0.7
});
console.log('用户: 这首诗用英语怎么说?');
console.log('AI:', response.text);
}
catch (error) {
console.error('多轮对话错误:', error.message);
}
// 4. 图像生成 (DALL-E)
console.log('\n4. 图像生成 (DALL-E)');
try {
const imageResult = yield gpt.generateImage({
prompt: '一只戴着宇航员头盔的可爱猫咪,在太空中漂浮,有星星和行星在背景中',
n: 1,
size: '1024x1024',
model: 'dall-e-3'
});
console.log('生成的图像URL:');
imageResult.urls.forEach(url => console.log(url));
}
catch (error) {
console.error('图像生成错误:', error.message);
}
// 5. 向量嵌入 (Embeddings)
console.log('\n5. 向量嵌入 (Embeddings)');
try {
const texts = [
'人工智能是计算机科学的一个分支',
'机器学习是人工智能的一个子领域',
'深度学习是机器学习的一种技术'
];
const embeddingResult = yield gpt.createEmbedding({
model: 'text-embedding-3-small',
input: texts
});
console.log(`生成了 ${embeddingResult.data.length} 个嵌入向量`);
console.log(`每个向量维度: ${embeddingResult.data[0].embedding.length}`);
console.log('Token使用:', embeddingResult.usage);
// 演示向量相似度计算
console.log('\n向量相似度示例:');
const vector1 = embeddingResult.data[0].embedding;
const vector2 = embeddingResult.data[1].embedding;
// 计算余弦相似度
function cosineSimilarity(a, b) {
const dotProduct = a.reduce((sum, ai, i) => sum + ai * b[i], 0);
const magnitudeA = Math.sqrt(a.reduce((sum, ai) => sum + ai * ai, 0));
const magnitudeB = Math.sqrt(b.reduce((sum, bi) => sum + bi * bi, 0));
return dotProduct / (magnitudeA * magnitudeB);
}
const similarity = cosineSimilarity(vector1, vector2);
console.log(`"${texts[0]}" 和 "${texts[1]}" 的相似度: ${similarity.toFixed(4)}`);
}
catch (error) {
console.error('向量嵌入错误:', error.message);
}
// 6. 生成 JSON 格式内容
console.log('\n6. 生成 JSON 格式内容');
try {
const jsonResponse = yield gpt.chatCompletion({
model: 'gpt-4',
messages: [
{ role: 'system', content: '你是一个生成结构化数据的助手。' },
{ role: 'user', content: '生成一个包含3名虚构科学家的JSON数组,每人包含姓名、专业领域、主要成就和出生年份字段。' }
],
responseFormat: { type: 'json_object' }
});
console.log('JSON响应:');
console.log(jsonResponse.text);
// 解析JSON
try {
const parsedData = JSON.parse(jsonResponse.text);
console.log('成功解析JSON数据:', !!parsedData);
}
catch (e) {
console.error('JSON解析失败');
}
}
catch (error) {
console.error('JSON生成错误:', error.message);
}
// 7. 模型列表
console.log('\n7. 获取可用模型列表');
try {
const models = yield gpt.listModels();
console.log(`发现 ${models.data.length} 个可用模型`);
// 只显示前5个
const modelNames = models.data.slice(0, 5).map((model) => model.id);
console.log('部分模型:', modelNames);
}
catch (error) {
console.error('获取模型列表错误:', error.message);
}
});
}
// 注: 如果要测试语音相关功能,需要实现文件上传机制
// 运行示例
main().catch(error => {
console.error('程序执行出错:', error);
});
//# sourceMappingURL=example-openai.js.map