feat(llm): remove LLM deprecated functions

This commit is contained in:
perf3ct 2025-06-05 22:34:20 +00:00
parent 3a4bb47cc1
commit c26b74495c
No known key found for this signature in database
GPG Key ID: 569C4EEC436F5232
14 changed files with 25 additions and 101 deletions

View File

@ -408,7 +408,7 @@ async function reprocessAllNotes(req: Request, res: Response) {
try { try {
// Wrap the operation in cls.init to ensure proper context // Wrap the operation in cls.init to ensure proper context
cls.init(async () => { cls.init(async () => {
await vectorStore.reprocessAllNotes(); await indexService.reprocessAllNotes();
log.info("Embedding reprocessing completed successfully"); log.info("Embedding reprocessing completed successfully");
}); });
} catch (error: any) { } catch (error: any) {

View File

@ -512,7 +512,7 @@ export class AIServiceManager implements IAIServiceManager {
if (!contextNotes || contextNotes.length === 0) { if (!contextNotes || contextNotes.length === 0) {
try { try {
// Get the default LLM service for context enhancement // Get the default LLM service for context enhancement
const provider = this.getPreferredProvider(); const provider = this.getSelectedProvider();
const llmService = await this.getService(provider); const llmService = await this.getService(provider);
// Find relevant notes // Find relevant notes
@ -596,9 +596,9 @@ export class AIServiceManager implements IAIServiceManager {
} }
/** /**
* Get the preferred provider based on configuration (sync version for compatibility) * Get the selected provider based on configuration (sync version for compatibility)
*/ */
getPreferredProvider(): string { getSelectedProvider(): string {
this.ensureInitialized(); this.ensureInitialized();
// Return the first available provider in the order // Return the first available provider in the order
@ -803,8 +803,8 @@ export default {
async getService(provider?: string): Promise<AIService> { async getService(provider?: string): Promise<AIService> {
return getInstance().getService(provider); return getInstance().getService(provider);
}, },
getPreferredProvider(): string { getSelectedProvider(): string {
return getInstance().getPreferredProvider(); return getInstance().getSelectedProvider();
}, },
isProviderAvailable(provider: string): boolean { isProviderAvailable(provider: string): boolean {
return getInstance().isProviderAvailable(provider); return getInstance().isProviderAvailable(provider);

View File

@ -14,7 +14,7 @@ import type { LLMStreamMessage } from "../interfaces/chat_ws_messages.js";
import chatStorageService from '../chat_storage_service.js'; import chatStorageService from '../chat_storage_service.js';
import { import {
isAIEnabled, isAIEnabled,
getFirstValidModelConfig, getSelectedModelConfig,
} from '../config/configuration_helpers.js'; } from '../config/configuration_helpers.js';
/** /**
@ -419,7 +419,7 @@ class RestChatService {
*/ */
async getPreferredModel(): Promise<string | undefined> { async getPreferredModel(): Promise<string | undefined> {
try { try {
const validConfig = await getFirstValidModelConfig(); const validConfig = await getSelectedModelConfig();
if (!validConfig) { if (!validConfig) {
log.error('No valid AI model configuration found'); log.error('No valid AI model configuration found');
return undefined; return undefined;

View File

@ -150,47 +150,3 @@ export async function getSelectedModelConfig(): Promise<{ model: string; provide
return await getValidModelConfig(selectedProvider); return await getValidModelConfig(selectedProvider);
} }
// Legacy support functions - these maintain backwards compatibility but now use single provider logic
/**
* @deprecated Use getSelectedProvider() instead
*/
export async function getProviderPrecedence(): Promise<ProviderType[]> {
const selected = await getSelectedProvider();
return selected ? [selected] : [];
}
/**
* @deprecated Use getSelectedProvider() instead
*/
export async function getPreferredProvider(): Promise<ProviderType | null> {
return await getSelectedProvider();
}
/**
* @deprecated Use getSelectedEmbeddingProvider() instead
*/
export async function getEmbeddingProviderPrecedence(): Promise<string[]> {
const selected = await getSelectedEmbeddingProvider();
return selected ? [selected] : [];
}
/**
* @deprecated Use getSelectedEmbeddingProvider() instead
*/
export async function getPreferredEmbeddingProvider(): Promise<string | null> {
return await getSelectedEmbeddingProvider();
}
/**
* @deprecated Use getAvailableSelectedProvider() instead
*/
export async function getFirstAvailableProvider(): Promise<ProviderType | null> {
return await getAvailableSelectedProvider();
}
/**
* @deprecated Use getSelectedModelConfig() instead
*/
export async function getFirstValidModelConfig(): Promise<{ model: string; provider: ProviderType } | null> {
return await getSelectedModelConfig();
}

View File

@ -1,6 +1,6 @@
import log from '../../../log.js'; import log from '../../../log.js';
import { getEmbeddingProvider, getEnabledEmbeddingProviders } from '../../providers/providers.js'; import { getEmbeddingProvider, getEnabledEmbeddingProviders } from '../../providers/providers.js';
import { getSelectedEmbeddingProvider } from '../../config/configuration_helpers.js'; import { getSelectedEmbeddingProvider as getSelectedEmbeddingProviderName } from '../../config/configuration_helpers.js';
/** /**
* Manages embedding providers for context services * Manages embedding providers for context services
@ -12,10 +12,10 @@ export class ProviderManager {
* *
* @returns The selected embedding provider or null if none available * @returns The selected embedding provider or null if none available
*/ */
async getPreferredEmbeddingProvider(): Promise<any> { async getSelectedEmbeddingProvider(): Promise<any> {
try { try {
// Get the selected embedding provider // Get the selected embedding provider
const selectedProvider = await getSelectedEmbeddingProvider(); const selectedProvider = await getSelectedEmbeddingProviderName();
if (selectedProvider) { if (selectedProvider) {
const provider = await getEmbeddingProvider(selectedProvider); const provider = await getEmbeddingProvider(selectedProvider);
@ -51,7 +51,7 @@ export class ProviderManager {
async generateQueryEmbedding(query: string): Promise<Float32Array | null> { async generateQueryEmbedding(query: string): Promise<Float32Array | null> {
try { try {
// Get the preferred embedding provider // Get the preferred embedding provider
const provider = await this.getPreferredEmbeddingProvider(); const provider = await this.getSelectedEmbeddingProvider();
if (!provider) { if (!provider) {
log.error('No embedding provider available'); log.error('No embedding provider available');
return null; return null;

View File

@ -58,7 +58,7 @@ export class ContextService {
this.initPromise = (async () => { this.initPromise = (async () => {
try { try {
// Initialize provider // Initialize provider
const provider = await providerManager.getPreferredEmbeddingProvider(); const provider = await providerManager.getSelectedEmbeddingProvider();
if (!provider) { if (!provider) {
throw new Error(`No embedding provider available. Could not initialize context service.`); throw new Error(`No embedding provider available. Could not initialize context service.`);
} }
@ -224,7 +224,7 @@ export class ContextService {
log.info(`Final combined results: ${relevantNotes.length} relevant notes`); log.info(`Final combined results: ${relevantNotes.length} relevant notes`);
// Step 4: Build context from the notes // Step 4: Build context from the notes
const provider = await providerManager.getPreferredEmbeddingProvider(); const provider = await providerManager.getSelectedEmbeddingProvider();
const providerId = provider?.name || 'default'; const providerId = provider?.name || 'default';
const context = await contextFormatter.buildContextFromNotes( const context = await contextFormatter.buildContextFromNotes(

View File

@ -79,7 +79,7 @@ export class VectorSearchService {
} }
// Get provider information // Get provider information
const provider = await providerManager.getPreferredEmbeddingProvider(); const provider = await providerManager.getSelectedEmbeddingProvider();
if (!provider) { if (!provider) {
log.error('No embedding provider available'); log.error('No embedding provider available');
return []; return [];
@ -280,7 +280,7 @@ export class VectorSearchService {
} }
// Get provider information // Get provider information
const provider = await providerManager.getPreferredEmbeddingProvider(); const provider = await providerManager.getSelectedEmbeddingProvider();
if (!provider) { if (!provider) {
log.error('No embedding provider available'); log.error('No embedding provider available');
return []; return [];

View File

@ -64,8 +64,6 @@ export const {
export const { export const {
getEmbeddingStats, getEmbeddingStats,
reprocessAllNotes,
queueNotesForMissingEmbeddings,
cleanupEmbeddings cleanupEmbeddings
} = stats; } = stats;
@ -107,8 +105,6 @@ export default {
// Stats and maintenance // Stats and maintenance
getEmbeddingStats: stats.getEmbeddingStats, getEmbeddingStats: stats.getEmbeddingStats,
reprocessAllNotes: stats.reprocessAllNotes,
queueNotesForMissingEmbeddings: stats.queueNotesForMissingEmbeddings,
cleanupEmbeddings: stats.cleanupEmbeddings, cleanupEmbeddings: stats.cleanupEmbeddings,
// Index operations // Index operations

View File

@ -1,14 +1,5 @@
import sql from "../../../services/sql.js"; import sql from "../../../services/sql.js";
import log from "../../../services/log.js"; import log from "../../../services/log.js";
import indexService from '../index_service.js';
/**
* Reprocess all notes to update embeddings
* @deprecated Use indexService.reprocessAllNotes() directly instead
*/
export async function reprocessAllNotes() {
return indexService.reprocessAllNotes();
}
/** /**
* Get current embedding statistics * Get current embedding statistics
@ -64,14 +55,6 @@ export async function getEmbeddingStats() {
}; };
} }
/**
* Queue notes that don't have embeddings for current provider settings
* @deprecated Use indexService.queueNotesForMissingEmbeddings() directly instead
*/
export async function queueNotesForMissingEmbeddings() {
return indexService.queueNotesForMissingEmbeddings();
}
/** /**
* Cleanup function to remove stale or unused embeddings * Cleanup function to remove stale or unused embeddings
*/ */

View File

@ -11,7 +11,7 @@ import { SEARCH_CONSTANTS } from '../constants/search_constants.js';
import type { NoteEmbeddingContext } from "./embeddings_interface.js"; import type { NoteEmbeddingContext } from "./embeddings_interface.js";
import becca from "../../../becca/becca.js"; import becca from "../../../becca/becca.js";
import { isNoteExcludedFromAIById } from "../utils/ai_exclusion_utils.js"; import { isNoteExcludedFromAIById } from "../utils/ai_exclusion_utils.js";
import { getEmbeddingProviderPrecedence } from '../config/configuration_helpers.js'; import { getSelectedEmbeddingProvider } from '../config/configuration_helpers.js';
interface Similarity { interface Similarity {
noteId: string; noteId: string;
@ -277,9 +277,10 @@ export async function findSimilarNotes(
log.info('No embeddings found for specified provider, trying fallback providers...'); log.info('No embeddings found for specified provider, trying fallback providers...');
// Use the new configuration system - no string parsing! // Use the new configuration system - no string parsing!
const preferredProviders = await getEmbeddingProviderPrecedence(); const selectedProvider = await getSelectedEmbeddingProvider();
const preferredProviders = selectedProvider ? [selectedProvider] : [];
log.info(`Using provider precedence: ${preferredProviders.join(', ')}`); log.info(`Using selected provider: ${selectedProvider || 'none'}`);
// Try providers in precedence order // Try providers in precedence order
for (const provider of preferredProviders) { for (const provider of preferredProviders) {

View File

@ -266,7 +266,7 @@ export class IndexService {
this.indexRebuildTotal = totalNotes; this.indexRebuildTotal = totalNotes;
log.info("No embeddings found, starting full embedding generation first"); log.info("No embeddings found, starting full embedding generation first");
await vectorStore.reprocessAllNotes(); await this.reprocessAllNotes();
log.info("Full embedding generation initiated"); log.info("Full embedding generation initiated");
} else { } else {
// For index rebuild, use the number of embeddings as the total // For index rebuild, use the number of embeddings as the total
@ -293,7 +293,7 @@ export class IndexService {
// Only start indexing if we're below 90% completion or if embeddings exist but need optimization // Only start indexing if we're below 90% completion or if embeddings exist but need optimization
if (stats.percentComplete < 90) { if (stats.percentComplete < 90) {
log.info("Embedding coverage below 90%, starting full embedding generation"); log.info("Embedding coverage below 90%, starting full embedding generation");
await vectorStore.reprocessAllNotes(); await this.reprocessAllNotes();
log.info("Full embedding generation initiated"); log.info("Full embedding generation initiated");
} else { } else {
log.info(`Embedding coverage at ${stats.percentComplete}%, starting index optimization`); log.info(`Embedding coverage at ${stats.percentComplete}%, starting index optimization`);

View File

@ -30,7 +30,7 @@ export interface AIServiceManagerConfig {
export interface IAIServiceManager { export interface IAIServiceManager {
getService(provider?: string): Promise<AIService>; getService(provider?: string): Promise<AIService>;
getAvailableProviders(): string[]; getAvailableProviders(): string[];
getPreferredProvider(): string; getSelectedProvider(): string;
isProviderAvailable(provider: string): boolean; isProviderAvailable(provider: string): boolean;
getProviderMetadata(provider: string): ProviderMetadata | null; getProviderMetadata(provider: string): ProviderMetadata | null;
getAIEnabled(): boolean; getAIEnabled(): boolean;

View File

@ -50,7 +50,7 @@ export class SemanticContextExtractionStage extends BasePipelineStage<SemanticCo
} }
// Step 2: Format search results into a context string // Step 2: Format search results into a context string
const provider = await providerManager.getPreferredEmbeddingProvider(); const provider = await providerManager.getSelectedEmbeddingProvider();
const providerId = provider?.name || 'default'; const providerId = provider?.name || 'default';
const context = await contextFormatter.buildContextFromNotes( const context = await contextFormatter.buildContextFromNotes(

View File

@ -328,17 +328,6 @@ export async function getEmbeddingProviderConfigs() {
return await sql.getRows("SELECT * FROM embedding_providers ORDER BY priority DESC"); return await sql.getRows("SELECT * FROM embedding_providers ORDER BY priority DESC");
} }
/**
* Initialize the default embedding providers
* @deprecated - Use on-demand provider creation instead
*/
export async function initializeDefaultProviders() {
// This function is now deprecated in favor of on-demand provider creation
// The createProvidersFromCurrentOptions() function should be used instead
log.info('initializeDefaultProviders called - using on-demand provider creation instead');
return await createProvidersFromCurrentOptions();
}
export default { export default {
registerEmbeddingProvider, registerEmbeddingProvider,
unregisterEmbeddingProvider, unregisterEmbeddingProvider,
@ -350,8 +339,7 @@ export default {
createEmbeddingProviderConfig, createEmbeddingProviderConfig,
updateEmbeddingProviderConfig, updateEmbeddingProviderConfig,
deleteEmbeddingProviderConfig, deleteEmbeddingProviderConfig,
getEmbeddingProviderConfigs, getEmbeddingProviderConfigs
initializeDefaultProviders
}; };
/** /**