/** * Basic usage example for Simple AI Provider * Demonstrates how to use the Claude provider */ import { createClaudeProvider, AIProviderError, AIErrorType } from '../src/index.js'; async function basicExample() { // Replace with your actual API key const apiKey = process.env.ANTHROPIC_API_KEY || 'your-api-key-here'; try { // Create and initialize the Claude provider console.log('Creating Claude provider...'); const claude = createClaudeProvider(apiKey, { defaultModel: 'claude-3-5-haiku-20241022', // Using faster model for demo timeout: 30000 }); console.log('Initializing provider...'); await claude.initialize(); console.log('Provider info:', claude.getInfo()); // Basic completion console.log('\n--- Basic Completion ---'); const response = await claude.complete({ messages: [ { role: 'system', content: 'You are a helpful assistant that responds concisely.' }, { role: 'user', content: 'What is TypeScript?' } ], maxTokens: 150, temperature: 0.7 }); console.log('Response:', response.content); console.log('Usage:', response.usage); // Streaming example console.log('\n--- Streaming Example ---'); console.log('Streaming response for: "Write a haiku about coding"\n'); for await (const chunk of claude.stream({ messages: [ { role: 'user', content: 'Write a haiku about coding' } ], maxTokens: 100 })) { if (!chunk.isComplete) { process.stdout.write(chunk.content); } else { console.log('\n\nStream completed. Usage:', chunk.usage); } } } catch (error) { if (error instanceof AIProviderError) { console.error(`AI Provider Error (${error.type}):`, error.message); switch (error.type) { case AIErrorType.AUTHENTICATION: console.error('Please check your API key.'); break; case AIErrorType.RATE_LIMIT: console.error('You are being rate limited. Please wait and try again.'); break; case AIErrorType.INVALID_REQUEST: console.error('Invalid request parameters.'); break; default: console.error('An unexpected error occurred.'); } } else { console.error('Unexpected error:', error); } } } // Run the example if (import.meta.main) { basicExample().catch(console.error); }