homeschool
Version:
🏠 Teach AI to understand natural language like a patient tutor. Advanced embedding-based function calling with semantic understanding, confidence scoring, and natural language parameter extraction.
1 lines • 35.5 kB
Source Map (JSON)
{"version":3,"file":"index.d.ts","sources":["../src/utils/cosine-similarity.ts","../src/extractors/index.ts","../src/core/semantic-function-caller.ts","../src/utils/parameter-database.ts","../src/index.ts"],"sourcesContent":["/**\n * Cosine similarity utility with safety checks\n */\nexport function cosineSimilarity(a: number[], b: number[]): number {\n if (!a || !b || a.length !== b.length) return 0;\n\n const dotProduct = a.reduce((sum, val, i) => sum + val * b[i], 0);\n const magnitudeA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0));\n const magnitudeB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0));\n\n // Prevent division by zero\n if (magnitudeA === 0 || magnitudeB === 0) return 0;\n\n const similarity = dotProduct / (magnitudeA * magnitudeB);\n\n // Ensure result is a valid number\n return isNaN(similarity) ? 0 : similarity;\n}\n\n/**\n * Batch cosine similarity calculation for efficiency\n */\nexport function batchCosineSimilarity(\n query: number[],\n vectors: number[][],\n): number[] {\n return vectors.map((vector) => cosineSimilarity(query, vector));\n}\n","import { ToolParameter } from '../types';\nimport { cosineSimilarity } from '../utils/cosine-similarity';\n\n/**\n * Semantic color extraction using embeddings\n */\nexport async function extractSemanticColor(\n query: string,\n config: ToolParameter,\n embedder: any,\n): Promise<string> {\n const queryEmbedding = await embedder(query);\n const queryVector = Array.from(queryEmbedding.data) as number[];\n\n let bestColor = (config.fallback as string) || 'blue';\n let bestScore = -1;\n\n // Check all color candidates\n if (config.semanticCandidates) {\n for (const color of config.semanticCandidates) {\n const colorEmbedding = await embedder(`color ${color}`);\n const colorVector = Array.from(colorEmbedding.data) as number[];\n const score = cosineSimilarity(queryVector, colorVector);\n\n if (score > bestScore) {\n bestScore = score;\n bestColor = color;\n }\n }\n }\n\n // Check for modifiers (light blue, dark red, etc.)\n if (config.modifierCandidates && config.semanticCandidates) {\n for (const modifier of config.modifierCandidates) {\n for (const color of config.semanticCandidates) {\n const modifiedColor = `${modifier} ${color}`;\n const modifiedEmbedding = await embedder(modifiedColor);\n const modifiedVector = Array.from(modifiedEmbedding.data) as number[];\n const score = cosineSimilarity(queryVector, modifiedVector);\n\n if (score > bestScore) {\n bestScore = score;\n bestColor = modifiedColor;\n }\n }\n }\n }\n\n return bestColor;\n}\n\n/**\n * Semantic category extraction using embeddings\n */\nexport async function extractSemanticCategory(\n query: string,\n config: ToolParameter,\n embedder: any,\n): Promise<string> {\n const queryEmbedding = await embedder(query);\n const queryVector = Array.from(queryEmbedding.data) as number[];\n\n let bestCategory = (config.fallback as string) || 'general';\n let bestScore = -1;\n\n if (config.semanticCandidates) {\n for (const category of config.semanticCandidates) {\n // Test multiple phrasings for better matching\n const testPhrases = [\n `${category} related`,\n `this is about ${category}`,\n `${category} category`,\n `${category} topic`,\n ];\n\n for (const phrase of testPhrases) {\n const categoryEmbedding = await embedder(phrase);\n const categoryVector = Array.from(categoryEmbedding.data) as number[];\n const score = cosineSimilarity(queryVector, categoryVector);\n\n if (score > bestScore) {\n bestScore = score;\n bestCategory = category;\n }\n }\n }\n }\n\n return bestCategory;\n}\n\n/**\n * Content isolation using semantic boundaries\n */\nexport async function extractSemanticContent(\n query: string,\n embedder: any,\n): Promise<string> {\n // Split query into potential content segments\n const words = query.split(' ');\n const segments: string[] = [];\n\n // Generate all possible contiguous segments\n for (let i = 0; i < words.length; i++) {\n for (let j = i + 1; j <= words.length; j++) {\n segments.push(words.slice(i, j).join(' '));\n }\n }\n\n // Find segments that are semantically \"content-like\" vs \"command-like\"\n const contentPrompts = [\n 'this is a message to display',\n 'this is content to show',\n 'this is text to output',\n 'this is information for the user',\n ];\n\n const commandPrompts = [\n 'this is a command instruction',\n 'this is an action to perform',\n 'this is a system directive',\n ];\n\n let bestContent = 'Hello!';\n let bestContentScore = -1;\n\n for (const segment of segments) {\n if (segment.length < 2) continue; // Skip very short segments\n\n let contentScore = 0;\n let commandScore = 0;\n\n // Score as content\n for (const contentPrompt of contentPrompts) {\n const testPhrase = `\"${segment}\" - ${contentPrompt}`;\n const embedding = await embedder(testPhrase);\n const vector = Array.from(embedding.data) as number[];\n const segmentEmbedding = await embedder(segment);\n const segmentVector = Array.from(segmentEmbedding.data) as number[];\n contentScore += cosineSimilarity(vector, segmentVector);\n }\n\n // Score as command\n for (const commandPrompt of commandPrompts) {\n const testPhrase = `\"${segment}\" - ${commandPrompt}`;\n const embedding = await embedder(testPhrase);\n const vector = Array.from(embedding.data) as number[];\n const segmentEmbedding = await embedder(segment);\n const segmentVector = Array.from(segmentEmbedding.data) as number[];\n commandScore += cosineSimilarity(vector, segmentVector);\n }\n\n // Prefer segments that are more content-like than command-like\n const netContentScore = contentScore - commandScore;\n if (netContentScore > bestContentScore) {\n bestContentScore = netContentScore;\n bestContent = segment;\n }\n }\n\n return bestContent;\n}\n","import { pipeline } from '@xenova/transformers';\nimport {\n Tool,\n ToolMatch,\n ExecutionResult,\n ExecutionOptions,\n SemanticFunctionCallerConfig,\n EmbeddingCache,\n} from '../types';\nimport { cosineSimilarity } from '../utils/cosine-similarity';\nimport {\n extractSemanticColor,\n extractSemanticCategory,\n extractSemanticContent,\n} from '../extractors';\n\n/**\n * Main class for semantic function calling\n */\nexport class SemanticFunctionCaller {\n private embedder: any = null;\n private tools: Tool[] = [];\n private config: SemanticFunctionCallerConfig;\n private embeddingCache: EmbeddingCache = {};\n\n constructor(config: SemanticFunctionCallerConfig = {}) {\n this.config = {\n embeddingModel: 'Xenova/all-MiniLM-L6-v2',\n defaultConfidenceThreshold: 0.25,\n enableCaching: true,\n verbose: false,\n ...config,\n };\n }\n\n /**\n * Initialize the embedding model\n */\n async initialize(): Promise<void> {\n if (this.embedder) return;\n\n if (this.config.verbose) {\n console.log(`Loading embedding model: ${this.config.embeddingModel}`);\n }\n\n this.embedder = await pipeline(\n 'feature-extraction',\n this.config.embeddingModel,\n );\n }\n\n /**\n * Register tools for function calling\n */\n registerTools(tools: Tool[]): void {\n this.tools = [...this.tools, ...tools];\n\n if (this.config.verbose) {\n console.log(\n `Registered ${tools.length} tools:`,\n tools.map((t) => t.name),\n );\n }\n }\n\n /**\n * Clear all registered tools\n */\n clearTools(): void {\n this.tools = [];\n this.embeddingCache = {};\n }\n\n /**\n * Get embedding with caching\n */\n private async getEmbedding(text: string): Promise<number[]> {\n if (this.config.enableCaching && this.embeddingCache[text]) {\n return Array.from(this.embeddingCache[text]);\n }\n\n const embedding = await this.embedder(text);\n const vector = Array.from(embedding.data) as number[];\n\n if (this.config.enableCaching) {\n this.embeddingCache[text] = new Float32Array(vector);\n }\n\n return vector;\n }\n\n /**\n * Find the best tool match using multi-layer semantic analysis\n */\n async findToolBySemanticLayers(query: string): Promise<ToolMatch> {\n await this.initialize();\n\n const queryVector = await this.getEmbedding(query);\n const results: ToolMatch[] = [];\n\n for (const tool of this.tools) {\n let intentScore = 0;\n let contextScore = 0;\n let descScore = 0;\n const matches: ToolMatch['matches'] = [];\n\n // Layer 1: Intent matching - take best match\n let bestIntentScore = 0;\n for (const intent of tool.intentPatterns) {\n const intentVector = await this.getEmbedding(intent);\n const score = cosineSimilarity(queryVector, intentVector);\n if (score > bestIntentScore) {\n bestIntentScore = score;\n }\n matches.push({ type: 'intent', text: intent, score });\n }\n intentScore = bestIntentScore;\n\n // Layer 2: Context matching - take best match\n let bestContextScore = 0;\n for (const context of tool.contexts) {\n const contextVector = await this.getEmbedding(context);\n const score = cosineSimilarity(queryVector, contextVector);\n if (score > bestContextScore) {\n bestContextScore = score;\n }\n matches.push({ type: 'context', text: context, score });\n }\n contextScore = bestContextScore;\n\n // Layer 3: Description matching\n const descVector = await this.getEmbedding(tool.description);\n descScore = cosineSimilarity(queryVector, descVector);\n matches.push({\n type: 'description',\n text: tool.description,\n score: descScore,\n });\n\n // Calculate weighted total score\n const totalScore =\n intentScore * 0.4 + contextScore * 0.3 + descScore * 0.3;\n\n results.push({\n tool: tool.name,\n totalScore,\n matches: matches.sort((a, b) => b.score - a.score),\n });\n }\n\n return results.sort((a, b) => b.totalScore - a.totalScore)[0];\n }\n\n /**\n * Extract parameters using semantic analysis\n */\n async extractParameters(\n toolName: string,\n query: string,\n ): Promise<Record<string, any>> {\n const tool = this.tools.find((t) => t.name === toolName);\n if (!tool) return {};\n\n await this.initialize();\n const result: Record<string, any> = {};\n\n for (const [paramName, paramConfig] of Object.entries(tool.parameters)) {\n if (paramConfig.type === 'semantic_color') {\n result[paramName] = await extractSemanticColor(\n query,\n paramConfig,\n this.embedder,\n );\n } else if (paramConfig.type === 'extracted_content') {\n result[paramName] = await extractSemanticContent(query, this.embedder);\n } else if (paramConfig.type === 'semantic_category') {\n result[paramName] = await extractSemanticCategory(\n query,\n paramConfig,\n this.embedder,\n );\n }\n }\n\n return result;\n }\n\n /**\n * Execute function calling with confidence scoring\n */\n async execute(\n query: string,\n options: ExecutionOptions = {},\n ): Promise<ExecutionResult> {\n const opts = {\n gutInstinct: false,\n confidenceThreshold: this.config.defaultConfidenceThreshold,\n mode: 'standard' as const,\n verbose: this.config.verbose,\n ...options,\n };\n\n if (opts.verbose) {\n console.log('🔍 Semantic Function Calling Analysis:', {\n query,\n options: opts,\n });\n }\n\n // Multi-layer semantic matching\n const toolMatch = await this.findToolBySemanticLayers(query);\n\n if (opts.verbose) {\n console.log('📊 Tool Analysis:', {\n selectedTool: toolMatch.tool,\n confidence: `${(toolMatch.totalScore * 100).toFixed(1)}%`,\n reasoning: toolMatch.matches\n .slice(0, 3)\n .map(\n (m) => `${m.type}: \"${m.text}\" (${(m.score * 100).toFixed(1)}%)`,\n ),\n });\n }\n\n // Confidence checking (unless in first instinct mode)\n if (opts.mode !== 'first_instinct') {\n const threshold = opts.gutInstinct ? 0.1 : opts.confidenceThreshold!;\n\n if (toolMatch.totalScore < threshold) {\n if (opts.verbose) {\n console.log('❌ Confidence too low, not executing');\n }\n return {\n success: false,\n reason: 'Low confidence in tool selection',\n confidence: toolMatch.totalScore,\n };\n }\n\n if (opts.gutInstinct && toolMatch.totalScore < 0.25) {\n if (opts.verbose) {\n console.log(\n '🎯 Trusting model intuition despite low confidence score',\n );\n }\n }\n }\n\n // Extract parameters\n const parameters = await this.extractParameters(toolMatch.tool, query);\n\n if (opts.verbose) {\n console.log('🎯 Extracted Parameters:', parameters);\n }\n\n return {\n success: true,\n tool: toolMatch.tool,\n parameters,\n confidence: toolMatch.totalScore,\n reasoning: toolMatch.matches,\n mode: opts.mode,\n };\n }\n\n /**\n * Execute with first instinct mode (no confidence checking)\n */\n async executeFirstInstinct(query: string): Promise<ExecutionResult> {\n return this.execute(query, {\n mode: 'first_instinct',\n verbose: this.config.verbose,\n });\n }\n\n /**\n * Get cached embedding count (for monitoring)\n */\n getCacheSize(): number {\n return Object.keys(this.embeddingCache).length;\n }\n\n /**\n * Clear embedding cache\n */\n clearCache(): void {\n this.embeddingCache = {};\n }\n}\n","import { ParameterValueDatabase } from '../types';\n\n/**\n * Default parameter value database for common semantic types\n */\nexport const defaultParameterDatabase: ParameterValueDatabase = {\n colors: {\n basic: [\n 'red',\n 'blue',\n 'green',\n 'yellow',\n 'purple',\n 'orange',\n 'pink',\n 'brown',\n 'black',\n 'white',\n 'gray',\n ],\n extended: [\n 'crimson',\n 'navy',\n 'teal',\n 'coral',\n 'salmon',\n 'turquoise',\n 'indigo',\n 'violet',\n 'steelblue',\n 'lime',\n 'cyan',\n 'magenta',\n 'gold',\n 'silver',\n 'maroon',\n 'olive',\n 'aqua',\n ],\n modifiers: ['light', 'dark', 'bright', 'deep', 'pale', 'vivid', 'vibrant'],\n },\n emotions: [\n 'happy',\n 'sad',\n 'excited',\n 'calm',\n 'energetic',\n 'peaceful',\n 'angry',\n 'joyful',\n 'frustrated',\n 'content',\n 'anxious',\n 'relaxed',\n ],\n sizes: [\n 'tiny',\n 'small',\n 'medium',\n 'large',\n 'huge',\n 'massive',\n 'mini',\n 'big',\n 'little',\n 'enormous',\n 'gigantic',\n ],\n directions: [\n 'up',\n 'down',\n 'left',\n 'right',\n 'center',\n 'top',\n 'bottom',\n 'north',\n 'south',\n 'east',\n 'west',\n 'forward',\n 'backward',\n ],\n categories: [\n 'general',\n 'work',\n 'personal',\n 'ideas',\n 'tasks',\n 'reminders',\n 'meeting',\n 'project',\n 'research',\n 'thoughts',\n 'quotes',\n 'learning',\n 'goals',\n 'planning',\n 'shopping',\n 'health',\n ],\n numbers: [\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n 'ten',\n 'first',\n 'second',\n 'third',\n 'few',\n 'many',\n ],\n booleans: [\n 'yes',\n 'no',\n 'true',\n 'false',\n 'on',\n 'off',\n 'enable',\n 'disable',\n 'activate',\n 'deactivate',\n 'start',\n 'stop',\n 'begin',\n 'end',\n ],\n};\n\n/**\n * Merge custom parameter database with defaults\n */\nexport function mergeParameterDatabase(\n custom: Partial<ParameterValueDatabase>,\n): ParameterValueDatabase {\n return {\n ...defaultParameterDatabase,\n ...custom,\n colors: {\n ...defaultParameterDatabase.colors,\n ...custom.colors,\n },\n };\n}\n","/**\n * Homeschool - Teach AI to understand natural language like a patient tutor\n * Advanced embedding-based function calling with semantic understanding,\n * confidence scoring, and natural language parameter extraction\n */\n\n// Main class\nexport { SemanticFunctionCaller } from './core/semantic-function-caller';\n\n// Types\nexport type {\n Tool,\n ToolParameter,\n ToolMatch,\n ExecutionResult,\n ExecutionOptions,\n SemanticFunctionCallerConfig,\n EmbeddingCache,\n ParameterValueDatabase,\n} from './types';\n\n// Utilities\nexport {\n cosineSimilarity,\n batchCosineSimilarity,\n} from './utils/cosine-similarity';\nexport {\n defaultParameterDatabase,\n mergeParameterDatabase,\n} from './utils/parameter-database';\n\n// Extractors (for advanced usage)\nexport {\n extractSemanticColor,\n extractSemanticCategory,\n extractSemanticContent,\n} from './extractors';\n\n// Example tools for getting started\nimport type { Tool } from './types';\nexport const exampleTools: Tool[] = [\n {\n name: 'changeBackgroundColor',\n description: 'Changes the background color of the web page',\n contexts: [\n 'visual styling and appearance',\n 'color modification and theming',\n 'page aesthetics and design',\n ],\n intentPatterns: [\n 'user wants to modify visual appearance',\n 'user wants to change colors',\n 'user wants to style the page',\n ],\n parameters: {\n color: {\n type: 'semantic_color',\n semanticCandidates: [\n 'red',\n 'blue',\n 'green',\n 'yellow',\n 'purple',\n 'orange',\n 'pink',\n 'brown',\n 'black',\n 'white',\n 'gray',\n 'cyan',\n 'magenta',\n 'lime',\n 'navy',\n 'teal',\n 'silver',\n 'gold',\n 'coral',\n 'salmon',\n 'crimson',\n 'violet',\n 'indigo',\n 'turquoise',\n ],\n modifierCandidates: ['light', 'dark', 'bright', 'vibrant', 'pale'],\n fallback: 'blue',\n },\n },\n },\n {\n name: 'displayText',\n description: 'Shows a message or text to the user',\n contexts: [\n 'communication and messaging',\n 'information display and output',\n 'user interaction and feedback',\n ],\n intentPatterns: [\n 'user wants to show information',\n 'user wants to communicate a message',\n 'user wants to display content',\n ],\n parameters: {\n text: {\n type: 'extracted_content',\n extractionStrategy: 'semantic_content_isolation',\n },\n },\n },\n {\n name: 'takeNote',\n description: 'Saves a note or reminder for later reference',\n contexts: [\n 'note taking and memory',\n 'information storage and organization',\n 'personal productivity and planning',\n 'documentation and records',\n 'task management and reminders',\n ],\n intentPatterns: [\n 'user wants to remember something',\n 'user wants to save information',\n 'user wants to record a thought',\n 'user wants to jot down details',\n 'user wants to make a reminder',\n 'user wants to take notes',\n ],\n parameters: {\n note: {\n type: 'extracted_content',\n extractionStrategy: 'semantic_content_isolation',\n },\n category: {\n type: 'semantic_category',\n semanticCandidates: [\n 'general',\n 'work',\n 'personal',\n 'ideas',\n 'tasks',\n 'reminders',\n 'meeting',\n 'project',\n 'research',\n 'thoughts',\n 'quotes',\n 'learning',\n 'goals',\n 'planning',\n ],\n fallback: 'general',\n },\n },\n },\n];\n\n// Version info\nexport const version = '0.1.0';\n"],"names":[],"mappings":"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"}