Skip to content
PluginStats

@llm-ports/adapter-openai weekly downloads statistics

By llm-ports · npm · AI SDKs

OpenAI SDK adapter for llm-ports. Implements LLMPort and EmbeddingsPort. baseURL support covers 10+ OpenAI-compatible providers (Azure, Groq, Together, Fireworks, DeepInfra, Perplexity, Cerebras, LiteLLM proxy).

View on npm Stale · Oct 18, 2026

@llm-ports/adapter-openai has 129 recorded weekly downloads on npm, a decrease of 86.7% over the past 30 days, ranking #1751 of 2,391 tracked listings.

Weekly downloads
129
Official API · Oct 18, 2026
7-day growth
-42.9%
-97 weekly downloads
30-day growth
-86.7%
-839 weekly downloads
90-day growth
-76.2%
-414 weekly downloads
Rank
#1751
Among tracked npm listings

About @llm-ports/adapter-openai

@llm-ports/adapter-openai

OpenAI SDK adapter for llm-ports. Implements LLMPort and EmbeddingsPort. The same adapter serves OpenAI plus 12+ OpenAI-compatible providers via baseURL, including Groq, Together AI, Fireworks AI, Cerebras, Clarifai, and SambaNova.

Install

pnpm add @llm-ports/core @llm-ports/adapter-openai openai zod

Configure

import { createRegistryFromEnv } from "@llm-ports/core";
import { createOpenAIAdapter } from "@llm-ports/adapter-openai";

const registry = createRegistryFromEnv({
  adapters: {
    openai: createOpenAIAdapter({
      apiKey: process.env.OPENAI_API_KEY!,
    }),
  },
});

const llm = registry.getPort();
const embed = registry.getEmbeddingsPort();
Compat providers

The same adapter works for any provider that exposes an OpenAI-shaped API. Just supply a baseURL:

ProviderbaseURL
OpenAI (default)(none)
Azure OpenAIhttps://<resource>.openai.azure.com/openai/deployments/<deployment>
Groqhttps://api.groq.com/openai/v1
Together AIhttps://api.together.xyz/v1
Fireworks AIhttps://api.fireworks.ai/inference/v1
DeepInfrahttps://api.deepinfra.com/v1/openai
Perplexityhttps://api.perplexity.ai
Cerebrashttps://api.cerebras.ai/v1
Clarifaihttps://api.clarifai.com/v2/ext/openai/v1
SambaNovahttps://api.sambanova.ai/v1
LiteLLM proxyself-hosted, e.g. http://localhost:4000
Ollama compat-modehttp://localhost:11434/v1 (prefer adapter-ollama for native API)

Each compatible provider has its own pricing — supply via pricingOverrides:

createOpenAIAdapter({
  apiKey: process.env.GROQ_API_KEY!,
  baseURL: "https://api.groq.com/openai/v1",
  displayName: "groq",
  pricingOverrides: {
    "llama-3.3-70b-versatile": { inputPer1M: 0.59, outputPer1M: 0.79 },
  },
});

Adapter options

interface OpenAIAdapterOptions {
  apiKey: string;
  baseURL?: string;                            // for OpenAI-compat providers
  fetch?: typeof fetch;                        // inject custom fetch (tests, proxies)
  validationStrategy?: ValidationStrategy;
  pricingOverrides?: Record<string, ModelPricing>;
  displayName?: string;                        // friendlier alias in error messages
  imageSizeLimitBytes?: number;                // default 20 MB
  dangerouslyAllowBrowser?: boolean;           // opt in to browser execution (alpha.9)
  maxRetries?: number;                         // SDK-level retries (default 2)
  transientAuthRetries?: number;               // project-key 401 burst retries (default 2)
  transientAuthBackoffMs?: (attempt: number) => number;
  onRetry?: OnRetry;                           // observability hook
}
dangerouslyAllowBrowser (alpha.9+)

The OpenAI SDK refuses to construct in a browser environment unless dangerouslyAllowBrowser: true is passed explicitly. Set this option only when the API key is NOT a long-lived secret: short-lived proxy tokens, BYO-key UIs where the end user supplies their own key, or trusted internal tools running behind auth. For server-side proxy patterns where the secret stays on the server, leave it unset.

const adapter = createOpenAIAdapter({
  apiKey: ephemeralUserKey,
  dangerouslyAllowBrowser: true,
});

Bundled pricing

The bundled OPENAI_PRICING table covers GPT-5 family (gpt-5, gpt-5-mini, gpt-5-nano), GPT-4o family, o3 / o3-mini, and the embedding models. Override per model via pricingOverrides.

Bundled pricing does NOT cover compat-provider models (Groq, Together AI, Fireworks, Cerebras, Clarifai, SambaNova, LiteLLM proxy, etc.) — supply pricingOverrides for those.

Supported features

