feat: add initial implementation of Simple AI Provider package
This commit is contained in:
82
examples/basic-usage.ts
Normal file
82
examples/basic-usage.ts
Normal file
@ -0,0 +1,82 @@
|
||||
/**
|
||||
* 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);
|
||||
}
|
Reference in New Issue
Block a user