Mistral: Remove hard coded model lists

00cd7f8180606d1616cd9890a08f612ac990cb8f

Cohee <18619528+Cohee1207@users.noreply.github.com>

2 files changed, +13 -153Ignore whitespace
public/index.html+1 -61
@@ -3365,67 +3365,7 @@
33653365 <div>
33663366 <h4 data-i18n="MistralAI Model">MistralAI Model</h4>
33673367 <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>
34293369 </select>
34303370 </div>
34313371 </form>
public/scripts/openai.js+12 -92
@@ -1834,31 +1834,18 @@ function saveModelList(data) {
18341834 }
18351835
18361836 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-
1848- const otherOptionsGroup = mistralModelSelect.querySelector('#mistralai_other_models');
1849- for (const model of model_list.filter(model => model?.capabilities?.completion_chat)) {
1850- if (!options.some(option => option.value === model.id) && otherOptionsGroup) {
1851- otherOptionsGroup.append(new Option(model.id, model.id));
1852- }
1853- }
18541838
18551839 for (const selectedModelmodel =of model_list.findfilter(model => model?.id === oai_settingscapabilities?.mistralai_modelcompletion_chat);) {
1856- if (!selectedModel) {
1840+ $('#model_mistralai_select').append(new Option(model.id, model.id));
1857- oai_settings.mistralai_model = model_list.find(model => model?.capabilities?.completion_chat)?.id;
1841+ }
1858- }
18591842
1860- $('#model_mistralai_select').val(oai_settings.mistralai_model).trigger('change');
1843+ const selectedModel = model_list.find(model => model.id === oai_settings.mistralai_model);
1844+ if (!selectedModel) {
1845+ oai_settings.mistralai_model = model_list.find(model => model?.capabilities?.completion_chat)?.id;
18611846 }
1847+
1848+ $('#model_mistralai_select').val(oai_settings.mistralai_model).trigger('change');
18621849 }
18631850
18641851 if (oai_settings.chat_completion_source == chat_completion_sources.ELECTRONHUB) {
@@ -1934,7 +1921,7 @@ function saveModelList(data) {
19341921 }
19351922
19361923 if (oai_settings.chat_completion_source === chat_completion_sources.MAKERSUITE) {
19371924 // Clear only the "Other" optgroup for dynamic models
19381925 $('#google_other_models').empty();
19391926
19401927 // Get static model options that are already in the HTML
@@ -1945,7 +1932,7 @@ function saveModelList(data) {
19451932
19461933 // Add dynamic models to the "Other" group
19471934 model_list.forEach((model) => {
19481935 // Only add if not already in static list
19491936 if (!staticModels.includes(model.id)) {
19501937 $('#google_other_models').append(
19511938 $('<option>', {
@@ -4650,75 +4637,8 @@ function getMistralMaxContext(model, isUnlocked) {
46504637 }
46514638 }
46524639
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-
47204640 // 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;
47224642}
47234643
47244644/**