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 {
// Wrap the operation in cls.init to ensure proper context
cls.init(async () => {
await vectorStore.reprocessAllNotes();
await indexService.reprocessAllNotes();
log.info("Embedding reprocessing completed successfully");
});
} catch (error: any) {

View File

@ -512,7 +512,7 @@ export class AIServiceManager implements IAIServiceManager {
if (!contextNotes || contextNotes.length === 0) {
try {
// Get the default LLM service for context enhancement
const provider = this.getPreferredProvider();
const provider = this.getSelectedProvider();
const llmService = await this.getService(provider);
// 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();
// Return the first available provider in the order
@ -803,8 +803,8 @@ export default {
async getService(provider?: string): Promise<AIService> {
return getInstance().getService(provider);
},
getPreferredProvider(): string {
return getInstance().getPreferredProvider();
getSelectedProvider(): string {
return getInstance().getSelectedProvider();
},
isProviderAvailable(provider: string): boolean {
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 {
isAIEnabled,
getFirstValidModelConfig,
getSelectedModelConfig,
} from '../config/configuration_helpers.js';
/**
@ -419,7 +419,7 @@ class RestChatService {
*/
async getPreferredModel(): Promise<string | undefined> {
try {
const validConfig = await getFirstValidModelConfig();
const validConfig = await getSelectedModelConfig();
if (!validConfig) {
log.error('No valid AI model configuration found');
return undefined;

View File

@ -150,47 +150,3 @@ export async function getSelectedModelConfig(): Promise<{ model: string; provide
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 { 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
@ -12,10 +12,10 @@ export class ProviderManager {
*
* @returns The selected embedding provider or null if none available
*/
async getPreferredEmbeddingProvider(): Promise<any> {
async getSelectedEmbeddingProvider(): Promise<any> {
try {
// Get the selected embedding provider
const selectedProvider = await getSelectedEmbeddingProvider();
const selectedProvider = await getSelectedEmbeddingProviderName();
if (selectedProvider) {
const provider = await getEmbeddingProvider(selectedProvider);
@ -51,7 +51,7 @@ export class ProviderManager {
async generateQueryEmbedding(query: string): Promise<Float32Array | null> {
try {
// Get the preferred embedding provider
const provider = await this.getPreferredEmbeddingProvider();
const provider = await this.getSelectedEmbeddingProvider();
if (!provider) {
log.error('No embedding provider available');
return null;

View File

@ -58,7 +58,7 @@ export class ContextService {
this.initPromise = (async () => {
try {
// Initialize provider
const provider = await providerManager.getPreferredEmbeddingProvider();
const provider = await providerManager.getSelectedEmbeddingProvider();
if (!provider) {
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`);
// Step 4: Build context from the notes
const provider = await providerManager.getPreferredEmbeddingProvider();
const provider = await providerManager.getSelectedEmbeddingProvider();
const providerId = provider?.name || 'default';
const context = await contextFormatter.buildContextFromNotes(

View File

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

View File

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

View File

@ -1,14 +1,5 @@
import sql from "../../../services/sql.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
@ -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
*/

View File

@ -11,7 +11,7 @@ import { SEARCH_CONSTANTS } from '../constants/search_constants.js';
import type { NoteEmbeddingContext } from "./embeddings_interface.js";
import becca from "../../../becca/becca.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 {
noteId: string;
@ -277,9 +277,10 @@ export async function findSimilarNotes(
log.info('No embeddings found for specified provider, trying fallback providers...');
// 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
for (const provider of preferredProviders) {

View File

@ -266,7 +266,7 @@ export class IndexService {
this.indexRebuildTotal = totalNotes;
log.info("No embeddings found, starting full embedding generation first");
await vectorStore.reprocessAllNotes();
await this.reprocessAllNotes();
log.info("Full embedding generation initiated");
} else {
// 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
if (stats.percentComplete < 90) {
log.info("Embedding coverage below 90%, starting full embedding generation");
await vectorStore.reprocessAllNotes();
await this.reprocessAllNotes();
log.info("Full embedding generation initiated");
} else {
log.info(`Embedding coverage at ${stats.percentComplete}%, starting index optimization`);

View File

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

View File

@ -50,7 +50,7 @@ export class SemanticContextExtractionStage extends BasePipelineStage<SemanticCo
}
// 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 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");
}
/**
* 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 {
registerEmbeddingProvider,
unregisterEmbeddingProvider,
@ -350,8 +339,7 @@ export default {
createEmbeddingProviderConfig,
updateEmbeddingProviderConfig,
deleteEmbeddingProviderConfig,
getEmbeddingProviderConfigs,
initializeDefaultProviders
getEmbeddingProviderConfigs
};
/**