From c53a66be2303e6ac7c43cb44af3fd5c9b253d01a Mon Sep 17 00:00:00 2001 From: perf3ct Date: Sun, 6 Apr 2025 16:00:00 +0000 Subject: [PATCH] maybe ? --- .../llm/context/modules/semantic_search.ts | 4 +- .../pipeline/stages/model_selection_stage.ts | 59 ++++++++++++------- 2 files changed, 41 insertions(+), 22 deletions(-) diff --git a/src/services/llm/context/modules/semantic_search.ts b/src/services/llm/context/modules/semantic_search.ts index 88a4e5e4d..eadca0687 100644 --- a/src/services/llm/context/modules/semantic_search.ts +++ b/src/services/llm/context/modules/semantic_search.ts @@ -31,7 +31,7 @@ export class SemanticSearch { const cacheKey = `rank:${userQuery}:${notes.map(n => n.noteId).join(',')}`; const cached = cacheManager.getNoteData('', cacheKey); if (cached) { - return cached; + return cached as Array<{noteId: string, title: string, relevance: number}>; } const queryEmbedding = await providerManager.generateQueryEmbedding(userQuery); @@ -122,7 +122,7 @@ export class SemanticSearch { const cacheKey = `find:${query}:${contextNoteId || 'all'}:${limit}`; const cached = cacheManager.getQueryResults(cacheKey); if (cached) { - return cached; + return cached as Array<{noteId: string, title: string, content: string | null, similarity: number}>; } // Get embedding for query diff --git a/src/services/llm/pipeline/stages/model_selection_stage.ts b/src/services/llm/pipeline/stages/model_selection_stage.ts index 3514b8e47..9c47a17af 100644 --- a/src/services/llm/pipeline/stages/model_selection_stage.ts +++ b/src/services/llm/pipeline/stages/model_selection_stage.ts @@ -3,7 +3,6 @@ import type { ModelSelectionInput } from '../interfaces.js'; import type { ChatCompletionOptions } from '../../ai_interface.js'; import log from '../../../log.js'; import options from '../../../options.js'; - /** * Pipeline stage for selecting the appropriate LLM model */ @@ -11,7 +10,6 @@ export class ModelSelectionStage extends BasePipelineStage p.trim()); + } else if (providerPrecedence.startsWith('[') && providerPrecedence.endsWith(']')) { + providers = JSON.parse(providerPrecedence); + } else { + providers = [providerPrecedence]; + } + + // Check for first available provider + if (providers.length > 0) { + const firstProvider = providers[0]; + + // Get provider-specific default model + if (firstProvider === 'openai') { + const model = await options.getOption('openaiDefaultModel'); + if (model) defaultModel = `openai:${model}`; + } else if (firstProvider === 'anthropic') { + const model = await options.getOption('anthropicDefaultModel'); + if (model) defaultModel = `anthropic:${model}`; + } else if (firstProvider === 'ollama') { + const model = await options.getOption('ollamaDefaultModel'); + if (model) defaultModel = `ollama:${model}`; + } + } + } + } catch (error) { + // If any error occurs, use the fallback default + log.error(`Error determining default model: ${error}`); + } // Determine query complexity let queryComplexity = 'low'; @@ -56,22 +90,7 @@ export class ModelSelectionStage extends BasePipelineStage 10000 ? 'high' : 'medium'; } - // Select model based on complexity - if (queryComplexity === 'high') { - // Use more powerful model for complex queries - const advancedModel = await options.getOption('aiAdvancedModel') || 'openai:gpt-4-turbo'; - updatedOptions.model = advancedModel; - // May also increase context window and reduce temperature for complex tasks - if (!updatedOptions.temperature) updatedOptions.temperature = 0.3; - } else if (queryComplexity === 'medium') { - // Use standard model with moderate settings - updatedOptions.model = defaultModel; - if (!updatedOptions.temperature) updatedOptions.temperature = 0.5; - } else { - // Use default model with standard settings for simple queries - updatedOptions.model = defaultModel; - if (!updatedOptions.temperature) updatedOptions.temperature = 0.7; - } + updatedOptions.model = defaultModel; log.info(`Selected model: ${updatedOptions.model} for query complexity: ${queryComplexity}`); return { options: updatedOptions };