FeatureStatus
generateText✓
generateStructured (Zod schemas)✓ (uses native response_format: json_object + retry-with-feedback)
streamText✓ (alpha.25+: emits onCost + onTokenUsage at natural completion)
streamStructured (partial JSON)✓ (best-effort partial parse; alpha.25+: same streamed cost surface)
runAgent (multi-turn tool use)✓
generateEmbedding / generateEmbeddings✓ (text-embedding-3-small / -large)
Vision input — base64 images✓ (data URI)
Vision input — URL images✓
Audio input — base64 wav/mp3✓
Audio input — base64 ogg✗ (OpenAI doesn't support ogg)
Audio input — URL audio✗ (OpenAI requires base64)
Prompt caching✓ — reported via cachedTokens
AbortSignal cancellation✓ entry + in-flight (alpha.6)

Content blocks supported

text, image (base64 → data URI; URL passthrough), audio (base64 wav/mp3 only), tool_use, tool_result. Throws ContentBlockUnsupportedError for unsupported variants.

Capability detection — three-tier architecture (alpha.24+)

Reasoning models consume output tokens on hidden chain-of-thought before producing visible text. The adapter detects this and retries once with the budget expanded by a headroom multiplier.

The detection mechanism has three tiers (see Capability Detection for the full design):

  1. Runtime detection (alpha.22+) — universal correctness path. Every successful response is inspected for four CoT field shapes (usage.completion_tokens_details.reasoning_tokens, message.reasoning, message.reasoning_content, inline <think>). Catches every reasoning model with zero maintenance.
  2. Behavioral fingerprint cache (alpha.24+) — opt-in cross-process optimization. createOpenAIAdapter({ fingerprintCache }) skips the first-call discovery penalty.
  3. Static catalog (KNOWN_REASONING_MODELS, FROZEN) — cheap shortcut for the stable well-known cases. Closed to new entries.
Behavioral fingerprint cache…

Description from the npm listing.

  • llm
  • ai
  • typescript
  • openai
  • openai-compatible
  • gpt
  • gpt-4
  • gpt-4o
  • gpt-5
  • azure-openai
  • groq
  • together-ai
  • fireworks
  • deepinfra
  • perplexity
  • cerebras
  • litellm
  • ai-sdk
  • generative-ai
  • llm-ports

README badge

Show your rank in a README or on your website. The badge updates automatically.

Charts

Images: 30d · 1y · all time · 1600×900 dark

Adoption over time

@llm-ports/adapter-openai weekly downloads on npm, last 90 days: 129 weekly downloads as of Oct 18, 2026, -76.2% over 90 days.@llm-ports/adapter-openaiWeekly downloads on npm · Last 90 days129downloads / week-76.2% over 90 days01K2K3K4K5K6KJul 20Aug 4Aug 19Sep 3Sep 18Oct 3Oct 18downloads / weekobservedarchived (Internet Archive)no observationsJul 24, 2026 – Oct 18, 2026 · 87 observations · Updated Oc…pluginstats.com
@llm-ports/adapter-openai weekly downloads on npm, last 90 days: 129 weekly downloads as of Oct 18, 2026, -76.2% over 90 days.

7/30/90-day growth

@llm-ports/adapter-openai weekly downloads growth on npm: -42.9% over 7 days, -86.7% over 30 days, -76.2% over 90 days.@llm-ports/adapter-openaiWeekly downloads growth on npm129downloads / week now7-day growth-97 weekly downloads-42.9%30-day growth-839 weekly downloads-86.7%90-day growth-414 weekly downloads-76.2%Growth vs. nearest observation to each baseline date · Updated Oct 18, 2026pluginstats.com
@llm-ports/adapter-openai weekly downloads growth on npm: -42.9% over 7 days, -86.7% over 30 days, -76.2% over 90 days.

Ranking history

@llm-ports/adapter-openai npm ranking history: currently #1751 (by weekly downloads).@llm-ports/adapter-openainpm ranking · by weekly downloads · Last 90 days#1751current rank#1680#1690#1700#1710#1720#1730#1740#1750#1760Jul 23Aug 7Aug 22Sep 6Sep 21Oct 6Oct 21rankOct 18, 2026 – Oct 21, 2026 · 4 observations · Updated Oct 18, 2026pluginstats.com
@llm-ports/adapter-openai npm ranking history: currently #1751 (by weekly downloads).

Listing placement

All npm2,389 listings · 120 pages · 1,196 shown · page 89, #18 (overall #1,778)
All npm: every listing in weekly downloads order

Listing placement

AI SDKs264 listings · 14 pages · page 12, #16 (overall #236)
AI SDKs: every listing in weekly downloads order

Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.

Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.

Recent observations

Full history (122)
Recent weekly downloads observations for @llm-ports/adapter-openai
Date (UTC)Weekly downloadsChange vs. previous
129+45
84-25
109+9
100-69
169-22
1910
191-35
226-6
232-39
271-70
341+1
340-61
401-77
478—

Data source

Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.

Listing: https://www.npmjs.com/package/@llm-ports/adapter-openai. First seen Oct 16, 2026; last successful collection Oct 21, 2026. See the methodology.