SDK 示例
JavaScript SDK
JavaScript/Node.js SDK usage examples
Installation
npm install openaiBasic 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 variablesChat 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);