安裝
npm install @openmodex/sdk
快速開始
import OpenModex from '@openmodex/sdk';
const client = new OpenModex({
apiKey: process.env.OPENMODEX_API_KEY,
});
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(response.choices[0].message.content);
設定
const client = new OpenModex({
apiKey: 'omx_sk_...',
baseURL: 'https://api.openmodex.com/v1', // default
timeout: 60_000, // default: 30000
maxRetries: 3, // default: 2
defaultModel: 'gpt-4o',
fallbackModels: ['claude-3.5-sonnet'],
});
| 選項 | 類型 | 預設值 | 說明 |
|---|---|---|---|
apiKey | string | OPENMODEX_API_KEY 環境變數 | API 金鑰 |
baseURL | string | https://api.openmodex.com/v1 | API 基底 URL |
timeout | number | 30000 | 請求逾時(毫秒) |
maxRetries | number | 2 | 自動重試次數 |
defaultModel | string | — | 預設模型 |
fallbackModels | string[] | [] | 備援模型鏈 |
defaultHeaders | object | {} | 自訂標頭 |
fetch | typeof fetch | globalThis.fetch | 自訂 fetch |
聊天補全
const response = await client.chat.completions.create({
model: 'gpt-4o',
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'What is TypeScript?' },
],
temperature: 0.7,
max_tokens: 500,
});
串流
const stream = await client.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Write a poem.' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
}
// Abort a stream
stream.abort();
嵌入
const result = await client.embeddings.create({
model: 'text-embedding-3-small',
input: 'Hello world',
});
模型
// List all models
const models = await client.models.list();
// Get model details
const model = await client.models.retrieve('openai/gpt-4o');
// Compare models
const comparison = await client.models.compare(['openai/gpt-4o', 'anthropic/claude-3.5-sonnet']);
錯誤處理
import { APIError } from '@openmodex/sdk';
try {
await client.chat.completions.create({...});
} catch (err) {
if (err instanceof APIError) {
console.log(err.statusCode, err.message);
console.log(err.isRateLimited); // true if 429
console.log(err.isAuthError); // true if 401
console.log(err.isServerError); // true if 5xx
}
}