安装
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 env | 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
}
}