Skip to content

Node.js SDK 接入指南

本指南介绍如何使用 Node.js 的 OpenAI SDK 接入 Star API。

安装

bash
npm install openai

或使用 yarn:

bash
yarn add openai

或使用 pnpm:

bash
pnpm add openai

提示

推荐使用 openai>=4.0.0 版本。确保您的 Node.js 版本 >= 18。

基本配置

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://star.zhxyclaw.cn/v1",
});

使用环境变量管理 API Key:

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.STAR_API_KEY,
  baseURL: "https://star.zhxyclaw.cn/v1",
});

聊天补全

基本调用

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://star.zhxyclaw.cn/v1",
});

async function main() {
  const response = await client.chat.completions.create({
    model: "gpt-5.4",
    messages: [
      { role: "system", content: "你是一个有帮助的AI助手。" },
      { role: "user", content: "请用一句话解释什么是量子计算。" },
    ],
    temperature: 0.7,
    max_tokens: 200,
  });

  console.log(response.choices[0].message.content);
}

main();

流式输出

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://star.zhxyclaw.cn/v1",
});

async function main() {
  const stream = await client.chat.completions.create({
    model: "gpt-5.4",
    messages: [
      { role: "user", content: "写一首关于月亮的七言绝句。" },
    ],
    stream: true,
  });

  for await (const chunk of stream) {
    const content = chunk.choices[0]?.delta?.content;
    if (content) {
      process.stdout.write(content);
    }
  }
  console.log();
}

main();

多轮对话

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://star.zhxyclaw.cn/v1",
});

const messages = [
  { role: "system", content: "你是一个友好的AI助手,用中文回答问题。" },
];

async function chat(userMessage) {
  messages.push({ role: "user", content: userMessage });

  const response = await client.chat.completions.create({
    model: "gpt-5.4",
    messages,
    temperature: 0.7,
  });

  const assistantMessage = response.choices[0].message.content;
  messages.push({ role: "assistant", content: assistantMessage });

  return assistantMessage;
}

// 使用
async function main() {
  console.log(await chat("你好,我叫小明。"));
  console.log(await chat("你还记得我的名字吗?"));
}

main();

使用不同模型

javascript
// 使用 Claude
const claudeResponse = await client.chat.completions.create({
  model: "claude-sonnet-5",
  messages: [{ role: "user", content: "你好!" }],
});

// 使用 DeepSeek
const deepseekResponse = await client.chat.completions.create({
  model: "deepseek-v4-pro",
  messages: [{ role: "user", content: "你好!" }],
});

// 使用 Gemini
const geminiResponse = await client.chat.completions.create({
  model: "gemini-3.1-pro-preview",
  messages: [{ role: "user", content: "你好!" }],
});

图像生成

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://star.zhxyclaw.cn/v1",
});

const response = await client.images.generate({
  model: "dall-e-3",
  prompt: "一只可爱的橘猫在阳光下打盹",
  n: 1,
  size: "1024x1024",
  quality: "standard",
});

console.log("图片 URL:", response.data[0].url);

文本嵌入

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://star.zhxyclaw.cn/v1",
});

const response = await client.embeddings.create({
  model: "text-embedding-3-small",
  input: "Star API 是一个统一的大模型接口网关",
});

const embedding = response.data[0].embedding;
console.log(`向量维度:${embedding.length}`);

语音转文字

javascript
import OpenAI from "openai";
import fs from "fs";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://star.zhxyclaw.cn/v1",
});

const transcription = await client.audio.transcriptions.create({
  model: "whisper-1",
  file: fs.createReadStream("audio.mp3"),
  language: "zh",
});

console.log(transcription.text);

文字转语音

javascript
import OpenAI from "openai";
import fs from "fs";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://star.zhxyclaw.cn/v1",
});

const response = await client.audio.speech.create({
  model: "tts-1",
  input: "你好,欢迎使用 Star API!",
  voice: "alloy",
  response_format: "mp3",
});

const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync("output.mp3", buffer);
console.log("音频已保存为 output.mp3");

错误处理

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://star.zhxyclaw.cn/v1",
});

async function main() {
  try {
    const response = await client.chat.completions.create({
      model: "gpt-5.4",
      messages: [{ role: "user", content: "你好!" }],
    });
    console.log(response.choices[0].message.content);
  } catch (error) {
    if (error instanceof OpenAI.AuthenticationError) {
      console.error("API Key 无效,请检查您的密钥。");
    } else if (error instanceof OpenAI.RateLimitError) {
      console.error("请求频率过高,请稍后重试。");
    } else if (error instanceof OpenAI.APIError) {
      console.error(`API 错误:${error.message}`);
    } else {
      console.error(`未知错误:${error.message}`);
    }
  }
}

main();

下一步

Star API - 统一的大模型接口网关