| /** | |
| * Exercise 10: Batch Processing | |
| * | |
| * Goal: Learn to process multiple inputs efficiently | |
| * | |
| * In this exercise, you'll: | |
| * 1. Use batch() to process multiple questions at once | |
| * 2. Compare batch vs sequential processing | |
| * 3. Test your agent on multiple test cases | |
| * 4. Understand parallel execution benefits | |
| * | |
| * This is incredibly useful for testing and evaluation! | |
| */ | |
| import {HumanMessage, SystemMessage, LlamaCppLLM} from '../../../../src/index.js'; | |
| async function exercise2() { | |
| console.log('=== Exercise 2: Batch Processing ===\n'); | |
| const llm = new LlamaCppLLM({ | |
| modelPath: './models/Meta-Llama-3.1-8B-Instruct-Q5_K_S.gguf', // Adjust to your model | |
| temperature: 0.3, // Lower for consistent answers | |
| maxTokens: 50 | |
| }); | |
| try { | |
| // Part 1: Simple batch processing | |
| console.log('Part 1: Batch processing simple questions'); | |
| // TODO: Create an array of 5 different math questions | |
| const mathQuestions = []; // Replace with your code | |
| // TODO: Use batch() to process all questions at once | |
| const mathAnswers = null; // Replace with your code | |
| // TODO: Print each question and answer | |
| // Loop through and console.log them nicely | |
| console.log(); | |
| // Part 2: Batch with message arrays | |
| console.log('Part 2: Batch processing with message arrays'); | |
| // TODO: Create an array of message arrays | |
| // Each should have a SystemMessage defining a role and a HumanMessage with a question | |
| // Roles: ["chef", "scientist", "poet"] | |
| // Question for each: "Describe an apple in one sentence" | |
| const conversationBatch = []; // Replace with your code | |
| // TODO: Process the batch | |
| const perspectives = null; // Replace with your code | |
| // TODO: Print each role's perspective | |
| // Format: "Chef: [response]" | |
| console.log(); | |
| // Part 3: Performance comparison | |
| console.log('Part 3: Sequential vs Batch performance'); | |
| const testQuestions = [ | |
| "What is AI?", | |
| "What is ML?", | |
| "What is DL?", | |
| "What is NLP?", | |
| "What is CV?" | |
| ]; | |
| // TODO: Time sequential processing | |
| console.log('Sequential processing...'); | |
| const startSeq = Date.now(); | |
| // Process each question one by one with a loop | |
| // (code here) | |
| const seqTime = Date.now() - startSeq; | |
| console.log(`Sequential: ${seqTime}ms`); | |
| // TODO: Time batch processing | |
| console.log('\nBatch processing...'); | |
| const startBatch = Date.now(); | |
| // Process all at once with batch() | |
| // (code here) | |
| const batchTime = Date.now() - startBatch; | |
| console.log(`Batch: ${batchTime}ms`); | |
| console.log(`\nSpeedup: ${(seqTime / batchTime).toFixed(2)}x faster`); | |
| } finally { | |
| await llm.dispose(); | |
| } | |
| console.log('\n✓ Exercise 2 complete!'); | |
| } | |
| // Run the exercise | |
| exercise2().catch(console.error); | |
| /** | |
| * Expected Output: | |
| * - Part 1: 5 math questions answered | |
| * - Part 2: Same question from 3 different perspectives | |
| * - Part 3: Batch should be significantly faster than sequential | |
| * | |
| * Learning Points: | |
| * 1. batch() processes inputs in parallel | |
| * 2. Great for testing multiple cases | |
| * 3. Works with both strings and message arrays | |
| * 4. Much faster than sequential processing | |
| */ |