From 9c2ffde418dfe180df93269bf4d6a5a8e6e99d90 Mon Sep 17 00:00:00 2001 From: Elias TOURNEUX Date: Mon, 19 Jan 2026 10:39:17 -0500 Subject: [PATCH] feat: Add new OVHcloud models --- core/llm/llms/OVHcloud.ts | 6 ++ core/llm/toolSupport.ts | 23 +++++ extensions/vscode/config_schema.json | 6 ++ gui/src/pages/AddNewModel/configs/models.ts | 87 +++++++++++++++++-- .../pages/AddNewModel/configs/providers.ts | 6 ++ 5 files changed, 123 insertions(+), 5 deletions(-) diff --git a/core/llm/llms/OVHcloud.ts b/core/llm/llms/OVHcloud.ts index e1bc2b264..7e7f1fb2f 100644 --- a/core/llm/llms/OVHcloud.ts +++ b/core/llm/llms/OVHcloud.ts @@ -16,10 +16,16 @@ export class OVHcloud extends OpenAI { "llama3.1-70b": "Meta-Llama-3_1-70B-Instruct", "llama3.3-70b": "Meta-Llama-3_3-70B-Instruct", "qwen2.5-coder-32b": "Qwen2.5-Coder-32B-Instruct", + "qwen3-32b": "Qwen3-32B", + "qwen3-coder-30b-a3b": "Qwen3-Coder-30B-A3B-Instruct", + "qwen2.5-vl-72b": "Qwen2.5-VL-72B-Instruct", "codestral-mamba-latest": "mamba-codestral-7B-v0.1", "mistral-7b": "Mistral-7B-Instruct-v0.3", "mistral-8x7b": "Mixtral-8x7B-Instruct-v0.1", "mistral-nemo": "Mistral-Nemo-Instruct-2407", + "mistral-small-3.2-24b": "Mistral-Small-3.2-24B-Instruct-2506", + "gpt-oss-20b": "gpt-oss-20b", + "gpt-oss-120b": "gpt-oss-120b", "DeepSeek-R1-Distill-Llama-70B": "DeepSeek-R1-Distill-Llama-70B", }; diff --git a/core/llm/toolSupport.ts b/core/llm/toolSupport.ts index 3466a50ee..6dd5592f0 100644 --- a/core/llm/toolSupport.ts +++ b/core/llm/toolSupport.ts @@ -356,6 +356,29 @@ export const PROVIDER_TOOL_SUPPORT: Record boolean> = } } + return false; + }, + ovhcloud: (model) => { + const lower = model.toLowerCase(); + + // Models that support tools according to OVHcloud AI Endpoints catalog + const toolSupportingModels = [ + "llama-3.1-8b-instruct", + "qwen3-32b", + "qwen3-coder-30b-a3b-instruct", + "meta-llama-3_3-70b-instruct", + "deepseek-r1-distill-llama-70b", + "mistral-small-3.2-24b-instruct-2506", + "gpt-oss-120b", + "mistral-nemo-instruct-2407", + "gpt-oss-20b", + "qwen2.5-coder-32b-instruct", + ]; + + if (toolSupportingModels.some((m) => lower === m)) { + return true; + } + return false; }, }; diff --git a/extensions/vscode/config_schema.json b/extensions/vscode/config_schema.json index c7ea072f4..160c99421 100644 --- a/extensions/vscode/config_schema.json +++ b/extensions/vscode/config_schema.json @@ -1414,10 +1414,16 @@ "llama3.1-70b", "llama3.3-70b", "qwen2.5-coder-32b", + "qwen3-32b", + "qwen3-coder-30b-a3b", + "qwen2.5-vl-72b", "codestral-mamba-latest", "mistral-7b", "mistral-8x7b", "mistral-nemo", + "mistral-small-3.2-24b", + "gpt-oss-20b", + "gpt-oss-120b", "DeepSeek-R1-Distill-Llama-70B" ] }, diff --git a/gui/src/pages/AddNewModel/configs/models.ts b/gui/src/pages/AddNewModel/configs/models.ts index b2b03e1dd..e07aba3ac 100644 --- a/gui/src/pages/AddNewModel/configs/models.ts +++ b/gui/src/pages/AddNewModel/configs/models.ts @@ -98,7 +98,24 @@ export const models: { [key: string]: ModelPackage } = { contextLength: 128_000, }, icon: "openai.png", - providerOptions: ["vllm"], + dimensions: [ + { + name: "Provider", + description: "The provider to use for this model", + options: { + vllm: { + model: "openai/gpt-oss-20b", + title: "gpt-oss-20b (vLLM)", + }, + ovhcloud: { + model: "gpt-oss-20b", + title: "gpt-oss-20b (OVHcloud)", + contextLength: 131072, + }, + }, + }, + ], + providerOptions: ["vllm", "ovhcloud"], isOpenSource: true, }, gptOss120B: { @@ -112,7 +129,24 @@ export const models: { [key: string]: ModelPackage } = { contextLength: 128_000, }, icon: "openai.png", - providerOptions: ["vllm"], + dimensions: [ + { + name: "Provider", + description: "The provider to use for this model", + options: { + vllm: { + model: "openai/gpt-oss-120b", + title: "gpt-oss-120b (vLLM)", + }, + ovhcloud: { + model: "gpt-oss-120b", + title: "gpt-oss-120b (OVHcloud)", + contextLength: 131072, + }, + }, + }, + ], + providerOptions: ["vllm", "ovhcloud"], isOpenSource: true, }, llama318BChat: { @@ -1896,6 +1930,49 @@ export const models: { [key: string]: ModelPackage } = { providerOptions: ["scaleway", "nebius", "ovhcloud", "ncompass"], isOpenSource: true, }, + Qwen3Coder30BA3B: { + title: "Qwen 3 Coder 30B A3B", + description: + "Qwen3-Coder-30B-A3B-Instruct is Alibaba Cloud's advanced code-specialized LLM that excels in agentic coding tasks and supports extended context lengths for handling large code repositories.", + refUrl: "https://huggingface.co/Qwen/Qwen3-Coder-30B-A3B-Instruct", + params: { + title: "Qwen 3 Coder 30B A3B", + model: "qwen3-coder-30b-a3b", + contextLength: 262144, + }, + icon: "qwen.png", + providerOptions: ["ovhcloud"], + isOpenSource: true, + }, + Qwen25VL72B: { + title: "Qwen 2.5 VL 72B", + description: + "Qwen2.5-VL is a powerful vision-language model, designed for advanced image understanding. It can generate detailed image captions, analyze documents, OCR, detect objects, and answer questions based on visuals.", + refUrl: "https://huggingface.co/Qwen/Qwen2.5-VL-72B-Instruct", + params: { + title: "Qwen 2.5 VL 72B", + model: "qwen2.5-vl-72b", + contextLength: 32768, + }, + icon: "qwen.png", + providerOptions: ["ovhcloud"], + isOpenSource: true, + }, + MistralSmall32: { + title: "Mistral Small 3.2 24B", + description: + "Building upon Mistral Small 3 (2501), Mistral Small 3.2 (2506) adds state-of-the-art vision understanding and enhances long context capabilities up to 128k tokens without compromising text performance.", + refUrl: + "https://huggingface.co/mistralai/Mistral-Small-3.2-24B-Instruct-2506", + params: { + title: "Mistral Small 3.2 24B", + model: "mistral-small-3.2-24b", + contextLength: 131072, + }, + icon: "mistral.png", + providerOptions: ["ovhcloud"], + isOpenSource: true, + }, grokCodeFast1: { title: "Grok Code Fast 1", description: @@ -2215,11 +2292,11 @@ export const models: { [key: string]: ModelPackage } = { description: "Qwen 3 32B model from Alibaba", params: { title: "Qwen 3 32B", - model: "Qwen3-32B", - contextLength: 8192, + model: "qwen3-32b", + contextLength: 32768, }, icon: "qwen.png", - providerOptions: ["sambanova"], + providerOptions: ["sambanova", "ovhcloud"], isOpenSource: true, }, gptOss120b: { diff --git a/gui/src/pages/AddNewModel/configs/providers.ts b/gui/src/pages/AddNewModel/configs/providers.ts index 5de00c1a0..b5543f193 100644 --- a/gui/src/pages/AddNewModel/configs/providers.ts +++ b/gui/src/pages/AddNewModel/configs/providers.ts @@ -254,6 +254,12 @@ export const providers: Partial> = { models.mistralOs, models.mistralNemo, models.Qwen25Coder32b, + models.Qwen3Coder30BA3B, + models.Qwen25VL72B, + models.qwen332B, + models.MistralSmall32, + models.gptOss20B, + models.gptOss120B, models.deepseekR1DistillLlama70B, ], apiKeyUrl: "https://endpoints.ai.cloud.ovh.net/",