llm-compat
v0.1.0
Published
SDK-agnostic model compatibility, routing, and request normalization helpers for LLM applications.
Maintainers
Readme
llm-compat
SDK-agnostic model compatibility, routing, and request normalization helpers for LLM applications.
This package is intentionally not a full LLM SDK. It helps applications keep using OpenAI SDK, Vercel AI SDK, fetch, or custom clients while sharing model compatibility behavior.
Scope
llm-compat handles:
- model pattern matching and capability lookup
- provider/base URL detection
- route-table model resolution
- usage/env config resolution
max_tokens/max_completion_tokens/max_output_tokensnormalization- fixed-temperature and rejected-
stopcleanup - provider-specific reasoning/thinking shapes for OpenAI, OpenRouter, DeepSeek, GLM, and Qwen-style no-think prompts
It does not handle:
- client creation
- streaming abstraction
- message conversion
- tool calling abstraction
- OAuth
- cost tracking
Basic Usage
npm install llm-compatimport { normalizeChatRequest, resolveModelProfile } from 'llm-compat';
const profile = resolveModelProfile({ model: 'gpt-5.4', baseURL: process.env.OPENAI_BASE_URL });
const request = normalizeChatRequest(
{
model: 'gpt-5.4',
messages: [{ role: 'user', content: 'Hello' }],
max_tokens: 1000,
temperature: 0.7,
},
profile,
{ thinking: 'disabled' },
);Usage Env Resolver
import { createPrefixedUsageDefinition, resolveUsageConfig } from 'llm-compat';
const usage = resolveUsageConfig({
usage: 'fast',
env: process.env,
defaults: {
model: process.env.MODEL,
apiKey: process.env.OPENAI_API_KEY,
baseURL: process.env.OPENAI_BASE_URL,
},
usages: {
fast: createPrefixedUsageDefinition(['APP_FAST', 'FAST']),
},
});Route Table Resolver
import { resolveModelRoute } from 'llm-compat';
const resolved = resolveModelRoute({
model: 'openrouter-gemini-3-pro',
routes: [
{
models: 'openrouter-*',
stripProviderPrefix: true,
endpoint: {
baseURL: '$OPENROUTER_BASE_URL',
apiKey: '$OPENROUTER_API_KEY',
},
},
],
env: process.env,
});Status
0.x is experimental. APIs may change while internal applications migrate.
