Added option to use secondary API URL in vector extension
| @@ -55,6 +55,8 @@ const getBatchSize = () => ['transformers', 'palm', 'ollama'].includes(settings. | |||
| 55 | const settings = { | 55 | const settings = { |
| 56 | // For both | 56 | // For both |
| 57 | source: 'transformers', | 57 | source: 'transformers', |
| 58 | alt_endpoint_url: '', | ||
| 59 | use_alt_endpoint: false, | ||
| 58 | include_wi: false, | 60 | include_wi: false, |
| 59 | togetherai_model: 'togethercomputer/m2-bert-80M-32k-retrieval', | 61 | togetherai_model: 'togethercomputer/m2-bert-80M-32k-retrieval', |
| 60 | openai_model: 'text-embedding-ada-002', | 62 | openai_model: 'text-embedding-ada-002', |
| @@ -109,6 +111,7 @@ const settings = { | |||
| 109 | const moduleWorker = new ModuleWorkerWrapper(synchronizeChat); | 111 | const moduleWorker = new ModuleWorkerWrapper(synchronizeChat); |
| 110 | const webllmProvider = new WebLlmVectorProvider(); | 112 | const webllmProvider = new WebLlmVectorProvider(); |
| 111 | const cachedSummaries = new Map(); | 113 | const cachedSummaries = new Map(); |
| 114 | const vector_api_requires_url = ['llamacpp', 'vllm', 'ollama', 'koboldcpp']; | ||
| 112 | 115 | ||
| 113 | /** | 116 | /** |
| 114 | * Gets the Collection ID for a file embedded in the chat. | 117 | * Gets the Collection ID for a file embedded in the chat. |
| @@ -777,14 +780,14 @@ function getVectorsRequestBody(args = {}) { | |||
| 777 | break; | 780 | break; |
| 778 | case 'ollama': | 781 | case 'ollama': |
| 779 | body.model = extension_settings.vectors.ollama_model; | 782 | body.model = extension_settings.vectors.ollama_model; |
| 780 | body.apiUrl = textgenerationwebui_settings.server_urls[textgen_types.OLLAMA]; | 783 | body.apiUrl = settings.use_alt_endpoint ? settings.alt_endpoint_url : textgenerationwebui_settings.server_urls[textgen_types.OLLAMA]; |
| 781 | body.keep = !!extension_settings.vectors.ollama_keep; | 784 | body.keep = !!extension_settings.vectors.ollama_keep; |
| 782 | break; | 785 | break; |
| 783 | case 'llamacpp': | 786 | case 'llamacpp': |
| 784 | body.apiUrl = textgenerationwebui_settings.server_urls[textgen_types.LLAMACPP]; | 787 | body.apiUrl = settings.use_alt_endpoint ? settings.alt_endpoint_url : textgenerationwebui_settings.server_urls[textgen_types.LLAMACPP]; |
| 785 | break; | 788 | break; |
| 786 | case 'vllm': | 789 | case 'vllm': |
| 787 | body.apiUrl = textgenerationwebui_settings.server_urls[textgen_types.VLLM]; | 790 | body.apiUrl = settings.use_alt_endpoint ? settings.alt_endpoint_url : textgenerationwebui_settings.server_urls[textgen_types.VLLM]; |
| 788 | body.model = extension_settings.vectors.vllm_model; | 791 | body.model = extension_settings.vectors.vllm_model; |
| 789 | break; | 792 | break; |
| 790 | case 'webllm': | 793 | case 'webllm': |
| @@ -1087,6 +1090,7 @@ function toggleSettings() { | |||
| 1087 | $('#webllm_vectorsModel').toggle(settings.source === 'webllm'); | 1090 | $('#webllm_vectorsModel').toggle(settings.source === 'webllm'); |
| 1088 | $('#koboldcpp_vectorsModel').toggle(settings.source === 'koboldcpp'); | 1091 | $('#koboldcpp_vectorsModel').toggle(settings.source === 'koboldcpp'); |
| 1089 | $('#google_vectorsModel').toggle(settings.source === 'palm'); | 1092 | $('#google_vectorsModel').toggle(settings.source === 'palm'); |
| 1093 | $('#altEndpointUrl').toggle(vector_api_requires_url.includes(settings.source)); | ||
| 1090 | if (settings.source === 'webllm') { | 1094 | if (settings.source === 'webllm') { |
| 1091 | loadWebLlmModels(); | 1095 | loadWebLlmModels(); |
| 1092 | } | 1096 | } |
| @@ -1165,7 +1169,7 @@ async function createKoboldCppEmbeddings(items) { | |||
| 1165 | headers: getRequestHeaders(), | 1169 | headers: getRequestHeaders(), |
| 1166 | body: JSON.stringify({ | 1170 | body: JSON.stringify({ |
| 1167 | items: items, | 1171 | items: items, |
| 1168 | server: textgenerationwebui_settings.server_urls[textgen_types.KOBOLDCPP], | 1172 | server: settings.use_alt_endpoint ? settings.alt_endpoint_url : textgenerationwebui_settings.server_urls[textgen_types.KOBOLDCPP], |
| 1169 | }), | 1173 | }), |
| 1170 | }); | 1174 | }); |
| 1171 | 1175 | ||
| @@ -1467,6 +1471,16 @@ jQuery(async () => { | |||
| 1467 | saveSettingsDebounced(); | 1471 | saveSettingsDebounced(); |
| 1468 | toggleSettings(); | 1472 | toggleSettings(); |
| 1469 | }); | 1473 | }); |
| 1474 | $('#altEndpointUrl_enabled').prop('checked', settings.use_alt_endpoint).on('input', () => { | ||
| 1475 | settings.use_alt_endpoint = $('#altEndpointUrl_enabled').prop('checked'); | ||
| 1476 | Object.assign(extension_settings.vectors, settings); | ||
| 1477 | saveSettingsDebounced(); | ||
| 1478 | }) | ||
| 1479 | $('#altEndpoint_address').val(settings.alt_endpoint_url).on('change', () => { | ||
| 1480 | settings.alt_endpoint_url = String($('#altEndpoint_address').val()); | ||
| 1481 | Object.assign(extension_settings.vectors, settings); | ||
| 1482 | saveSettingsDebounced(); | ||
| 1483 | }) | ||
| 1470 | $('#api_key_nomicai').on('click', async () => { | 1484 | $('#api_key_nomicai').on('click', async () => { |
| 1471 | const popupText = 'NomicAI API Key:'; | 1485 | const popupText = 'NomicAI API Key:'; |
| 1472 | const key = await callGenericPopup(popupText, POPUP_TYPE.INPUT, '', { | 1486 | const key = await callGenericPopup(popupText, POPUP_TYPE.INPUT, '', { |
| @@ -25,6 +25,16 @@ | |||
| 25 | <option value="webllm" data-i18n="WebLLM Extension">WebLLM Extension</option> | 25 | <option value="webllm" data-i18n="WebLLM Extension">WebLLM Extension</option> |
| 26 | </select> | 26 | </select> |
| 27 | </div> | 27 | </div> |
| 28 | <div class="flex-container flexFlowColumn" id="altEndpointUrl"> | ||
| 29 | <label class="checkbox_label" for="altEndpointUrl_enabled" title="Enable secondary endpoint URL usage, instead of the main one."> | ||
| 30 | <input id="altEndpointUrl_enabled" type="checkbox" class="checkbox"> | ||
| 31 | <span data-i18n="Use secondary URL">Use secondary URL</span> | ||
| 32 | </label> | ||
| 33 | <label for="altEndpoint_address" data-i18n="Secondary Embedding endpoint URL"> | ||
| 34 | Secondary Embedding endpoint URL | ||
| 35 | </label> | ||
| 36 | <input id="altEndpoint_address" class="text_pole" type="text" placeholder="URL for secondary endpoint" /> | ||
| 37 | </div> | ||
| 28 | <div class="flex-container flexFlowColumn" id="webllm_vectorsModel"> | 38 | <div class="flex-container flexFlowColumn" id="webllm_vectorsModel"> |
| 29 | <label for="vectors_webllm_model" data-i18n="Vectorization Model"> | 39 | <label for="vectors_webllm_model" data-i18n="Vectorization Model"> |
| 30 | Vectorization Model | 40 | Vectorization Model |