- Add initial BrainyChat class implementation with context management - Update BRAINY-CHAT.md with comprehensive documentation - Update README.md to include Brainy Chat preview feature - Foundation for natural language interaction with vector data
8.4 KiB
8.4 KiB
Brainy Chat - Talk to Your Data (Coming Soon!) 🧠💬
Transform your Brainy database into an intelligent conversational AI with the simplest API imaginable - just one method, one optional parameter!
🚀 The Simplest AI Chat API Ever Created
// Coming in v0.56 - Just ONE line, ONE method!
import { BrainyChat } from '@soulcraft/brainy/chat'
const chat = new BrainyChat(brainy) // That's literally it!
const response = await chat.ask("What are the trends in our customer data?")
🎯 The Beauty of Simplicity: One Optional Parameter
// WITHOUT LLM - Works instantly with template-based responses
const chat = new BrainyChat(brainy)
await chat.ask("Find similar customers to John")
// → Uses smart templates to format your data meaningfully
// WITH LLM - Same API, smarter responses
const smartChat = new BrainyChat(brainy, {
llm: 'Xenova/LaMini-Flan-T5-77M' // Just add this one parameter!
})
await smartChat.ask("Find similar customers to John")
// → Uses LLM to generate natural, insightful responses
// That's it. No complex configuration. No multiple interfaces.
// Just: new BrainyChat(brainy, { llm?: string })
🎯 Why This API Design is Revolutionary
1. Progressive Enhancement Done Right
// Start simple - works immediately
const chat = new BrainyChat(brainy)
await chat.ask("Which customers are most similar to John?")
// → Returns formatted results using smart templates
// Enhance when needed - same exact API!
const betterChat = new BrainyChat(brainy, { llm: 'gpt-4o-mini' })
await betterChat.ask("Which customers are most similar to John?")
// → Returns natural language insights with deeper analysis
2. Zero Learning Curve
// The ENTIRE API in 3 lines:
const chat = new BrainyChat(brainy, { llm?: string }) // Constructor
await chat.ask(question: string) // Ask questions
await chat.chat() // Interactive mode
// That's it. Nothing else to learn.
3. Works Everywhere, Scales Anywhere
// Development - No LLM needed
const devChat = new BrainyChat(brainy)
// Staging - Small local LLM
const stagingChat = new BrainyChat(brainy, {
llm: 'Xenova/LaMini-Flan-T5-77M' // 77MB model
})
// Production - Premium LLM
const prodChat = new BrainyChat(brainy, {
llm: 'claude-3-5-sonnet' // Or any model you want
})
// ALL THREE USE THE EXACT SAME CODE!
🏗️ How It Works Under the Hood
Without LLM (Default) - Smart Templates
const chat = new BrainyChat(brainy) // No config needed!
// When you ask a question:
await chat.ask("What are the main product categories?")
// Brainy Chat:
// 1. Searches your data using embeddings
// 2. Analyzes the question type (list, comparison, count, etc.)
// 3. Formats results with intelligent templates
// 4. Returns: "Found 5 main categories: Electronics, Books, Clothing, Home, Sports"
With LLM - Natural Language Generation
const chat = new BrainyChat(brainy, { llm: 'Xenova/LaMini-Flan-T5-77M' })
// Same question:
await chat.ask("What are the main product categories?")
// Brainy Chat:
// 1. Searches your data (same as before)
// 2. Passes context to the LLM
// 3. LLM generates natural response
// 4. Returns: "Your store features 5 primary product categories. Electronics
// leads with 45% of inventory, followed by Books at 23%. Clothing, Home
// goods, and Sports equipment round out your offerings, with seasonal
// variations in the Sports category showing 3x growth in summer months."
The Magic: Same Code, Different Intelligence Levels
// Your code never changes:
async function analyzeData(brainy, useLLM = false) {
const chat = new BrainyChat(brainy,
useLLM ? { llm: 'gpt-4o-mini' } : {}
)
return await chat.ask("Analyze customer satisfaction trends")
}
// Works in development (no LLM)
// Works in production (with LLM)
// Same function, progressive enhancement!
💡 Intelligent Features
Contextual Understanding
// Maintains conversation context
await chat.ask("What are our top products?")
// → "Top 3 products by revenue: ProductA ($2.3M), ProductB ($1.8M)..."
await chat.ask("Tell me more about the first one") // Understands context!
// → "ProductA is our flagship offering, launched in 2023..."
Multi-Step Reasoning
// Complex queries that require multiple lookups
await chat.ask("Compare our Q3 performance to last year and identify improvements")
// → Searches Q3 data → Finds last year's Q3 → Compares → Identifies patterns
Source Attribution
const response = await chat.ask("What's our refund policy?", {
includeSources: true
})
// Returns: {
// answer: "Our refund policy allows 30-day returns...",
// sources: ["noun:policy-doc-001", "noun:faq-refunds", "verb:updated-by-legal"]
// }
🚀 Complete API Reference (Yes, This Is Everything!)
import { BrainyData, BrainyChat } from '@soulcraft/brainy'
// Setup
const brainy = new BrainyData()
await brainy.init()
// Create chat - THE ONLY CONSTRUCTOR
const chat = new BrainyChat(
brainy, // Required: Your Brainy instance
{ // Optional: Configuration
llm?: string, // Optional: LLM model name
sources?: bool // Optional: Include source references (default: false)
}
)
// Ask questions - THE ONLY METHOD YOU NEED
const answer = await chat.ask("Your question here")
// Interactive mode - BONUS METHOD
await chat.chat() // Starts interactive REPL
// That's it. That's the entire API.
// No configuration hell. No complex setup.
// Just: new BrainyChat(brainy, { llm?: string })
🎉 Examples: From Zero to AI in Seconds
// Example 1: Customer Support Bot (No LLM)
const supportBot = new BrainyChat(brainy)
await supportBot.ask("How do I reset my password?")
// Returns: "Based on 'password-reset-guide': Click Settings > Security > Reset"
// Example 2: Smart Analytics (With LLM)
const analyst = new BrainyChat(brainy, { llm: 'gpt-4o-mini' })
await analyst.ask("What patterns exist in user churn?")
// Returns: "Analysis reveals three key churn indicators: users who haven't
// logged in for 30+ days show 73% churn probability..."
// Example 3: Development vs Production
const chat = new BrainyChat(brainy, {
llm: process.env.LLM_MODEL // undefined in dev, defined in prod
})
// Works perfectly in both environments!
📝 Use Cases
Customer Support Bot
const supportBot = new BrainyChat(brainy)
await supportBot.ask("How do I reset my password?")
// Searches docs, tickets, and FAQs to provide accurate answer
Data Analyst Assistant
const analyst = new BrainyChat(brainy, { llm: 'gpt-4o-mini' })
await analyst.ask("What patterns do you see in user churn?")
// Analyzes vector similarities and relationships to identify patterns
Code Documentation Helper
const docHelper = new BrainyChat(brainy)
await docHelper.ask("How does the authentication system work?")
// Searches all auth-related code and docs to explain
🛠️ Implementation Strategy
Phase 1: Template-Based Q&A (v0.56)
- Zero additional dependencies
- Uses existing embedding model
- Smart template responses
- ~150 lines of code total
Phase 2: Optional LLM Enhancement (v0.57)
- Lazy-loaded Hugging Face models
- Natural language generation
- Same simple API
- Progressive enhancement
Phase 3: Advanced Features (v0.58)
- Multi-turn conversations
- Code generation from data
- Analytical reports
- Custom fine-tuning
🎯 Why This Is Revolutionary
- Simplest API Ever - One constructor, one method, one optional parameter
- Progressive Enhancement - Works without LLM, better with it
- Your Data, Not Generic - Responses based on YOUR specific knowledge
- Zero to Smart - Literally one line to add AI chat to any Brainy database
- Tiny Footprint - Just ~150 lines of code, reuses existing embeddings
🔜 Coming in v0.56
This feature is under active development. The initial release will include:
- Simple BrainyChat class with just
ask()method - Template-based responses (no LLM required)
- Optional LLM parameter for enhanced responses
- Source attribution
- Interactive chat mode
The future of data interaction: One line of code, infinite possibilities! 🚀