/** * Exercise 9: Basic LLM Setup * * Goal: Get comfortable with basic LlamaCppLLM usage * * In this exercise, you'll: * 1. Create a LlamaCppLLM instance * 2. Invoke it with a simple string * 3. Invoke it with message objects * 4. Try different temperatures * * This is the same as your fundamentals, just wrapped! */ import {HumanMessage, SystemMessage, LlamaCppLLM} from '../../../../src/index.js'; import {QwenChatWrapper} from "node-llama-cpp"; async function exercise1() { console.log('=== Exercise 1: Basic LLM Setup ===\n'); // TODO: Create a LlamaCppLLM instance // Use a model path that exists on your system // Set temperature to 0.7 and maxTokens to 100 // Add a QwenChatWrapper with thoughts: 'discourage' // Set verbose to true to see model loading const llm = null; // Replace with your code try { // Part 1: Simple string invocation console.log('Part 1: Simple string input'); // TODO: Invoke the LLM with: "What is 2+2? Answer in one sentence" const response1 = null; // Replace with your code console.log('Response:', response1.content); console.log(); // Part 2: Using message objects console.log('Part 2: Using message objects'); // TODO: Create an array with: // - A SystemMessage: "You are a patient math tutor teaching a 10-year-old. Always explain the reasoning step-by-step in simple terms." // - A HumanMessage: "What is 5*5? Answer in one sentence." const messages = []; // Replace with your code // TODO: Invoke the LLM with the messages array const response2 = null; // Replace with your code console.log('Response:', response2.content); console.log(); // Part 3: Temperature experimentation console.log('Part 3: Temperature differences'); console.log('Temperature controls randomness: 0.0 = deterministic, 1.0 = creative\n'); const question = "Give me one adjective to describe winter:"; // TODO: Invoke with low temperature (0.1) using runtime config // Remember to clear chat history first: llm._chatSession.setChatHistory([]); console.log('Low temperature (0.1):'); const lowTemp = null; // Replace with your code // Should always return the same word: "cold" console.log(lowTemp.content); // TODO: Invoke with high temperature (0.9) using runtime config // Remember to clear chat history first: llm._chatSession.setChatHistory([]); console.log('\nHigh temperature (0.9):'); const highTemp = null; // Replace with your code // Different each time: "frosty", "snowy", "chilly", "icy", "freezing" console.log(highTemp.content); } finally { // TODO: Always dispose of the LLM when done // Add your cleanup code here console.log('\n✓ Resources cleaned up'); } console.log('\n✓ Exercise 1 complete!'); } // Run the exercise exercise1().catch(console.error); /** * Learning Points: * 1. LlamaCppLLM accepts both strings and message arrays * 2. QwenChatWrapper with thoughts: 'discourage' prevents thinking tokens * 3. Temperature affects creativity (low=focused, high=creative) * 4. Clear chat history between temperature tests to avoid contamination * 5. Runtime config overrides instance defaults * 6. Always dispose() when done to free resources */