← knowledge.oriz.in

Every AI provider adapter must be OpenAI-compatible (SDK schema)

rule ruleaiopenai-compatiblesdkadaptersminimum-code

OpenAI-compatible AI provider adapters

Rule

Every adapter in @chirag127/oriz-ai-providers (and any future AI-related package in the family) MUST use the OpenAI SDK schema:

import OpenAI from "openai";
const client = new OpenAI({ baseURL, apiKey });
const r = await client.chat.completions.create({
  model: "<provider-model-slug>",
  messages: [{ role: "user", content: "..." }],
});

Most free LLM providers ALREADY support this schema (see source: awesome-free-llm-apis — labeled "OpenAI SDK-compatible unless noted"). Specifically OpenAI-compatible:

Providers needing a translation shim:

Why

How adapters are structured

Every adapter file at src/providers/<slug>.ts exports:

export const provider = {
  slug: "groq",
  baseURL: "https://api.groq.com/openai/v1",
  envVar: "GROQ_API_KEY",
  models: ["llama-3.3-70b-versatile", "qwen3-32b", "gpt-oss-120b"],
  rateLimit: { rpm: 30, rpd: 1000 },
};

The shared createClient(providerSlug) function:

  1. Looks up provider config
  2. Loads process.env[envVar]
  3. Returns new OpenAI({ baseURL, apiKey })

That's it. Zero per-provider request-shape code.

Schema for "Other" message context

Whenever the user later pastes a Free LLM API schema, list, or table — incorporate it under the existing structure here. The data lives in the separate chirag127/oriz-ai-providers-data repo (per the package decision). Pasted schemas should be added to that data repo, not this rule file.

Cross-refs