UNPKG

@sconedev/ai_toolkit

Version:

Simplify AI integration in web apps with local and offline model support

184 lines (164 loc) 6.73 kB
#!/usr/bin/env node const inquirer = require('inquirer'); const { execSync } = require('child_process'); const fs = require('fs'); const path = require('path'); // Detect package manager const useYarn = fs.existsSync(path.join(process.cwd(), 'yarn.lock')); const packageManager = useYarn ? 'yarn' : 'npm'; // Feature dependencies const featureDependencies = { 'PDF Processing': { dependencies: ['pdf-parse@1.1.1'], peerDependencies: ['pdfjs-dist'], nodeOnly: false, info: 'Allows summarizing PDF documents using AI' }, 'Image Generation': { dependencies: [], peerDependencies: [], nodeOnly: false, info: 'Generate images using AI (requires OpenAI API access)' }, 'Chat/Text Generation': { dependencies: [], peerDependencies: [], nodeOnly: false, info: 'Generate text responses and have conversations with AI' } }; async function main() { console.log('\n🤖 Welcome to AI Toolkit Setup! 🤖\n'); console.log('This script will help you install the dependencies you need based on which features you want to use.\n'); const { features } = await inquirer.prompt([ { type: 'checkbox', name: 'features', message: 'Select the features you want to use:', choices: Object.keys(featureDependencies).map(feature => ({ name: `${feature} - ${featureDependencies[feature].info}`, value: feature, checked: feature === 'Chat/Text Generation' // Default checked })) } ]); if (features.length === 0) { console.log('\n⚠️ No features selected. Setup cancelled.\n'); return; } console.log('\n📦 Installing required dependencies...\n'); // Collect all dependencies to install const dependencies = []; const peerDependencies = []; features.forEach(feature => { dependencies.push(...featureDependencies[feature].dependencies); peerDependencies.push(...featureDependencies[feature].peerDependencies); }); // Install dependencies if (dependencies.length > 0) { try { console.log(`Installing dependencies: ${dependencies.join(', ')}`); execSync(`${packageManager} ${useYarn ? 'add' : 'install'} ${dependencies.join(' ')}`, { stdio: 'inherit' }); } catch (error) { console.error('Failed to install dependencies:', error.message); } } // Suggest peer dependencies if (peerDependencies.length > 0) { console.log('\n⚠️ The following peer dependencies are recommended for your selected features:'); console.log(` ${peerDependencies.join('\n ')}`); const { installPeers } = await inquirer.prompt([ { type: 'confirm', name: 'installPeers', message: 'Would you like to install these peer dependencies?', default: true } ]); if (installPeers) { try { execSync(`${packageManager} ${useYarn ? 'add' : 'install'} ${peerDependencies.join(' ')}`, { stdio: 'inherit' }); } catch (error) { console.error('Failed to install peer dependencies:', error.message); } } } // Show usage information based on selected features console.log('\n✅ Setup complete! Here\'s how to use your selected features:\n'); if (features.includes('Chat/Text Generation')) { console.log('🗣️ Chat/Text Generation:'); console.log('```javascript'); console.log("import { aiToolkit } from '@sconedev/ai_toolkit';"); console.log(""); console.log("// Configure the toolkit with your API key"); console.log("aiToolkit.configure({"); console.log(" provider: 'openai', // or 'mistral', 'gemini', 'huggingface'"); console.log(" apiKey: 'your-api-key',"); console.log(" model: 'gpt-3.5-turbo' // Choose the model you want to use"); console.log("});"); console.log(""); console.log("// Use the chat function"); console.log("const response = await aiToolkit.chat(["); console.log(" { role: 'system', content: 'You are a helpful assistant.' },"); console.log(" { role: 'user', content: 'Hello, how are you?' }"); console.log("]);"); console.log("```\n"); } if (features.includes('PDF Processing')) { console.log('📄 PDF Processing:'); console.log('```javascript'); console.log("// Browser environment"); console.log("import { aiToolkit } from '@sconedev/ai_toolkit';"); console.log("import * as pdfjs from 'pdfjs-dist';"); console.log(""); console.log("// Set up PDF.js worker"); console.log("pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`;"); console.log(""); console.log("// Configure the toolkit"); console.log("aiToolkit.configure({ /* your config */ });"); console.log(""); console.log("// Process a PDF file (e.g., from a file input)"); console.log("const file = event.target.files[0];"); console.log("const summary = await aiToolkit.summarizePDFBrowser(file, pdfjs, {"); console.log(" additionalInstructions: 'Focus on key points'"); console.log("});"); console.log("```\n"); console.log("// Node.js environment"); console.log("```javascript"); console.log("const { aiToolkit } = require('@sconedev/ai_toolkit');"); console.log(""); console.log("// Configure the toolkit"); console.log("aiToolkit.configure({ /* your config */ });"); console.log(""); console.log("// Process a PDF file"); console.log("const pdfPath = 'path/to/document.pdf';"); console.log("const summary = await aiToolkit.summarizePDF(pdfPath);"); console.log("```\n"); } if (features.includes('Image Generation')) { console.log('🖼️ Image Generation:'); console.log('```javascript'); console.log("import { aiToolkit } from '@sconedev/ai_toolkit';"); console.log(""); console.log("// Configure the toolkit (with a provider that supports images)"); console.log("aiToolkit.configure({"); console.log(" provider: 'openai',"); console.log(" apiKey: 'your-api-key'"); console.log("});"); console.log(""); console.log("// Generate an image"); console.log("const imageUrl = await aiToolkit.generateImage("); console.log(" 'A serene landscape with mountains and a lake at sunset'"); console.log(");"); console.log("```\n"); } console.log('Thank you for using AI Toolkit! If you have any questions, please check our documentation.'); } main().catch(error => { console.error('Setup failed:', error); process.exit(1); });