Skip to main content
PraisonAI TypeScript supports multiple LLM providers through a unified interface.

Supported Providers

ProviderModel ExamplesStatus
OpenAIgpt-4o, gpt-4o-mini
Anthropicclaude-3-5-sonnet, claude-sonnet-4
Googlegemini-2.0-flash

Installation

npm install praisonai

Basic Usage

import { createProvider } from 'praisonai';

// Create OpenAI provider
const openai = createProvider('openai/gpt-4o-mini');

// Generate text
const result = await openai.generateText({
  messages: [
    { role: 'system', content: 'You are a helpful assistant.' },
    { role: 'user', content: 'Hello!' }
  ]
});

console.log(result.text);
console.log(result.usage); // { promptTokens, completionTokens, totalTokens }

Provider Selection

import { createProvider, parseModelString } from 'praisonai';

// Explicit provider prefix
const anthropic = createProvider('anthropic/claude-sonnet-4-20250514');
const google = createProvider('google/gemini-2.0-flash');

// Auto-detect from model name
const auto1 = createProvider('gpt-4o');      // → OpenAI
const auto2 = createProvider('claude-3-5-sonnet'); // → Anthropic
const auto3 = createProvider('gemini-2.0-flash');  // → Google

Streaming

const provider = createProvider('openai/gpt-4o-mini');

const stream = await provider.streamText({
  messages: [{ role: 'user', content: 'Count to 5' }],
  onToken: (token) => process.stdout.write(token)
});

for await (const chunk of stream) {
  if (chunk.text) console.log(chunk.text);
}

Tool Calling

const provider = createProvider('openai/gpt-4o-mini');

const result = await provider.generateText({
  messages: [{ role: 'user', content: 'What is 5+3?' }],
  tools: [{
    name: 'calculator',
    description: 'Perform math calculations',
    parameters: {
      type: 'object',
      properties: {
        expression: { type: 'string' }
      },
      required: ['expression']
    }
  }]
});

if (result.toolCalls) {
  for (const call of result.toolCalls) {
    console.log(`Tool: ${call.function.name}`);
    console.log(`Args: ${call.function.arguments}`);
  }
}

Structured Output

const provider = createProvider('openai/gpt-4o-mini');

const result = await provider.generateObject({
  messages: [{ role: 'user', content: 'Extract: John is 30 years old' }],
  schema: {
    type: 'object',
    properties: {
      name: { type: 'string' },
      age: { type: 'number' }
    },
    required: ['name', 'age'],
    additionalProperties: false
  }
});

console.log(result.object); // { name: 'John', age: 30 }

Error Handling & Retries

const provider = createProvider('openai/gpt-4o-mini', {
  maxRetries: 3,
  timeout: 60000
});

try {
  const result = await provider.generateText({
    messages: [{ role: 'user', content: 'Hello' }]
  });
} catch (error) {
  console.error('Failed after retries:', error.message);
}

Check Provider Availability

import { isProviderAvailable, getAvailableProviders } from 'praisonai';

// Check specific provider
if (isProviderAvailable('openai')) {
  console.log('OpenAI is available');
}

// Get all available providers
const available = getAvailableProviders();
console.log('Available:', available); // ['openai', 'anthropic', ...]