Node.js SDK
使用 OpenAI 官方 Node.js SDK 接入 WLON API,只需修改 baseURL 即可。
前提条件:Node.js 18+,已在 控制台 创建 API Key。
安装
npm install openai
或使用其他包管理器:
# yarn
yarn add openai
# pnpm
pnpm add openai
配置客户端
创建 OpenAI 实例时指定 baseURL 和 apiKey:
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api2everything.xyz/v1',
});
提示:推荐通过环境变量传入 API Key,避免硬编码。详见下方「环境变量」章节。
基本用法
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api2everything.xyz/v1',
});
async function main() {
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [
{ role: 'system', content: '你是一个有帮助的助手。' },
{ role: 'user', content: '用 JavaScript 写一个快速排序' },
],
temperature: 0.7,
max_tokens: 2048,
});
console.log(response.choices[0].message.content);
}
main();
流式输出
设置 stream: true 逐 token 获取响应:
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api2everything.xyz/v1',
});
async function main() {
const stream = await client.chat.completions.create({
model: 'gpt-4o',
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();
TypeScript
SDK 原生支持 TypeScript,提供完整的类型定义:
import OpenAI from 'openai';
import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions';
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: 'https://api2everything.xyz/v1',
});
async function chat(messages: ChatCompletionMessageParam[]): Promise<string> {
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages,
});
return response.choices[0].message.content ?? '';
}
// 使用
const reply = await chat([
{ role: 'system', content: '你是一个翻译助手。' },
{ role: 'user', content: '翻译:Hello World' },
]);
console.log(reply);
错误处理
SDK 抛出类型化的错误对象,建议使用 try/catch 处理:
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api2everything.xyz/v1',
});
async function main() {
try {
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: '你好' }],
});
console.log(response.choices[0].message.content);
} catch (error) {
if (error instanceof OpenAI.APIError) {
switch (error.status) {
case 401:
console.error('API Key 无效,请检查密钥是否正确。');
break;
case 429:
console.error('请求过于频繁,请稍后重试。');
break;
case 500:
console.error('服务器内部错误,请稍后重试。');
break;
default:
console.error(`API 错误:${error.status} — ${error.message}`);
}
} else {
console.error('网络或未知错误:', error);
}
}
}
main();
环境变量
推荐使用环境变量配置,避免硬编码敏感信息:
# .env
OPENAI_API_KEY=sk-your-api-key
OPENAI_BASE_URL=https://api2everything.xyz/v1
设置后无需在代码中传参,SDK 会自动读取:
import OpenAI from 'openai';
// 自动读取 OPENAI_API_KEY 和 OPENAI_BASE_URL
const client = new OpenAI();
async function main() {
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: '你好!' }],
});
console.log(response.choices[0].message.content);
}
main();
安全提醒:永远不要将 API Key 提交到 Git 仓库。将
.env 加入 .gitignore。