Supported Providers
| Provider | Model Examples | Status |
|---|---|---|
| OpenAI | gpt-4o, gpt-4o-mini | ✅ |
| Anthropic | claude-3-5-sonnet, claude-sonnet-4 | ✅ |
| gemini-2.0-flash | ✅ |
Installation
Copy
npm install praisonai
Basic Usage
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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', ...]

