allow specifying openai embedding models too

This commit is contained in:
perf3ct 2025-03-17 19:54:11 +00:00
parent 6d146c2f49
commit d95fd0b049
No known key found for this signature in database
GPG Key ID: 569C4EEC436F5232
5 changed files with 25 additions and 4 deletions

View File

@ -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 || '');

View File

@ -83,6 +83,7 @@ const ALLOWED_OPTIONS = new Set([
"aiEnabled",
"openaiApiKey",
"openaiDefaultModel",
"openaiEmbeddingModel",
"openaiBaseUrl",
"anthropicApiKey",
"anthropicDefaultModel",

View File

@ -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({

View File

@ -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 },

View File

@ -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;