快速入门 Nodejs 注意 测试用的node版本>v17.9.1,npm版本>8.11.0; 运行前需执行一下命令: npm init y npm install openai在生成的package.json文件中添加"type":"module"; 替换baseUrl,appkey,modelId,prompt等字段的值。 文本生成 java import OpenAI from 'openai'; const baseUrl" //api前缀地址 //从环境变量获取API密钥,如果没有设置,也可以直接终端执行export XIRANGappkey"xxx" const appkey "yourappkey" const modelId"xirangmodelid" //模型id const prompt"你好啊,给一篇100字左右的作文" //对话问题 const client new OpenAI({ apiKey: appkey, baseURL:baseUrl }); async function chatCompletion() { const completion await client.chat.completions.create({ model: modelId, messages: [{ role: 'user', content: prompt }], }); console.log(completion.choices[0]?.message?.content); } chatCompletion(); 图像理解 java import https from 'https'; import axios from 'axios'; const url ' const apiKey 'yourappkey'; // 创建不验证证书的 HTTPS Agent const agent new https.Agent({ rejectUnauthorized: false }); // 请求负载 const payload { model: 'xirangmodelid', messages: [ { role: 'user', content: [ { type: 'text', text: '描述下这张图' }, { type: 'imageurl', imageurl: { url: ' } } ] } ], streamoptions: { includeusage: true }, paralleltoolcalls: true, stream: false }; // 配置请求 const config { method: 'post', url: url, headers: { 'Authorization': Bearer ${apiKey}, 'ContentType': 'application/json' }, data: payload, httpsAgent: agent // 使用自定义的 HTTPS Agent }; // 发送请求 axios(config) .then(response > { console.log('请求成功!'); console.log('响应JSON内容:'); console.log(JSON.stringify(response.data, null, 2)); }) .catch(error > { console.error('请求失败:', error.message); if (error.response) { console.error(错误状态码: ${error.response.status}); console.error('错误响应内容:', error.response.data); } }); Image文本生图 java import https from 'https'; import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; // 获取当前文件的目录路径(替代 dirname) const filename fileURLToPath(import.meta.url); const dirname path.dirname(filename); async function generateImage(prompt, apiKey, outputDir 'images', size '1024x1024') { // 创建输出目录 const fullOutputDir path.resolve(dirname, outputDir); if (!fs.existsSync(fullOutputDir)) { fs.mkdirSync(fullOutputDir, { recursive: true }); } // API配置 const url ' // 构建请求体 const postData JSON.stringify({ model: 'xirangmodelid', // 替换为实际的model Id prompt: prompt, n: 1, size: size }); // 请求选项 const options { method: 'POST', headers: { 'Authorization': Bearer ${apiKey}, 'ContentType': 'application/json', 'ContentLength': Buffer.byteLength(postData) } }; // 发送请求 const response await new Promise((resolve, reject) > { const req https.request(url, options, (res) > { let data ''; res.on('data', (chunk) > { data + chunk; }); res.on('end', () > { if (res.statusCode > 400) { reject(API错误: ${res.statusCode} ${data}); return; } try { resolve(JSON.parse(data)); } catch (e) { reject(JSON解析失败: ${e.message} 响应数据: ${data}); } }); }); req.on('error', (error) > { reject(请求失败: ${error.message}); }); req.write(postData); req.end(); }); // 检查响应 if (!response.data !response.data[0] !response.data[0].b64json) { throw new Error('未找到图像数据'); } // 解码Base64图像 const imageData Buffer.from(response.data[0].b64json, 'base64'); // 创建安全文件名 const safePrompt prompt.substring(0, 50).replace(/[^azAZ09]/g, ''); const filename ${safePrompt}${Date.now()}.png; const filepath path.join(fullOutputDir, filename); // 保存图像 fs.writeFileSync(filepath, imageData); return filepath; } // 使用示例 (async () > { try { const apiKey 'yourappkey'; // 替换为实际的model Id const imagePath await generateImage('一只戴帽子的可爱小海獭', apiKey); console.log(✅ 图像已保存至: ${imagePath}); } catch (error) { console.error(❌ 错误: ${error.message}); process.exit(1); } })(); embedding文本向量化 java import OpenAI from 'openai'; const baseUrl " // API前缀地址 const appkey "yourapptoken"; // 替换为你的实际API密钥 const modelId "xirangmodelid"; // 替换为支持Embedding的模型ID const text "这是一段测试文本"; // 需要生成嵌入向量的文本 const client new OpenAI({ apiKey: appkey, baseURL: baseUrl }); async function createEmbedding() { try { // 调用Embedding API const embedding await client.embeddings.create({ model: modelId, input: text, // 支持字符串或字符串数组 }); // 处理结果 const vector embedding.data[0].embedding; // 获取嵌入向量 const tokenUsage embedding.usage.totaltokens; // 获取令牌使用量 // 打印结果 console.log(嵌入向量维度: ${vector.length}); console.log(前5个向量值: [${vector.slice(0, 5).join(', ')}]); console.log(使用令牌数: ${tokenUsage}); // 完整向量可这样访问(注意向量可能很长): // console.log("完整嵌入向量:", vector); } catch (error) { console.error("API调用失败:", error); } } createEmbedding(); rerank文本向量化 java import https from 'https'; import axios from 'axios'; const apiUrl " const apiKey "yourappkey"; const modelId "xirangmodelid"; // 请求数据 const requestData { query: "Python教程", documents: ["Python基础语法", "Python高级特性", "Java编程入门"], model: modelId, topn: 2 }; // 发送请求 axios.post(apiUrl, requestData, { headers: { 'Authorization': Bearer ${apiKey}, 'ContentType': 'application/json' }, timeout: 10000 // 10秒超时 }) .then(response > { // 处理结果 const results response.data.results; console.log(查询: '${requestData.query}'); console.log("返回结果:"); results.forEach((item, i) > { const docIndex item.index; const docText requestData.documents[docIndex]; console.log(${i+1}. [得分: ${item.relevancescore.toFixed(4)}] ${docText}); }); }) .catch(error > { if (error.response) { console.error(请求失败: ${error.response.status}, error.response.data); } else { console.error("请求失败:", error.message); } });