mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	allow specifying openai embedding models too
This commit is contained in:
		| @@ -160,6 +160,16 @@ export default class AiSettingsWidget extends OptionsWidget { | ||||
|                             <input class="openai-base-url form-control" type="text"> | ||||
|                             <div class="form-text">${t("ai_llm.openai_url_description")}</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 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); | ||||
|         }); | ||||
|  | ||||
|         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'); | ||||
|         $openaiBaseUrl.on('change', async () => { | ||||
|             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.$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-temperature').val(options.aiTemperature || '0.7'); | ||||
|  | ||||
|         this.$widget.find('.openai-api-key').val(options.openaiApiKey || ''); | ||||
|         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('.anthropic-api-key').val(options.anthropicApiKey || ''); | ||||
|   | ||||
| @@ -83,6 +83,7 @@ const ALLOWED_OPTIONS = new Set([ | ||||
|     "aiEnabled", | ||||
|     "openaiApiKey", | ||||
|     "openaiDefaultModel", | ||||
|     "openaiEmbeddingModel", | ||||
|     "openaiBaseUrl", | ||||
|     "anthropicApiKey", | ||||
|     "anthropicDefaultModel", | ||||
|   | ||||
| @@ -224,7 +224,7 @@ export async function initializeDefaultProviders() { | ||||
|         // Register OpenAI provider if API key is configured | ||||
|         const openaiApiKey = await options.getOption('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'; | ||||
|  | ||||
|             registerEmbeddingProvider(new OpenAIEmbeddingProvider({ | ||||
|   | ||||
| @@ -172,6 +172,7 @@ const defaultOptions: DefaultOption[] = [ | ||||
|     { name: "aiEnabled", value: "false", isSynced: true }, | ||||
|     { name: "openaiApiKey", value: "", isSynced: false }, | ||||
|     { 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: "anthropicApiKey", value: "", isSynced: false }, | ||||
|     { name: "anthropicDefaultModel", value: "claude-3-opus-20240229", isSynced: true }, | ||||
|   | ||||
| @@ -48,8 +48,12 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActi | ||||
|  | ||||
|     // AI/LLM integration options | ||||
|     aiEnabled: boolean; | ||||
|     aiProvider: string; | ||||
|     aiSystemPrompt: string; | ||||
|     aiTemperature: string; | ||||
|     openaiApiKey: string; | ||||
|     openaiDefaultModel: string; | ||||
|     openaiEmbeddingModel: string; | ||||
|     openaiBaseUrl: string; | ||||
|     anthropicApiKey: string; | ||||
|     anthropicDefaultModel: string; | ||||
| @@ -58,9 +62,8 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActi | ||||
|     ollamaBaseUrl: string; | ||||
|     ollamaDefaultModel: string; | ||||
|     ollamaEmbeddingModel: string; | ||||
|     codeOpenAiModel: string; | ||||
|     aiProviderPrecedence: string; | ||||
|     aiTemperature: string; | ||||
|     aiSystemPrompt: string; | ||||
|  | ||||
|     // Embedding-related options | ||||
|     embeddingAutoUpdateEnabled: boolean; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user