UNPKG

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.

162 lines (154 loc) 4.7 kB
/** * Core types for semantic function calling */ interface ToolParameter { type: 'semantic_color' | 'extracted_content' | 'semantic_category' | 'semantic_number' | 'semantic_boolean'; semanticCandidates?: string[]; modifierCandidates?: string[]; fallback?: any; extractionStrategy?: string; description?: string; } interface Tool { name: string; description: string; contexts: string[]; intentPatterns: string[]; parameters: Record<string, ToolParameter>; examples?: string[]; } interface ToolMatch { tool: string; totalScore: number; matches: Array<{ type: 'intent' | 'context' | 'description'; text: string; score: number; }>; } interface ExecutionResult { success: boolean; tool?: string; parameters?: Record<string, any>; confidence?: number; reasoning?: Array<{ type: string; text: string; score: number; }>; mode?: 'standard' | 'first_instinct'; reason?: string; } interface ExecutionOptions { gutInstinct?: boolean; confidenceThreshold?: number; mode?: 'standard' | 'first_instinct'; verbose?: boolean; } interface SemanticFunctionCallerConfig { embeddingModel?: string; defaultConfidenceThreshold?: number; enableCaching?: boolean; verbose?: boolean; } interface EmbeddingCache { [key: string]: Float32Array; } interface ParameterValueDatabase { colors: { basic: string[]; extended: string[]; modifiers: string[]; }; emotions: string[]; sizes: string[]; directions: string[]; [category: string]: any; } /** * Main class for semantic function calling */ declare class SemanticFunctionCaller { private embedder; private tools; private config; private embeddingCache; constructor(config?: SemanticFunctionCallerConfig); /** * Initialize the embedding model */ initialize(): Promise<void>; /** * Register tools for function calling */ registerTools(tools: Tool[]): void; /** * Clear all registered tools */ clearTools(): void; /** * Get embedding with caching */ private getEmbedding; /** * Find the best tool match using multi-layer semantic analysis */ findToolBySemanticLayers(query: string): Promise<ToolMatch>; /** * Extract parameters using semantic analysis */ extractParameters(toolName: string, query: string): Promise<Record<string, any>>; /** * Execute function calling with confidence scoring */ execute(query: string, options?: ExecutionOptions): Promise<ExecutionResult>; /** * Execute with first instinct mode (no confidence checking) */ executeFirstInstinct(query: string): Promise<ExecutionResult>; /** * Get cached embedding count (for monitoring) */ getCacheSize(): number; /** * Clear embedding cache */ clearCache(): void; } /** * Cosine similarity utility with safety checks */ declare function cosineSimilarity(a: number[], b: number[]): number; /** * Batch cosine similarity calculation for efficiency */ declare function batchCosineSimilarity(query: number[], vectors: number[][]): number[]; /** * Default parameter value database for common semantic types */ declare const defaultParameterDatabase: ParameterValueDatabase; /** * Merge custom parameter database with defaults */ declare function mergeParameterDatabase(custom: Partial<ParameterValueDatabase>): ParameterValueDatabase; /** * Semantic color extraction using embeddings */ declare function extractSemanticColor(query: string, config: ToolParameter, embedder: any): Promise<string>; /** * Semantic category extraction using embeddings */ declare function extractSemanticCategory(query: string, config: ToolParameter, embedder: any): Promise<string>; /** * Content isolation using semantic boundaries */ declare function extractSemanticContent(query: string, embedder: any): Promise<string>; /** * Homeschool - 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 */ declare const exampleTools: Tool[]; declare const version = "0.1.0"; export { SemanticFunctionCaller, batchCosineSimilarity, cosineSimilarity, defaultParameterDatabase, exampleTools, extractSemanticCategory, extractSemanticColor, extractSemanticContent, mergeParameterDatabase, version }; export type { EmbeddingCache, ExecutionOptions, ExecutionResult, ParameterValueDatabase, SemanticFunctionCallerConfig, Tool, ToolMatch, ToolParameter };