SDK

OpenAI Node

使用官方 Node SDK 连接 UOUODUO Gateway,并处理流式输出和错误。

安装

npm install openai
export UOUODUO_API_KEY="sk-xxx..."

客户端配置

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.UOUODUO_API_KEY,
  baseURL: "https://api.example.com/v1",
});

Chat Completions

const response = await client.chat.completions.create({
  model: "gpt-4o-mini",
  messages: [
    { role: "system", content: "你是一个简洁的生产环境助手。" },
    { role: "user", content: "给客服团队写一句回复模板。" },
  ],
});

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

Streaming

const stream = await client.chat.completions.create({
  model: "gpt-4o-mini",
  stream: true,
  messages: [{ role: "user", content: "逐步解释网关路由。" }],
});

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

Embeddings

const vectors = await client.embeddings.create({
  model: "text-embedding-3-small",
  input: ["第一段", "第二段"],
});

console.log(vectors.data[0]?.embedding.length);

错误处理

try {
  await client.chat.completions.create({
    model: "gpt-4o-mini",
    messages: [{ role: "user", content: "hello" }],
  });
} catch (error) {
  if (error instanceof OpenAI.APIError) {
    console.error(error.status, error.code, error.message);
  }
  throw error;
}

生产建议

  • 服务端保存 `UOUODUO_API_KEY`,不要下发到浏览器。
  • 每个环境使用单独 key,方便在 `/app/logs` 过滤。
  • 对 streaming 请求设置超时和重试;中途断流时不要假设已经收到完整 usage。