smai.aismai.ai
SDK 示例

JavaScript SDK

JavaScript/Node.js SDK usage examples

Installation

npm install openai

Basic Configuration

import OpenAI from 'openai';

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

Or use environment variables:

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();  // Automatically reads environment variables

Chat Completion

Basic Usage

const response = await client.chat.completions.create({
    model: 'gpt-4.1',
    messages: [
        { role: 'system', content: 'You are a helpful assistant.' },
        { role: 'user', content: 'What is artificial intelligence?' }
    ]
});

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

With Parameters

const response = await client.chat.completions.create({
    model: 'gpt-4.1',
    messages: [
        { role: 'user', content: 'Write a poem about spring' }
    ],
    temperature: 0.8,      // Creativity level 0-2
    max_tokens: 500,       // Maximum output length
    top_p: 0.9            // Nucleus sampling parameter
});

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

Streaming Output

const stream = await client.chat.completions.create({
    model: 'gpt-4.1',
    messages: [{ role: 'user', content: 'Tell a story' }],
    stream: true
});

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

Multi-turn Conversation

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;
}

// Usage
console.log(await chat('Hello!'));
console.log(await chat('What can you do?'));
console.log(await chat('Help me write some code'));

Image Input

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

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

Error Handling

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('Invalid API Key');
    } else if (error.status === 429) {
        console.error('Request rate limit exceeded, please try again later');
    } else {
        console.error('API error:', error.message);
    }
}

TypeScript Support

OpenAI SDK fully supports 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);

On this page