설치
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 | 요청 타임아웃 (ms) |
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
}
}