MistralAI: Add new models to the list

ff2c71c4ef54f06d58c9410eedcfd04bd400b881

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

4 files changed, +43 -2Showing whitespace changes
public/css/toggle-dependent.css+4 -0
@@ -482,3 +482,7 @@ label[for="trim_spaces"]:has(input:checked) i.warning {
482482 gap: 5px;
483483 margin: 10px 0;
484484}
485+
486+#mistralai_other_models:empty {
487+ display: none;
488+}
public/index.html+9 -1
@@ -3012,17 +3012,23 @@
30123012 <option value="open-mixtral-8x7b">open-mixtral-8x7b</option>
30133013 <option value="open-mixtral-8x22b">open-mixtral-8x22b</option>
30143014 <option value="open-codestral-mamba">open-codestral-mamba</option>
3015+ <option value="ministral-3b-latest">ministral-3b-latest</option>
3016+ <option value="ministral-8b-latest">ministral-8b-latest</option>
3017+ <option value="mistral-tiny-latest">mistral-tiny-latest</option>
30153018 <option value="mistral-small-latest">mistral-small-latest</option>
30163019 <option value="mistral-medium-latest">mistral-medium-latest</option>
30173020 <option value="mistral-large-latest">mistral-large-latest</option>
30183021 <option value="codestral-latest">codestral-latest</option>
30193022 <option value="codestral-mamba-latest">codestral-mamba-latest</option>
30203023 <option value="pixtral-12b-latest">pixtral-12b-latest</option>
30213024 </optgroup>
30223025 <optgroup label="Sub-versions">
30233026 <option value="open-mistral-nemo-2407">open-mistral-nemo-2407</option>
30243027 <option value="open-mixtral-8x22b-2404">open-mixtral-8x22b-2404</option>
3028+ <option value="ministral-3b-2410">ministral-3b-2410</option>
3029+ <option value="ministral-8b-2410">ministral-8b-2410</option>
30253030 <option value="mistral-tiny-2312">mistral-tiny-2312</option>
3031+ <option value="mistral-tiny-2407">mistral-tiny-2407</option>
30263032 <option value="mistral-small-2312">mistral-small-2312</option>
30273033 <option value="mistral-small-2402">mistral-small-2402</option>
30283034 <option value="mistral-small-2409">mistral-small-2409</option>
@@ -3030,9 +3036,11 @@
30303036 <option value="mistral-large-2402">mistral-large-2402</option>
30313037 <option value="mistral-large-2407">mistral-large-2407</option>
30323038 <option value="codestral-2405">codestral-2405</option>
3039+ <option value="codestral-2405-blue">codestral-2405-blue</option>
30333040 <option value="codestral-mamba-2407">codestral-mamba-2407</option>
30343041 <option value="pixtral-12b-2409">pixtral-12b-2409</option>
30353042 </optgroup>
3043+ <optgroup id="mistralai_other_models" label="Other"></optgroup>
30363044 </select>
30373045 </div>
30383046 </form>
public/scripts/extensions/caption/settings.html+1 -1
@@ -35,7 +35,7 @@
3535 <div class="flex1 flex-container flexFlowColumn flexNoGap">
3636 <label for="caption_multimodal_model" data-i18n="Model">Model</label>
3737 <select id="caption_multimodal_model" class="flex1 text_pole">
3838 <option data-type="mistral" value="pixtral-12b-latest">pixtral-12b-latest</option>
3939 <option data-type="mistral" value="pixtral-12b-2409">pixtral-12b-2409</option>
4040 <option data-type="zerooneai" value="yi-vision">yi-vision</option>
4141 <option data-type="openai" value="gpt-4-vision-preview">gpt-4-vision-preview</option>
public/scripts/openai.js+29 -0
@@ -1609,6 +1609,33 @@ function saveModelList(data) {
16091609
16101610 $('#model_blockentropy_select').val(oai_settings.blockentropy_model).trigger('change');
16111611 }
1612+
1613+ if (oai_settings.chat_completion_source == chat_completion_sources.MISTRALAI) {
1614+ /** @type {HTMLSelectElement} */
1615+ const mistralModelSelect = document.querySelector('#model_mistralai_select');
1616+ if (mistralModelSelect) {
1617+ const options = Array.from(mistralModelSelect.options);
1618+ options.forEach((option) => {
1619+ const existingModel = model_list.find(model => model.id === option.value);
1620+ if (!existingModel) {
1621+ option.remove();
1622+ }
1623+ });
1624+
1625+ const otherOptionsGroup = mistralModelSelect.querySelector('#mistralai_other_models');
1626+ for (const model of model_list.filter(model => model?.capabilities?.completion_chat)) {
1627+ if (!options.some(option => option.value === model.id) && otherOptionsGroup) {
1628+ otherOptionsGroup.append(new Option(model.id, model.id));
1629+ }
1630+ }
1631+
1632+ const selectedModel = model_list.find(model => model.id === oai_settings.mistralai_model);
1633+ if (!selectedModel) {
1634+ oai_settings.mistralai_model = model_list.find(model => model?.capabilities?.completion_chat)?.id;
1635+ $('#model_mistralai_select').val(oai_settings.mistralai_model).trigger('change');
1636+ }
1637+ }
1638+ }
16121639}
16131640
16141641function appendOpenRouterOptions(model_list, groupModels = false, sort = false) {
@@ -4659,6 +4686,8 @@ export function isImageInliningSupported() {
46594686 'chatgpt-4o-latest',
46604687 'yi-vision',
46614688 'pixtral-latest',
4689+ 'pixtral-12b-latest',
4690+ 'pixtral-12b',
46624691 'pixtral-12b-2409',
46634692 ];
46644693