mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-08-11 11:02:27 +08: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