fix(ai): switch xiaomi models to openai completions

closes #4505
This commit is contained in:
Mario Zechner
2026-05-18 00:14:31 +02:00
parent 266234047a
commit ed3904ddd3
3 changed files with 69 additions and 65 deletions

View File

@@ -2,6 +2,10 @@
## [Unreleased]
### Fixed
- Fixed Xiaomi MiMo model metadata to use the OpenAI-compatible endpoints and `openai-completions` API, restoring multi-turn thinking/tool-call sessions ([#4505](https://github.com/earendil-works/pi/issues/4505)).
## [0.75.0] - 2026-05-17
### Breaking Changes

View File

@@ -1074,10 +1074,10 @@ async function loadModelsDevData(): Promise<Model<any>[]> {
// keys from platform.xiaomimimo.com). The three `xiaomi-token-plan-*`
// providers cover prepaid Token Plan endpoints in cn / ams / sgp.
const xiaomiVariants = [
{ provider: "xiaomi", baseUrl: "https://api.xiaomimimo.com/anthropic" },
{ provider: "xiaomi-token-plan-cn", baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic" },
{ provider: "xiaomi-token-plan-ams", baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic" },
{ provider: "xiaomi-token-plan-sgp", baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic" },
{ provider: "xiaomi", baseUrl: "https://api.xiaomimimo.com/v1" },
{ provider: "xiaomi-token-plan-cn", baseUrl: "https://token-plan-cn.xiaomimimo.com/v1" },
{ provider: "xiaomi-token-plan-ams", baseUrl: "https://token-plan-ams.xiaomimimo.com/v1" },
{ provider: "xiaomi-token-plan-sgp", baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1" },
] as const;
if (data.xiaomi?.models) {
@@ -1089,7 +1089,7 @@ async function loadModelsDevData(): Promise<Model<any>[]> {
models.push({
id: modelId,
name: m.name || modelId,
api: "anthropic-messages",
api: "openai-completions",
provider,
baseUrl,
reasoning: m.reasoning === true,

View File

@@ -15876,9 +15876,9 @@ export const MODELS = {
"mimo-v2-flash": {
id: "mimo-v2-flash",
name: "MiMo-V2-Flash",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi",
baseUrl: "https://api.xiaomimimo.com/anthropic",
baseUrl: "https://api.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -15889,13 +15889,13 @@ export const MODELS = {
},
contextWindow: 262144,
maxTokens: 65536,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2-omni": {
id: "mimo-v2-omni",
name: "MiMo-V2-Omni",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi",
baseUrl: "https://api.xiaomimimo.com/anthropic",
baseUrl: "https://api.xiaomimimo.com/v1",
reasoning: true,
input: ["text", "image"],
cost: {
@@ -15906,13 +15906,13 @@ export const MODELS = {
},
contextWindow: 262144,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2-pro": {
id: "mimo-v2-pro",
name: "MiMo-V2-Pro",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi",
baseUrl: "https://api.xiaomimimo.com/anthropic",
baseUrl: "https://api.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -15923,13 +15923,13 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2.5": {
id: "mimo-v2.5",
name: "MiMo-V2.5",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi",
baseUrl: "https://api.xiaomimimo.com/anthropic",
baseUrl: "https://api.xiaomimimo.com/v1",
reasoning: true,
input: ["text", "image"],
cost: {
@@ -15940,13 +15940,13 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2.5-pro": {
id: "mimo-v2.5-pro",
name: "MiMo-V2.5-Pro",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi",
baseUrl: "https://api.xiaomimimo.com/anthropic",
baseUrl: "https://api.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -15957,15 +15957,15 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
},
"xiaomi-token-plan-ams": {
"mimo-v2-flash": {
id: "mimo-v2-flash",
name: "MiMo-V2-Flash",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-ams",
baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-ams.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -15976,13 +15976,13 @@ export const MODELS = {
},
contextWindow: 262144,
maxTokens: 65536,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2-omni": {
id: "mimo-v2-omni",
name: "MiMo-V2-Omni",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-ams",
baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-ams.xiaomimimo.com/v1",
reasoning: true,
input: ["text", "image"],
cost: {
@@ -15993,13 +15993,13 @@ export const MODELS = {
},
contextWindow: 262144,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2-pro": {
id: "mimo-v2-pro",
name: "MiMo-V2-Pro",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-ams",
baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-ams.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -16010,13 +16010,13 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2.5": {
id: "mimo-v2.5",
name: "MiMo-V2.5",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-ams",
baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-ams.xiaomimimo.com/v1",
reasoning: true,
input: ["text", "image"],
cost: {
@@ -16027,13 +16027,13 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2.5-pro": {
id: "mimo-v2.5-pro",
name: "MiMo-V2.5-Pro",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-ams",
baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-ams.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -16044,15 +16044,15 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
},
"xiaomi-token-plan-cn": {
"mimo-v2-flash": {
id: "mimo-v2-flash",
name: "MiMo-V2-Flash",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-cn",
baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-cn.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -16063,13 +16063,13 @@ export const MODELS = {
},
contextWindow: 262144,
maxTokens: 65536,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2-omni": {
id: "mimo-v2-omni",
name: "MiMo-V2-Omni",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-cn",
baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-cn.xiaomimimo.com/v1",
reasoning: true,
input: ["text", "image"],
cost: {
@@ -16080,13 +16080,13 @@ export const MODELS = {
},
contextWindow: 262144,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2-pro": {
id: "mimo-v2-pro",
name: "MiMo-V2-Pro",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-cn",
baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-cn.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -16097,13 +16097,13 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2.5": {
id: "mimo-v2.5",
name: "MiMo-V2.5",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-cn",
baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-cn.xiaomimimo.com/v1",
reasoning: true,
input: ["text", "image"],
cost: {
@@ -16114,13 +16114,13 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2.5-pro": {
id: "mimo-v2.5-pro",
name: "MiMo-V2.5-Pro",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-cn",
baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-cn.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -16131,15 +16131,15 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
},
"xiaomi-token-plan-sgp": {
"mimo-v2-flash": {
id: "mimo-v2-flash",
name: "MiMo-V2-Flash",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-sgp",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -16150,13 +16150,13 @@ export const MODELS = {
},
contextWindow: 262144,
maxTokens: 65536,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2-omni": {
id: "mimo-v2-omni",
name: "MiMo-V2-Omni",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-sgp",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1",
reasoning: true,
input: ["text", "image"],
cost: {
@@ -16167,13 +16167,13 @@ export const MODELS = {
},
contextWindow: 262144,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2-pro": {
id: "mimo-v2-pro",
name: "MiMo-V2-Pro",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-sgp",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -16184,13 +16184,13 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2.5": {
id: "mimo-v2.5",
name: "MiMo-V2.5",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-sgp",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1",
reasoning: true,
input: ["text", "image"],
cost: {
@@ -16201,13 +16201,13 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
"mimo-v2.5-pro": {
id: "mimo-v2.5-pro",
name: "MiMo-V2.5-Pro",
api: "anthropic-messages",
api: "openai-completions",
provider: "xiaomi-token-plan-sgp",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1",
reasoning: true,
input: ["text"],
cost: {
@@ -16218,7 +16218,7 @@ export const MODELS = {
},
contextWindow: 1048576,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
} satisfies Model<"openai-completions">,
},
"zai": {
"glm-4.5-air": {