Mistral: Remove hard coded model lists
| @@ -3365,67 +3365,7 @@ | |||
| 3365 | <div> | 3365 | <div> |
| 3366 | <h4 data-i18n="MistralAI Model">MistralAI Model</h4> | 3366 | <h4 data-i18n="MistralAI Model">MistralAI Model</h4> |
| 3367 | <select id="model_mistralai_select"> | 3367 | <select id="model_mistralai_select"> |
| 3368 | <optgroup label="Latest"> | 3368 | <option data-i18n="-- Connect to the API --" value="">-- Connect to the API --</option> |
| 3369 | <option value="open-mistral-nemo">open-mistral-nemo</option> | ||
| 3370 | <option value="open-mistral-7b">open-mistral-7b</option> | ||
| 3371 | <option value="open-mixtral-8x7b">open-mixtral-8x7b</option> | ||
| 3372 | <option value="open-mixtral-8x22b">open-mixtral-8x22b</option> | ||
| 3373 | <option value="open-codestral-mamba">open-codestral-mamba</option> | ||
| 3374 | <option value="ministral-3b-latest">ministral-3b-latest</option> | ||
| 3375 | <option value="ministral-8b-latest">ministral-8b-latest</option> | ||
| 3376 | <option value="mistral-tiny-latest">mistral-tiny-latest</option> | ||
| 3377 | <option value="mistral-small-latest">mistral-small-latest</option> | ||
| 3378 | <option value="mistral-medium-latest">mistral-medium-latest</option> | ||
| 3379 | <option value="mistral-large-latest">mistral-large-latest</option> | ||
| 3380 | <option value="mistral-saba-latest">mistral-saba-latest</option> | ||
| 3381 | <option value="codestral-latest">codestral-latest</option> | ||
| 3382 | <option value="codestral-mamba-latest">codestral-mamba-latest</option> | ||
| 3383 | <option value="pixtral-12b-latest">pixtral-12b-latest</option> | ||
| 3384 | <option value="pixtral-large-latest">pixtral-large-latest</option> | ||
| 3385 | <option value="devstral-small-latest">devstral-small-latest</option> | ||
| 3386 | <option value="devstral-medium-latest">devstral-medium-latest</option> | ||
| 3387 | <option value="magistral-small-latest">magistral-small-latest</option> | ||
| 3388 | <option value="magistral-medium-latest">magistral-medium-latest</option> | ||
| 3389 | </optgroup> | ||
| 3390 | <optgroup label="Sub-versions"> | ||
| 3391 | <option value="open-mistral-nemo-2407">open-mistral-nemo-2407</option> | ||
| 3392 | <option value="open-mixtral-8x22b-2404">open-mixtral-8x22b-2404</option> | ||
| 3393 | <option value="ministral-3b-2410">ministral-3b-2410</option> | ||
| 3394 | <option value="ministral-8b-2410">ministral-8b-2410</option> | ||
| 3395 | <option value="mistral-tiny-2312">mistral-tiny-2312</option> | ||
| 3396 | <option value="mistral-tiny-2407">mistral-tiny-2407</option> | ||
| 3397 | <option value="mistral-small-2312">mistral-small-2312</option> | ||
| 3398 | <option value="mistral-small-2402">mistral-small-2402</option> | ||
| 3399 | <option value="mistral-small-2409">mistral-small-2409</option> | ||
| 3400 | <option value="mistral-small-2501">mistral-small-2501</option> | ||
| 3401 | <option value="mistral-small-2503">mistral-small-2503</option> | ||
| 3402 | <option value="mistral-small-2506">mistral-small-2506</option> | ||
| 3403 | <option value="mistral-medium-2312">mistral-medium-2312</option> | ||
| 3404 | <option value="mistral-medium-2505">mistral-medium-2505</option> | ||
| 3405 | <option value="mistral-medium-2508">mistral-medium-2508</option> | ||
| 3406 | <option value="mistral-large-2402">mistral-large-2402</option> | ||
| 3407 | <option value="mistral-large-2407">mistral-large-2407</option> | ||
| 3408 | <option value="mistral-large-2411">mistral-large-2411</option> | ||
| 3409 | <option value="mistral-large-pixtral-2411">mistral-large-pixtral-2411</option> | ||
| 3410 | <option value="mistral-saba-2502">mistral-saba-2502</option> | ||
| 3411 | <option value="codestral-2405">codestral-2405</option> | ||
| 3412 | <option value="codestral-2405-blue">codestral-2405-blue</option> | ||
| 3413 | <option value="codestral-mamba-2407">codestral-mamba-2407</option> | ||
| 3414 | <option value="codestral-2411-rc5">codestral-2411-rc5</option> | ||
| 3415 | <option value="codestral-2412">codestral-2412</option> | ||
| 3416 | <option value="codestral-2501">codestral-2501</option> | ||
| 3417 | <option value="codestral-2508">codestral-2508</option> | ||
| 3418 | <option value="pixtral-12b-2409">pixtral-12b-2409</option> | ||
| 3419 | <option value="pixtral-large-2411">pixtral-large-2411</option> | ||
| 3420 | <option value="devstral-small-2505">devstral-small-2505</option> | ||
| 3421 | <option value="devstral-small-2507">devstral-small-2507</option> | ||
| 3422 | <option value="devstral-medium-2507">devstral-medium-2507</option> | ||
| 3423 | <option value="magistral-small-2506">magistral-small-2506</option> | ||
| 3424 | <option value="magistral-medium-2506">magistral-medium-2506</option> | ||
| 3425 | <option value="magistral-small-2507">magistral-small-2507</option> | ||
| 3426 | <option value="magistral-medium-2507">magistral-medium-2507</option> | ||
| 3427 | </optgroup> | ||
| 3428 | <optgroup id="mistralai_other_models" label="Other"></optgroup> | ||
| 3429 | </select> | 3369 | </select> |
| 3430 | </div> | 3370 | </div> |
| 3431 | </form> | 3371 | </form> |
| @@ -1834,22 +1834,10 @@ function saveModelList(data) { | |||
| 1834 | } | 1834 | } |
| 1835 | 1835 | ||
| 1836 | if (oai_settings.chat_completion_source == chat_completion_sources.MISTRALAI) { | 1836 | if (oai_settings.chat_completion_source == chat_completion_sources.MISTRALAI) { |
| 1837 | /** @type {HTMLSelectElement} */ | 1837 | $('#model_mistralai_select').empty(); |
| 1838 | const mistralModelSelect = document.querySelector('#model_mistralai_select'); | ||
| 1839 | if (mistralModelSelect) { | ||
| 1840 | const options = Array.from(mistralModelSelect.options); | ||
| 1841 | options.forEach((option) => { | ||
| 1842 | const existingModel = model_list.find(model => model.id === option.value); | ||
| 1843 | if (!existingModel) { | ||
| 1844 | option.remove(); | ||
| 1845 | } | ||
| 1846 | }); | ||
| 1847 | 1838 | ||
| 1848 | const otherOptionsGroup = mistralModelSelect.querySelector('#mistralai_other_models'); | ||
| 1849 | for (const model of model_list.filter(model => model?.capabilities?.completion_chat)) { | 1839 | for (const model of model_list.filter(model => model?.capabilities?.completion_chat)) { |
| 1850 | if (!options.some(option => option.value === model.id) && otherOptionsGroup) { | 1840 | $('#model_mistralai_select').append(new Option(model.id, model.id)); |
| 1851 | otherOptionsGroup.append(new Option(model.id, model.id)); | ||
| 1852 | } | ||
| 1853 | } | 1841 | } |
| 1854 | 1842 | ||
| 1855 | const selectedModel = model_list.find(model => model.id === oai_settings.mistralai_model); | 1843 | const selectedModel = model_list.find(model => model.id === oai_settings.mistralai_model); |
| @@ -1859,7 +1847,6 @@ function saveModelList(data) { | |||
| 1859 | 1847 | ||
| 1860 | $('#model_mistralai_select').val(oai_settings.mistralai_model).trigger('change'); | 1848 | $('#model_mistralai_select').val(oai_settings.mistralai_model).trigger('change'); |
| 1861 | } | 1849 | } |
| 1862 | } | ||
| 1863 | 1850 | ||
| 1864 | if (oai_settings.chat_completion_source == chat_completion_sources.ELECTRONHUB) { | 1851 | if (oai_settings.chat_completion_source == chat_completion_sources.ELECTRONHUB) { |
| 1865 | model_list = model_list.filter(model => model?.endpoints?.includes('/v1/chat/completions')); | 1852 | model_list = model_list.filter(model => model?.endpoints?.includes('/v1/chat/completions')); |
| @@ -4650,75 +4637,8 @@ function getMistralMaxContext(model, isUnlocked) { | |||
| 4650 | } | 4637 | } |
| 4651 | } | 4638 | } |
| 4652 | 4639 | ||
| 4653 | const contextMap = { | ||
| 4654 | 'codestral-2405': 32768, | ||
| 4655 | 'codestral-2411-rc5': 262144, | ||
| 4656 | 'codestral-2412': 262144, | ||
| 4657 | 'codestral-2501': 262144, | ||
| 4658 | 'codestral-2508': 256000, | ||
| 4659 | 'codestral-latest': 256000, | ||
| 4660 | 'codestral-mamba-2407': 262144, | ||
| 4661 | 'codestral-mamba-latest': 262144, | ||
| 4662 | 'open-codestral-mamba': 262144, | ||
| 4663 | 'ministral-3b-2410': 131072, | ||
| 4664 | 'ministral-3b-latest': 131072, | ||
| 4665 | 'ministral-8b-2410': 131072, | ||
| 4666 | 'ministral-8b-latest': 131072, | ||
| 4667 | 'mistral-large-2407': 131072, | ||
| 4668 | 'mistral-large-2411': 131072, | ||
| 4669 | 'mistral-large-latest': 131072, | ||
| 4670 | 'mistral-large-pixtral-2411': 131072, | ||
| 4671 | 'mistral-tiny-2407': 131072, | ||
| 4672 | 'mistral-tiny-latest': 131072, | ||
| 4673 | 'open-mistral-nemo': 131072, | ||
| 4674 | 'open-mistral-nemo-2407': 131072, | ||
| 4675 | 'pixtral-12b': 131072, | ||
| 4676 | 'pixtral-12b-2409': 131072, | ||
| 4677 | 'pixtral-12b-latest': 131072, | ||
| 4678 | 'pixtral-large-2411': 131072, | ||
| 4679 | 'pixtral-large-latest': 131072, | ||
| 4680 | 'open-mixtral-8x22b': 65536, | ||
| 4681 | 'open-mixtral-8x22b-2404': 65536, | ||
| 4682 | 'mistral-embed': 32768, | ||
| 4683 | 'mistral-large-2402': 32768, | ||
| 4684 | 'mistral-medium': 131072, | ||
| 4685 | 'mistral-medium-2312': 32768, | ||
| 4686 | 'mistral-medium-2505': 131072, | ||
| 4687 | 'mistral-medium-2508': 262144, | ||
| 4688 | 'mistral-medium-latest': 262144, | ||
| 4689 | 'mistral-moderation-2411': 32768, | ||
| 4690 | 'mistral-moderation-latest': 32768, | ||
| 4691 | 'mistral-ocr-2503': 32768, | ||
| 4692 | 'mistral-ocr-latest': 32768, | ||
| 4693 | 'mistral-saba-2502': 32768, | ||
| 4694 | 'mistral-saba-latest': 32768, | ||
| 4695 | 'mistral-small': 32768, | ||
| 4696 | 'mistral-small-2312': 32768, | ||
| 4697 | 'mistral-small-2402': 32768, | ||
| 4698 | 'mistral-small-2409': 32768, | ||
| 4699 | 'mistral-small-2501': 32768, | ||
| 4700 | 'mistral-small-2503': 32768, | ||
| 4701 | 'mistral-small-2506': 131072, | ||
| 4702 | 'mistral-small-latest': 131072, | ||
| 4703 | 'mistral-tiny': 32768, | ||
| 4704 | 'mistral-tiny-2312': 32768, | ||
| 4705 | 'open-mistral-7b': 32768, | ||
| 4706 | 'open-mixtral-8x7b': 32768, | ||
| 4707 | 'devstral-small-2505': 131072, | ||
| 4708 | 'devstral-small-2507': 131072, | ||
| 4709 | 'devstral-small-latest': 131072, | ||
| 4710 | 'devstral-medium-latest': 131072, | ||
| 4711 | 'devstral-medium-2507': 131072, | ||
| 4712 | 'magistral-medium-latest': 40960, | ||
| 4713 | 'magistral-medium-2506': 40960, | ||
| 4714 | 'magistral-small-latest': 40960, | ||
| 4715 | 'magistral-small-2506': 40000, | ||
| 4716 | 'magistral-small-2507': 40960, | ||
| 4717 | 'magistral-medium-2507': 40960, | ||
| 4718 | }; | ||
| 4719 | |||
| 4720 | // Return context size if model found, otherwise default to 32k | 4640 | // Return context size if model found, otherwise default to 32k |
| 4721 | return Object.entries(contextMap).find(([key]) => model.includes(key))?.[1] || 32768; | 4641 | return max_32k; |
| 4722 | } | 4642 | } |
| 4723 | 4643 | ||
| 4724 | /** | 4644 | /** |