smai.aismai.ai
SDK 示例

JavaScript SDK

JavaScript/Node.js SDK 使用示例

安装

npm install openai

基础配置

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'sk-your-api-key',
  baseURL: 'https://api.smai.ai/v1',
});

或使用环境变量:

export OPENAI_API_KEY="sk-your-api-key"
export OPENAI_BASE_URL="https://api.smai.ai/v1"
import OpenAI from 'openai';

const client = new OpenAI(); // 自动读取环境变量

对话补全

基础用法

const response = await client.chat.completions.create({
  model: 'gpt-4.1',
  messages: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: '什么是人工智能?' },
  ],
});

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

带参数

const response = await client.chat.completions.create({
  model: 'gpt-4.1',
  messages: [{ role: 'user', content: '写一首关于春天的诗' }],
  temperature: 0.8, // 创造性程度 0-2
  max_tokens: 500, // 最大输出长度
  top_p: 0.9, // 核采样参数
});

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

流式输出

const stream = await client.chat.completions.create({
  model: 'gpt-4.1',
  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);
  }
}

多轮对话

const messages = [{ role: 'system', content: 'You are a helpful assistant.' }];

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

  const response = await client.chat.completions.create({
    model: 'gpt-4.1',
    messages: messages,
  });

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

  return assistantMessage;
}

// 使用
console.log(await chat('你好!'));
console.log(await chat('你能做什么?'));
console.log(await chat('帮我写一段代码'));

图像输入

const response = await client.chat.completions.create({
  model: 'gpt-4o',
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: '描述这张图片' },
        {
          type: 'image_url',
          image_url: {
            url: 'https://example.com/image.jpg',
          },
        },
      ],
    },
  ],
});

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

错误处理

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'sk-your-api-key',
  baseURL: 'https://api.smai.ai/v1',
});

try {
  const response = await client.chat.completions.create({
    model: 'gpt-4.1',
    messages: [{ role: 'user', content: 'Hello' }],
  });
  console.log(response.choices[0].message.content);
} catch (error) {
  if (error.status === 401) {
    console.error('API Key 无效');
  } else if (error.status === 429) {
    console.error('请求频率超限,请稍后重试');
  } else {
    console.error('API 错误:', error.message);
  }
}

TypeScript 支持

OpenAI SDK 完全支持 TypeScript:

import OpenAI from 'openai';
import type { ChatCompletionMessageParam } from 'openai/resources/chat';

const client = new OpenAI({
  apiKey: 'sk-your-api-key',
  baseURL: 'https://api.smai.ai/v1',
});

const messages: ChatCompletionMessageParam[] = [
  { role: 'system', content: 'You are a helpful assistant.' },
  { role: 'user', content: 'Hello!' },
];

const response = await client.chat.completions.create({
  model: 'gpt-4.1',
  messages,
});

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

相关链接

目录