Moonshot: Pull vision flag from model data

Fixes #5068
This commit is contained in:
Cohee
2026-01-28 00:26:50 +02:00
parent eaa6a00e97
commit 0e5b4de10c
4 changed files with 40 additions and 6 deletions
@@ -623,6 +623,7 @@ jQuery(async function () {
await processEndpoint('electronhub', '/api/backends/chat-completions/multimodal-models/electronhub');
await processEndpoint('mistral', '/api/backends/chat-completions/multimodal-models/mistral');
await processEndpoint('xai', '/api/backends/chat-completions/multimodal-models/xai');
await processEndpoint('moonshot', '/api/backends/chat-completions/multimodal-models/moonshot');
}
await addSettings();
@@ -49,13 +49,10 @@
</div>
</label>
<select id="caption_multimodal_model" class="flex1 text_pole">
<!-- AI/ML API, OpenRouter, Pollinations, NanoGPT, Mistral, xAI are added externally by JavaScript -->
<!-- AI/ML API, OpenRouter, Pollinations, NanoGPT, Mistral, xAI, Moonshot are added externally by JavaScript -->
<option data-type="cohere" value="c4ai-aya-vision-8b">c4ai-aya-vision-8b</option>
<option data-type="cohere" value="c4ai-aya-vision-32b">c4ai-aya-vision-32b</option>
<option data-type="cohere" value="command-a-vision-07-2025">command-a-vision-07-2025</option>
<option data-type="moonshot" value="moonshot-v1-8k-vision-preview">moonshot-v1-8k-vision-preview</option>
<option data-type="moonshot" value="moonshot-v1-32k-vision-preview">moonshot-v1-32k-vision-preview</option>
<option data-type="moonshot" value="moonshot-v1-128k-vision-preview">moonshot-v1-128k-vision-preview</option>
<option data-type="openai" value="gpt-5.2">gpt-5.2</option>
<option data-type="openai" value="gpt-5.2-2025-12-11">gpt-5.2-2025-12-11</option>
<option data-type="openai" value="gpt-5.2-chat-latest">gpt-5.2-chat-latest</option>
+9 -2
View File
@@ -4909,8 +4909,13 @@ function getMoonshotMaxContext(model, isUnlocked) {
'moonshot-v1-32k-vision-preview': max_32k,
'moonshot-v1-128k-vision-preview': max_128k,
'kimi-k2-0711-preview': max_32k,
'kimi-latest': max_32k,
'kimi-latest': max_256k,
'kimi-thinking-preview': max_32k,
'kimi-k2.5': max_256k,
'kimi-k2-0905-preview': max_256k,
'kimi-k2-turbo-preview': max_256k,
'kimi-k2-thinking': max_256k,
'kimi-k2-thinking-turbo': max_256k,
};
// Return context size if model found, otherwise default to 32k
@@ -5837,6 +5842,8 @@ export function isImageInliningSupported() {
'moonshot-v1-8k-vision-preview',
'moonshot-v1-32k-vision-preview',
'moonshot-v1-128k-vision-preview',
'kimi-k2.5',
'kimi-latest',
// Z.AI (GLM)
'glm-4.5v',
'glm-4.6v',
@@ -5888,7 +5895,7 @@ export function isImageInliningSupported() {
case chat_completion_sources.COMETAPI:
return true;
case chat_completion_sources.MOONSHOT:
return visionSupportedModels.some(model => oai_settings.moonshot_model.includes(model));
return (Array.isArray(model_list) && model_list.find(m => m.id === oai_settings.moonshot_model)?.supports_image_in);
case chat_completion_sources.NANOGPT:
return (Array.isArray(model_list) && model_list.find(m => m.id === oai_settings.nanogpt_model)?.capabilities?.vision);
case chat_completion_sources.ZAI:
@@ -2615,6 +2615,35 @@ multimodalModels.post('/xai', async (req, res) => {
}
});
multimodalModels.post('/moonshot', async (req, res) => {
try {
const key = readSecret(req.user.directories, SECRET_KEYS.MOONSHOT);
if (!key) {
return res.json([]);
}
const response = await fetch('https://api.moonshot.ai/v1/models', {
headers: {
'Authorization': `Bearer ${key}`,
},
});
if (!response.ok) {
return res.json([]);
}
/** @type {any} */
const data = await response.json();
const multimodalModels = data.data.filter(m => m.supports_image_in).map(m => m.id);
return res.json(multimodalModels);
} catch (error) {
console.error(error);
return res.sendStatus(500);
}
});
router.use('/multimodal-models', multimodalModels);
router.post('/process', async function (request, response) {