From b0da7c1211ed2b227931d8a28f59a905255d9a46 Mon Sep 17 00:00:00 2001 From: decolua Date: Fri, 1 May 2026 16:32:25 +0700 Subject: [PATCH] Add Xiaomi MiMo provider support - Introduced Xiaomi MiMo as a new provider in providerModels.js and providers.js. - Updated model alias mapping in model.js to include Xiaomi MiMo. - Enhanced validation route to support Xiaomi MiMo API endpoints. - Added Xiaomi MiMo to APIKEY_PROVIDERS with relevant details. This update expands the range of supported providers, improving integration capabilities. --- open-sse/config/providerModels.js | 6 ++++++ open-sse/config/providers.js | 4 ++++ open-sse/services/model.js | 2 ++ public/providers/xiaomi-mimo.png | Bin 0 -> 6408 bytes src/app/api/providers/validate/route.js | 4 +++- src/shared/constants/providers.js | 1 + 6 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 public/providers/xiaomi-mimo.png diff --git a/open-sse/config/providerModels.js b/open-sse/config/providerModels.js index 7f04b7d3..139c1270 100644 --- a/open-sse/config/providerModels.js +++ b/open-sse/config/providerModels.js @@ -444,6 +444,12 @@ export const PROVIDER_MODELS = { { id: "openai/gpt-oss-120b", name: "GPT OSS 120B" }, { id: "baidu/ERNIE-4.5-300B-A47B", name: "ERNIE 4.5 300B" }, ], + "xiaomi-mimo": [ + { id: "mimo-v2.5-pro", name: "MiMo V2.5 Pro" }, + { id: "mimo-v2.5", name: "MiMo V2.5" }, + { id: "mimo-v2-omni", name: "MiMo V2 Omni" }, + { id: "mimo-v2-flash", name: "MiMo V2 Flash" }, + ], hyperbolic: [ { id: "Qwen/QwQ-32B", name: "QwQ 32B" }, { id: "deepseek-ai/DeepSeek-R1", name: "DeepSeek R1" }, diff --git a/open-sse/config/providers.js b/open-sse/config/providers.js index dd0c53de..323291db 100644 --- a/open-sse/config/providers.js +++ b/open-sse/config/providers.js @@ -372,6 +372,10 @@ export const PROVIDERS = { baseUrl: "https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions", format: "openai" }, + "xiaomi-mimo": { + baseUrl: "https://api.xiaomimimo.com/v1/chat/completions", + format: "openai" + }, }; export const OLLAMA_LOCAL_DEFAULT_HOST = "http://localhost:11434"; diff --git a/open-sse/services/model.js b/open-sse/services/model.js index f4f0c54e..be1f6656 100644 --- a/open-sse/services/model.js +++ b/open-sse/services/model.js @@ -63,6 +63,8 @@ const ALIAS_TO_PROVIDER_ID = { "grok-web": "grok-web", pw: "perplexity-web", "perplexity-web": "perplexity-web", + mimo: "xiaomi-mimo", + "xiaomi-mimo": "xiaomi-mimo", }; /** diff --git a/public/providers/xiaomi-mimo.png b/public/providers/xiaomi-mimo.png new file mode 100644 index 0000000000000000000000000000000000000000..1752aa9a19973a076e9814f8e6f5785ae3d1fe44 GIT binary patch literal 6408 zcmbVxby(EV^7k&y(j5XKQcHt$E+H)4olAG^QX;Stg0hsfbc@m@p>&rZAu6>X-5?Zqv+;JTOb0KjM$0M=i~J<;D20Dzef1Yq8C;9p%n#=ot| ze9ZsIe}T|=tblvih>L*%bT2;r$l?kPei*7d;#hFy=rHcTc!v zpbX1D5R&)uUo}4q^FJU6HyIWaO&w-MFJA{{Q9c1a0Tx*hGc&Wauf3zBo|5vv-0ycX zEY1jow@NA>MlgFFeQ-0Sn~ygg^dgkpC4&$pLQX z>*9@Y@$zK;8y9Bl<%f`AVfmZr-`_va=@97hpG={n!|WVn1*QK1{BPBNviuXR;}YoLZldJk;ou3sKas4cn8?4J{&&m&)zkF< z>G@xle|bvt|1I~w%Kv9?|DnBat}IBJ|KArS3;JZ}eSh)PS*l9%27$mm%V3nnH&eNd z`QVN5(W-!NUs(NZ2Rs+O=)G05g!^8Wz60TxFO%qDD?QeMU>Q(Fy;f^@x{{#AT!2?d z9m%Pup7K%@#3o-rr2D470pE|FoTJvV!}i;uHe=76{V_`v)34#f=9KZb(yV`|Avl)Fz~)1M3_@-&m?*i&}I5G=a0%Jj!N7 zw0<`Dk?arvX7?{^Ru(M4FEN;nQCeTVDp>{X*N`7DJxPm|&m3NWEWLh3v*3dUx`**ZacT2g;rd&61QpNZoXrc*)|2;GtRW9Q5{O4d<240ougKm-hB_TH(2!}_s*!z+Bg1y ztSq5x+aZRg+YjZBda9R^!u4y&Sh*>&!m|jVwq(ERMlH|&l%osRXuKwZUowH*N2|Ph z*yi+E?Jc#>n19$viD1rRG)h+oW%wn+f5LhpC&f&bWdyy1?cG)i*wc!0r61C@5Dm z{td=mNmbB?o*mh@S91|7m=8}s%l}Y3(C4Rw;J<|s#*Xf|e>(2Ic^cfSE=xpv#8Nn8hJlO>9gM=a| zj)e96QQIX&7@DZkX9eIff1&_%cgK6RpNc90E#ANMT|R z75;iR51Uea($KVZO}}O7a%X-!Zko7~6P!w{zDrb+1z|SxZVZtMA9y&V$)vn2TzQO0 z;=val^RHJ*fPG7DEV~naE8$tg^1k$yj3zcxfWpCE;LLw-=nGZC-f&k=mr^Th*-)s8 ziLei?wls6eRgagp+!YmFYBF9{p-NdPVCn^m^s;DpD6_01d+A)RibV2z)6U?UZ`hDg z(lj<1wbh@2%=Ej=5Z7%sky1T<04C8kA6TvW*3D-lj1#+Fn?ud9isj5OY&&YIz?fIg?pnJEVShAL z3a@hCM)TnweRF|$tiSFWia>KGxH0z9s;CyRL)C$Jw}o{lZ7oH?0!{r%!J^D*NxyfY zk2p42xPS8sy8k|dr%sC5sqta+LsftZVBye}Z+WMMLL8-pu%VBP8zaRC{fT!Q4Pv1+ zXP4(19FMS%^>hI5^c9{)Tc472yn<&#D0&V}C#m`S? zghyF$R(@%!b71z3ysE#8)n-t@2{u=k2hyIG8?mo`uC~3M8TDiS6Cn`%mJ4xyydk?A)T2%kw+uP`b@PAEYTh#^LnY+4cn|wIKsfxNguUFJCgO?)a2)_9gk< zs}L?ueB24~aJNCT!;ywJI)+G?q~Pw50CCTXr8!twIVBO(^W}F0@f)8*OlEQQ@T6ym zHd9#_Ab(6&oGOBjD(yoJsH7!7Mc&

kK9tMLq3Z>TN(T#i}-7aR(yoC`$h%&|m+l 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 E58Mv3BLDyZ literal 0 HcmV?d00001 diff --git a/src/app/api/providers/validate/route.js b/src/app/api/providers/validate/route.js index 1c283279..60e4aa68 100644 --- a/src/app/api/providers/validate/route.js +++ b/src/app/api/providers/validate/route.js @@ -361,6 +361,7 @@ export async function POST(request) { case "assemblyai": case "nanobanana": case "chutes": + case "xiaomi-mimo": case "nvidia": { const endpoints = { deepseek: "https://api.deepseek.com/models", @@ -380,7 +381,8 @@ export async function POST(request) { assemblyai: "https://api.assemblyai.com/v1/account", nanobanana: "https://api.nanobananaapi.ai/v1/models", chutes: "https://llm.chutes.ai/v1/models", - nvidia: "https://integrate.api.nvidia.com/v1/models" + nvidia: "https://integrate.api.nvidia.com/v1/models", + "xiaomi-mimo": "https://api.xiaomimimo.com/v1/models" }; const headers = {}; if (apiKey) headers["Authorization"] = `Bearer ${apiKey}`; diff --git a/src/shared/constants/providers.js b/src/shared/constants/providers.js index ec03057d..81121909 100644 --- a/src/shared/constants/providers.js +++ b/src/shared/constants/providers.js @@ -60,6 +60,7 @@ export const APIKEY_PROVIDERS = { "minimax-cn": { id: "minimax-cn", alias: "minimax-cn", name: "Minimax (China)", icon: "memory", color: "#DC2626", textIcon: "MC", website: "https://www.minimaxi.com" }, alicode: { id: "alicode", alias: "alicode", name: "Alibaba", icon: "cloud", color: "#FF6A00", textIcon: "ALi" }, "alicode-intl": { id: "alicode-intl", alias: "alicode-intl", name: "Alibaba Intl", icon: "cloud", color: "#FF6A00", textIcon: "ALi" }, + "xiaomi-mimo": { id: "xiaomi-mimo", alias: "mimo", name: "Xiaomi MiMo", icon: "smart_toy", color: "#FF6900", textIcon: "XM", website: "https://xiaomimimo.com" }, "volcengine-ark": { id: "volcengine-ark", alias: "ark", name: "Volcengine Ark", icon: "cloud", color: "#1677FF", textIcon: "ARK", website: "https://ark.cn-beijing.volces.com" }, openai: { id: "openai", alias: "openai", name: "OpenAI", icon: "auto_awesome", color: "#10A37F", textIcon: "OA", website: "https://platform.openai.com", serviceKinds: ["llm", "embedding", "tts", "image", "imageToText", "webSearch"], thinkingConfig: THINKING_CONFIG.effort, searchViaChat: { defaultModel: "gpt-4o-mini", pricingUrl: "https://openai.com/api/pricing" }, ttsConfig: { baseUrl: "https://api.openai.com/v1/audio/speech", authType: "apikey", authHeader: "bearer", format: "openai", models: [{ id: "tts-1", name: "TTS-1" }, { id: "tts-1-hd", name: "TTS-1 HD" }, { id: "gpt-4o-mini-tts", name: "GPT-4o Mini TTS" }] }, embeddingConfig: { baseUrl: "https://api.openai.com/v1/embeddings", authType: "apikey", authHeader: "bearer", models: [{ id: "text-embedding-3-small", name: "Text Embedding 3 Small", dimensions: 1536 }, { id: "text-embedding-3-large", name: "Text Embedding 3 Large", dimensions: 3072 }, { id: "text-embedding-ada-002", name: "Text Embedding Ada 002", dimensions: 1536 }] } }, anthropic: { id: "anthropic", alias: "anthropic", name: "Anthropic", icon: "smart_toy", color: "#D97757", textIcon: "AN", website: "https://console.anthropic.com", serviceKinds: ["llm", "imageToText"] },