This code defines an async function named analyzeImage
that takes an image path, reads the image file, converts it to base64, and uses a Large Language Model (LLM) to analyze the image, returning the result.
npm run import -- "analyze image with llm"
const fs = require('fs')
async function analyzeImage(imagePath) {
const {llmAnalyze} = await importer.import("llama vision")
console.log("User: Analyze the image:\n" + imagePath);
const a0 = await llmAnalyze('Analyze the image:\n' + fs.readFileSync(imagePath).toString('base64'));
console.log("AI: " + a0);
return a0
}
module.exports = analyzeImage
const fs = require('fs');
const path = require('path');
const { LLaMA } = require('llama.js');
/**
* Analyzes an image using the LLaMA vision model.
*
* @param {string} imagePath - The path to the image file.
* @returns {Promise} - The analysis result from the LLaMA model.
*/
async function analyzeImage(imagePath) {
// Validate the input path
if (!path.isAbsolute(imagePath)) {
throw new Error('Invalid image path. Ensure it is absolute.');
}
// Read the image file
const imageBuffer = await fs.promises.readFile(imagePath);
// Convert the image to base64 format
const imageBase64 = imageBuffer.toString('base64');
// Import the LLaMA vision model
const { analyze } = new LLaMA({
// Replace with your own LLaMA server endpoint or token
endpoint: 'https://api.llama.dev/v1/vision',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
},
});
// Analyze the image using the LLaMA model
const analysisResult = await analyze(`Analyze the image:\n${imageBase64}`);
// Print the user input and the AI response
console.log(`User: Analyze the image:\n${imagePath}`);
console.log(`AI: ${analysisResult}`);
// Return the analysis result
return analysisResult;
}
module.exports = analyzeImage;
const fs = require('fs')
This line imports the built-in fs
(File System) module, which provides functions for interacting with the file system.
async function analyzeImage(imagePath) {
...
}
This line defines an async function named analyzeImage
that takes a single argument imagePath
. The function returns a Promise, which allows it to perform asynchronous operations.
const {llmAnalyze} = await importer.import('llama vision')
This line imports the llmAnalyze
function from the llama vision
module, which is dynamically imported using the importer
object.
const imageBuffer = fs.readFileSync(imagePath)
const imageBase64 = imageBuffer.toString('base64')
This code reads the file specified by imagePath
into a Buffer using fs.readFileSync
, and then converts the Buffer to a base64-encoded string using toString('base64')
.
const a0 = await llmAnalyze('Analyze the image:\n' + imageBase64)
This line passes the base64-encoded image data to the llmAnalyze
function, along with a prompt to analyze the image. The function returns a Promise, which resolves to the result of the analysis.
console.log("User: Analyze the image:\n" + imagePath);
console.log("AI: " + a0);
return a0
This code logs the original image path to the console, followed by the result of the analysis. The a0
value is then returned from the function.
module.exports = analyzeImage
This line exports the analyzeImage
function, making it available for use in other modules.