
# LLM Augmentation for Brainy
This document describes the LLM (Language Learning Model) augmentation for Brainy, which enables creating, training, testing, exporting, and deploying language models from the data in Brainy's graph database.
## Overview
The LLM augmentation extends Brainy with the ability to create and train language models using the nouns and verbs stored in the graph database. It leverages TensorFlow.js to provide cross-platform compatibility, working in both browser and Node.js environments.
The augmentation consists of two main components:
1. **LLMCognitionAugmentation**: A cognition augmentation that provides the core functionality for creating, training, testing, exporting, and deploying LLM models.
2. **LLMActivationAugmentation**: An activation augmentation that provides action triggers for the LLM functionality, making it accessible through the augmentation pipeline.
## Features
- **Create LLM Models**: Create simple sequence models or transformer models with customizable parameters.
- **Train Models**: Train models on the nouns and verbs in Brainy's database with configurable training options.
- **Test Models**: Evaluate model performance and generate sample predictions.
- **Export Models**: Export trained models in various formats (TFJS, JSON) for use in different environments.
- **Deploy Models**: Deploy models to browser, Node.js, or cloud environments.
- **Generate Text**: Use trained models to generate text based on input prompts.
## Installation
The LLM augmentation is included as an optional component in the Brainy package. No additional installation is required if you have already installed Brainy.
```bash
npm install @soulcraft/brainy --legacy-peer-deps
```
## Usage
### Simplified Usage (Recommended for New Users)
```javascript
import { BrainyData, augmentationPipeline } from '@soulcraft/brainy'
import { createLLMAugmentations } from '@soulcraft/brainy/src/augmentations/llmAugmentations.js'
// Initialize Brainy
const db = new BrainyData()
await db.init()
// Create LLM augmentations
const { cognition, activation } = await createLLMAugmentations({
cognitionName: 'my-llm-cognition',
activationName: 'my-llm-activation',
brainyDb: db
})
// Register augmentations with the pipeline
augmentationPipeline.register(cognition)
augmentationPipeline.register(activation)
// Create a model using a preset (tiny, small, medium, large)
const createResult = await cognition.createModelFromPreset('small', 'my-model')
const modelId = createResult.data.modelId
// Train the model with simplified options (quick, standard, thorough)
await cognition.trainModelSimple(modelId, 'standard')
// Generate text with simplified creativity options (conservative, balanced, creative)
const generateResult = await cognition.generateTextSimple(modelId, 'What is a', 'balanced')
console.log(`Generated text: ${generateResult.data.text}`)
```
### Advanced Usage
```javascript
import { BrainyData, augmentationPipeline } from '@soulcraft/brainy'
import { createLLMAugmentations } from '@soulcraft/brainy/src/augmentations/llmAugmentations.js'
// Initialize Brainy
const db = new BrainyData()
await db.init()
// Create LLM augmentations
const { cognition, activation } = await createLLMAugmentations({
cognitionName: 'my-llm-cognition',
activationName: 'my-llm-activation',
brainyDb: db
})
// Register augmentations with the pipeline
augmentationPipeline.register(cognition)
augmentationPipeline.register(activation)
// Create a model with advanced configuration
const createResult = await cognition.createModel({
name: 'my-model',
modelType: 'simple',
vocabSize: 5000,
embeddingDim: 64,
hiddenDim: 128,
numLayers: 1
})
const modelId = createResult.data.modelId
// Train the model with advanced options
await cognition.trainModel(modelId, {
maxSamples: 100,
validationSplit: 0.2
})
// Generate text with advanced options
const generateResult = await cognition.generateText(modelId, 'What is a', {
temperature: 0.7
})
console.log(`Generated text: ${generateResult.data.text}`)
```
### Using the Augmentation Pipeline
```javascript
// Create a model through the pipeline
const pipelineCreateResult = await augmentationPipeline.executeCognitionPipeline(
'createModel',
[{
name: 'pipeline-model',
modelType: 'transformer',
numHeads: 2,
numLayers: 1
}]
)
if (pipelineCreateResult[0] && (await pipelineCreateResult[0]).success) {
const pipelineModelId = (await pipelineCreateResult[0]).data.modelId
// Train the model through the pipeline
await augmentationPipeline.executeCognitionPipeline(
'trainModel',
[pipelineModelId, { maxSamples: 50 }]
)
}
```
## CLI Usage
The LLM functionality is also available through the Brainy CLI. The CLI provides both simplified and advanced commands for working with LLM models.
### Simplified CLI Commands (Recommended for New Users)
```bash
# Create a model using a preset (tiny, small, medium, large)
brainy llm create-simple [preset] --name my-model
# Train a model with simplified options (quick, standard, thorough)
brainy llm train-simple