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
TypeScript
/**
* 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 };