mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	allow specifying openai embedding models too
This commit is contained in:
		
							parent
							
								
									6d146c2f49
								
							
						
					
					
						commit
						d95fd0b049
					
				@ -160,6 +160,16 @@ export default class AiSettingsWidget extends OptionsWidget {
 | 
				
			|||||||
                            <input class="openai-base-url form-control" type="text">
 | 
					                            <input class="openai-base-url form-control" type="text">
 | 
				
			||||||
                            <div class="form-text">${t("ai_llm.openai_url_description")}</div>
 | 
					                            <div class="form-text">${t("ai_llm.openai_url_description")}</div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        <div class="form-group">
 | 
				
			||||||
 | 
					                            <label>${t("ai_llm.embedding_model")}</label>
 | 
				
			||||||
 | 
					                            <select class="openai-embedding-model form-control">
 | 
				
			||||||
 | 
					                                <option value="text-embedding-3-small">text-embedding-3-small (recommended)</option>
 | 
				
			||||||
 | 
					                                <option value="text-embedding-3-large">text-embedding-3-large</option>
 | 
				
			||||||
 | 
					                                <option value="text-embedding-ada-002">text-embedding-ada-002 (legacy)</option>
 | 
				
			||||||
 | 
					                            </select>
 | 
				
			||||||
 | 
					                            <div class="form-text">${t("ai_llm.openai_embedding_model_description")}</div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
                <div class="tab-pane fade" id="nav-anthropic" role="tabpanel" aria-labelledby="nav-anthropic-tab">
 | 
					                <div class="tab-pane fade" id="nav-anthropic" role="tabpanel" aria-labelledby="nav-anthropic-tab">
 | 
				
			||||||
@ -374,6 +384,11 @@ export default class AiSettingsWidget extends OptionsWidget {
 | 
				
			|||||||
            await this.updateOption('openaiDefaultModel', $openaiDefaultModel.val() as string);
 | 
					            await this.updateOption('openaiDefaultModel', $openaiDefaultModel.val() as string);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const $openaiEmbeddingModel = this.$widget.find('.openai-embedding-model');
 | 
				
			||||||
 | 
					        $openaiEmbeddingModel.on('change', async () => {
 | 
				
			||||||
 | 
					            await this.updateOption('openaiEmbeddingModel', $openaiEmbeddingModel.val() as string);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const $openaiBaseUrl = this.$widget.find('.openai-base-url');
 | 
					        const $openaiBaseUrl = this.$widget.find('.openai-base-url');
 | 
				
			||||||
        $openaiBaseUrl.on('change', async () => {
 | 
					        $openaiBaseUrl.on('change', async () => {
 | 
				
			||||||
            await this.updateOption('openaiBaseUrl', $openaiBaseUrl.val() as string);
 | 
					            await this.updateOption('openaiBaseUrl', $openaiBaseUrl.val() as string);
 | 
				
			||||||
@ -575,11 +590,12 @@ export default class AiSettingsWidget extends OptionsWidget {
 | 
				
			|||||||
        this.setCheckboxState(this.$widget.find('.ollama-enabled'), options.ollamaEnabled || 'false');
 | 
					        this.setCheckboxState(this.$widget.find('.ollama-enabled'), options.ollamaEnabled || 'false');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.$widget.find('.ai-provider-precedence').val(options.aiProviderPrecedence || 'openai,anthropic,ollama');
 | 
					        this.$widget.find('.ai-provider-precedence').val(options.aiProviderPrecedence || 'openai,anthropic,ollama');
 | 
				
			||||||
        this.$widget.find('.ai-temperature').val(options.aiTemperature || '0.7');
 | 
					 | 
				
			||||||
        this.$widget.find('.ai-system-prompt').val(options.aiSystemPrompt || '');
 | 
					        this.$widget.find('.ai-system-prompt').val(options.aiSystemPrompt || '');
 | 
				
			||||||
 | 
					        this.$widget.find('.ai-temperature').val(options.aiTemperature || '0.7');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.$widget.find('.openai-api-key').val(options.openaiApiKey || '');
 | 
					        this.$widget.find('.openai-api-key').val(options.openaiApiKey || '');
 | 
				
			||||||
        this.$widget.find('.openai-default-model').val(options.openaiDefaultModel || 'gpt-4o');
 | 
					        this.$widget.find('.openai-default-model').val(options.openaiDefaultModel || 'gpt-4o');
 | 
				
			||||||
 | 
					        this.$widget.find('.openai-embedding-model').val(options.openaiEmbeddingModel || 'text-embedding-3-small');
 | 
				
			||||||
        this.$widget.find('.openai-base-url').val(options.openaiBaseUrl || 'https://api.openai.com/v1');
 | 
					        this.$widget.find('.openai-base-url').val(options.openaiBaseUrl || 'https://api.openai.com/v1');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.$widget.find('.anthropic-api-key').val(options.anthropicApiKey || '');
 | 
					        this.$widget.find('.anthropic-api-key').val(options.anthropicApiKey || '');
 | 
				
			||||||
 | 
				
			|||||||
@ -83,6 +83,7 @@ const ALLOWED_OPTIONS = new Set([
 | 
				
			|||||||
    "aiEnabled",
 | 
					    "aiEnabled",
 | 
				
			||||||
    "openaiApiKey",
 | 
					    "openaiApiKey",
 | 
				
			||||||
    "openaiDefaultModel",
 | 
					    "openaiDefaultModel",
 | 
				
			||||||
 | 
					    "openaiEmbeddingModel",
 | 
				
			||||||
    "openaiBaseUrl",
 | 
					    "openaiBaseUrl",
 | 
				
			||||||
    "anthropicApiKey",
 | 
					    "anthropicApiKey",
 | 
				
			||||||
    "anthropicDefaultModel",
 | 
					    "anthropicDefaultModel",
 | 
				
			||||||
 | 
				
			|||||||
@ -224,7 +224,7 @@ export async function initializeDefaultProviders() {
 | 
				
			|||||||
        // Register OpenAI provider if API key is configured
 | 
					        // Register OpenAI provider if API key is configured
 | 
				
			||||||
        const openaiApiKey = await options.getOption('openaiApiKey');
 | 
					        const openaiApiKey = await options.getOption('openaiApiKey');
 | 
				
			||||||
        if (openaiApiKey) {
 | 
					        if (openaiApiKey) {
 | 
				
			||||||
            const openaiModel = await options.getOption('openaiDefaultModel') || 'text-embedding-3-small';
 | 
					            const openaiModel = await options.getOption('openaiEmbeddingModel') || 'text-embedding-3-small';
 | 
				
			||||||
            const openaiBaseUrl = await options.getOption('openaiBaseUrl') || 'https://api.openai.com/v1';
 | 
					            const openaiBaseUrl = await options.getOption('openaiBaseUrl') || 'https://api.openai.com/v1';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            registerEmbeddingProvider(new OpenAIEmbeddingProvider({
 | 
					            registerEmbeddingProvider(new OpenAIEmbeddingProvider({
 | 
				
			||||||
 | 
				
			|||||||
@ -172,6 +172,7 @@ const defaultOptions: DefaultOption[] = [
 | 
				
			|||||||
    { name: "aiEnabled", value: "false", isSynced: true },
 | 
					    { name: "aiEnabled", value: "false", isSynced: true },
 | 
				
			||||||
    { name: "openaiApiKey", value: "", isSynced: false },
 | 
					    { name: "openaiApiKey", value: "", isSynced: false },
 | 
				
			||||||
    { name: "openaiDefaultModel", value: "gpt-4o", isSynced: true },
 | 
					    { name: "openaiDefaultModel", value: "gpt-4o", isSynced: true },
 | 
				
			||||||
 | 
					    { name: "openaiEmbeddingModel", value: "text-embedding-3-small", isSynced: true },
 | 
				
			||||||
    { name: "openaiBaseUrl", value: "https://api.openai.com/v1", isSynced: true },
 | 
					    { name: "openaiBaseUrl", value: "https://api.openai.com/v1", isSynced: true },
 | 
				
			||||||
    { name: "anthropicApiKey", value: "", isSynced: false },
 | 
					    { name: "anthropicApiKey", value: "", isSynced: false },
 | 
				
			||||||
    { name: "anthropicDefaultModel", value: "claude-3-opus-20240229", isSynced: true },
 | 
					    { name: "anthropicDefaultModel", value: "claude-3-opus-20240229", isSynced: true },
 | 
				
			||||||
 | 
				
			|||||||
@ -48,8 +48,12 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // AI/LLM integration options
 | 
					    // AI/LLM integration options
 | 
				
			||||||
    aiEnabled: boolean;
 | 
					    aiEnabled: boolean;
 | 
				
			||||||
 | 
					    aiProvider: string;
 | 
				
			||||||
 | 
					    aiSystemPrompt: string;
 | 
				
			||||||
 | 
					    aiTemperature: string;
 | 
				
			||||||
    openaiApiKey: string;
 | 
					    openaiApiKey: string;
 | 
				
			||||||
    openaiDefaultModel: string;
 | 
					    openaiDefaultModel: string;
 | 
				
			||||||
 | 
					    openaiEmbeddingModel: string;
 | 
				
			||||||
    openaiBaseUrl: string;
 | 
					    openaiBaseUrl: string;
 | 
				
			||||||
    anthropicApiKey: string;
 | 
					    anthropicApiKey: string;
 | 
				
			||||||
    anthropicDefaultModel: string;
 | 
					    anthropicDefaultModel: string;
 | 
				
			||||||
@ -58,9 +62,8 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActi
 | 
				
			|||||||
    ollamaBaseUrl: string;
 | 
					    ollamaBaseUrl: string;
 | 
				
			||||||
    ollamaDefaultModel: string;
 | 
					    ollamaDefaultModel: string;
 | 
				
			||||||
    ollamaEmbeddingModel: string;
 | 
					    ollamaEmbeddingModel: string;
 | 
				
			||||||
 | 
					    codeOpenAiModel: string;
 | 
				
			||||||
    aiProviderPrecedence: string;
 | 
					    aiProviderPrecedence: string;
 | 
				
			||||||
    aiTemperature: string;
 | 
					 | 
				
			||||||
    aiSystemPrompt: string;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Embedding-related options
 | 
					    // Embedding-related options
 | 
				
			||||||
    embeddingAutoUpdateEnabled: boolean;
 | 
					    embeddingAutoUpdateEnabled: boolean;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user