createProvider

Factory function to create LLM provider instances.

Signature

function createProvider(
  name: ProviderName,
  config?: ProviderConfig
): LLMProvider

type ProviderName = 
  | "openai" 
  | "anthropic" 
  | "google" 
  | "groq" 
  | "cerebras" 
  | "ollama";

Parameters

ParameterTypeDescription
nameProviderNameProvider identifier
config.apiKeystring?API key (reads from env if not provided)
config.baseUrlstring?Custom API endpoint
config.defaultModelstring?Model to use for requests

Returns

An LLMProvider instance:

interface LLMProvider {
  name: string;
  defaultModel: string;
  complete(params: CompletionParams): Promise<CompletionResult>;
}

interface CompletionParams {
  prompt: string;
  model?: string;
  temperature?: number;
  maxTokens?: number;
  responseFormat?: "text" | "json";
}

interface CompletionResult {
  content: string;
  usage: {
    inputTokens: number;
    outputTokens: number;
  };
}

Environment Variables

If apiKey is not provided, providers read from:

ProviderEnvironment Variable
openaiOPENAI_API_KEY
anthropicANTHROPIC_API_KEY
googleGOOGLE_API_KEY
groqGROQ_API_KEY
cerebrasCEREBRAS_API_KEY
ollama(none required)

Default Models

ProviderDefault Model
openaigpt-4o-mini
anthropicclaude-3-5-sonnet-20241022
googlegemini-2.0-flash
groqllama-3.3-70b-versatile
cerebrasllama3.1-8b
ollamallama3.2

Examples

import { createProvider } from "@mzhub/promptc";

// OpenAI with default settings
const openai = createProvider("openai");

// OpenAI with custom model
const gpt4 = createProvider("openai", {
  apiKey: process.env.OPENAI_API_KEY,
  defaultModel: "gpt-4o"
});

// Anthropic
const claude = createProvider("anthropic", {
  apiKey: process.env.ANTHROPIC_API_KEY
});

// Ollama (local)
const ollama = createProvider("ollama", {
  baseUrl: "http://localhost:11434",
  defaultModel: "llama3.2"
});

// Direct completion (rarely needed - use Programs instead)
const result = await openai.complete({
  prompt: "Hello, world!",
  temperature: 0.7,
  maxTokens: 100
});

See also: Providers Guide