/** * Basic Node.js/Bun example of using Ask Client SDK * * Run with: * bun run examples/node/basic.ts * or * tsx examples/node/basic.ts */ import { AskClient } from '../../src/client/AskClient'; async function main() { console.log('🤖 Ask Client SDK - Basic Example\n'); // Initialize client const client = new AskClient({ baseUrl: process.env.WORKER_API_URL || 'http://localhost:59898/v1', askApiKey: process.env.ASK_API_KEY, // Or use provider keys directly: // providerKeys: { // groq: process.env.GROQ_API_KEY, // openai: process.env.OPENAI_API_KEY, // }, defaultProvider: 'groq', defaultModel: 'llama-3.1-70b-versatile', debug: true, }); // Example 1: Non-streaming request console.log('📝 Example 1: Non-streaming request\n'); try { const response = await client.completion({ messages: [ { role: 'user', content: 'What is the capital of France?' } ] }); console.log('Response:', response.content); console.log('---\n'); } catch (error: any) { console.error('Error:', error.message); } // Example 2: Streaming request console.log('📝 Example 2: Streaming request\n'); try { const stream = await client.streamCompletion({ messages: [ { role: 'user', content: 'Count from 1 to 10' } ], config: { temperature: 0.3, maxTokens: 100 } }); process.stdout.write('Response: '); for await (const chunk of stream) { process.stdout.write(chunk); } console.log('\n---\n'); } catch (error: any) { console.error('Error:', error.message); } // Example 3: Multi-turn conversation console.log('📝 Example 3: Multi-turn conversation\n'); try { const response = await client.completion({ messages: [ { role: 'user', content: 'My name is Alice' }, { role: 'assistant', content: 'Nice to meet you, Alice! How can I help you?' }, { role: 'user', content: 'What is my name?' } ] }); console.log('Response:', response.content); console.log('---\n'); } catch (error: any) { console.error('Error:', error.message); } // Example 4: Different providers console.log('📝 Example 4: Using different providers\n'); const providers = [ { provider: 'groq', model: 'llama-3.1-8b-instant' }, // Uncomment if you have API keys configured: // { provider: 'openai', model: 'gpt-3.5-turbo' }, // { provider: 'anthropic', model: 'claude-3-haiku-20240307' }, ]; for (const config of providers) { try { const response = await client.completion({ messages: [ { role: 'user', content: 'Say hello in one word' } ], config }); console.log(`${config.provider} (${config.model}):`, response.content); } catch (error: any) { console.error(`${config.provider} error:`, error.message); } } console.log('---\n'); // Example 5: Health check console.log('📝 Example 5: Health check\n'); try { const health = await client.health(); console.log('Status:', health.status); console.log('Providers:', health.providers); console.log('---\n'); } catch (error: any) { console.error('Error:', error.message); } console.log('✅ All examples completed!'); } main().catch(console.error);