diff --git a/packages/core/src/services/llm/adapters/minimax-adapter.ts b/packages/core/src/services/llm/adapters/minimax-adapter.ts
index 5a78dd61..784f709d 100644
--- a/packages/core/src/services/llm/adapters/minimax-adapter.ts
+++ b/packages/core/src/services/llm/adapters/minimax-adapter.ts
@@ -57,7 +57,7 @@ export class MinimaxAdapter extends OpenAIAdapter {
return {
id: 'minimax',
name: 'MiniMax',
- description: 'MiniMax AI models via OpenAI-compatible API',
+ description: 'MiniMax AI models via OpenAI-compatible API. The default endpoint is global; Mainland China users should use https://api.minimaxi.com/v1.',
requiresApiKey: true,
defaultBaseURL: 'https://api.minimax.io/v1',
supportsDynamicModels: true,
diff --git a/packages/core/tests/unit/llm/minimax-adapter.test.ts b/packages/core/tests/unit/llm/minimax-adapter.test.ts
index db630885..ad2a47fe 100644
--- a/packages/core/tests/unit/llm/minimax-adapter.test.ts
+++ b/packages/core/tests/unit/llm/minimax-adapter.test.ts
@@ -26,7 +26,7 @@ describe('MinimaxAdapter', () => {
providerMeta: {
id: 'minimax',
name: 'MiniMax',
- description: 'MiniMax AI models via OpenAI-compatible API',
+ description: 'MiniMax AI models via OpenAI-compatible API. The default endpoint is global; Mainland China users should use https://api.minimaxi.com/v1.',
requiresApiKey: true,
defaultBaseURL: 'https://api.minimax.io/v1',
supportsDynamicModels: true,
@@ -100,6 +100,7 @@ describe('MinimaxAdapter', () => {
expect(provider.defaultBaseURL).toBe('https://api.minimax.io/v1');
expect(provider.supportsDynamicModels).toBe(true);
expect(provider.requiresApiKey).toBe(true);
+ expect(provider.description).toContain('https://api.minimaxi.com/v1');
});
it('should have valid connection schema', () => {
diff --git a/packages/ui/src/components/TextModelEditModal.vue b/packages/ui/src/components/TextModelEditModal.vue
index ee29dec0..f2416a53 100644
--- a/packages/ui/src/components/TextModelEditModal.vue
+++ b/packages/ui/src/components/TextModelEditModal.vue
@@ -49,7 +49,20 @@
{{ t('modelManager.apiUrl') }}
- ?
+
+
+
+ ?
+
+
+ {{ t('modelManager.apiUrlHint') }}
+
@@ -295,6 +308,10 @@ const currentProviderHint = computed(() => {
return t('modelManager.provider.dashscopeHint')
}
+ if (provider.id === 'minimax') {
+ return t('modelManager.provider.minimaxHint')
+ }
+
return provider.description || ''
})
@@ -392,3 +409,20 @@ const onProviderChange = (providerId: string) => {
})
}
+
+
diff --git a/packages/ui/src/i18n/locales/en-US/models.ts b/packages/ui/src/i18n/locales/en-US/models.ts
index 0cd0807a..db17a3d2 100644
--- a/packages/ui/src/i18n/locales/en-US/models.ts
+++ b/packages/ui/src/i18n/locales/en-US/models.ts
@@ -14,6 +14,7 @@ const messages = {
"modelKey": "Model Key",
"apiUrl": "API URL",
"apiUrlHint": "Example: https://api.example.com/v1; most providers use endpoints ending with /v1",
+ "apiUrlHintAriaLabel": "Show API URL help",
"defaultModel": "Default Model",
"clickToFetchModels": "Click arrow to fetch model list",
"apiKey": "API Key",
@@ -26,7 +27,8 @@ const messages = {
"placeholder": "Select Provider",
"openaiHint": "This is the official OpenAI API. If you want a custom base URL, a third-party compatible service, or a local model, choose \"Custom API (OpenAI Compatible)\" instead.",
"customApiHint": "Use this for custom OpenAI-compatible endpoints. You can configure the base URL, use your own model name, and choose Chat Completions or Responses as the request style.",
- "dashscopeHint": "DashScope supports both OpenAI-compatible Chat Completions and Responses APIs. You can switch the request style here directly."
+ "dashscopeHint": "DashScope supports both OpenAI-compatible Chat Completions and Responses APIs. You can switch the request style here directly.",
+ "minimaxHint": "The default endpoint is the global MiniMax OpenAI-compatible API. Mainland China users should set API URL to https://api.minimaxi.com/v1. Do not use Anthropic-format MiniMax endpoints here."
},
"connection": {
"accountId": "Account ID",
diff --git a/packages/ui/src/i18n/locales/zh-CN/models.ts b/packages/ui/src/i18n/locales/zh-CN/models.ts
index 088b6c0f..8944c368 100644
--- a/packages/ui/src/i18n/locales/zh-CN/models.ts
+++ b/packages/ui/src/i18n/locales/zh-CN/models.ts
@@ -14,6 +14,7 @@ const messages = {
"modelKey": "模型标识",
"apiUrl": "API地址",
"apiUrlHint": "示例:https://api.example.com/v1;多数提供商地址通常以 /v1 结尾",
+ "apiUrlHintAriaLabel": "显示 API 地址说明",
"defaultModel": "默认模型",
"selectModel": "选择模型",
"clickToFetchModels": "点击箭头获取模型列表",
@@ -27,7 +28,8 @@ const messages = {
"placeholder": "选择提供商",
"openaiHint": "官方 OpenAI API 入口。如果你想接入自定义 Base URL、第三方兼容服务或本地模型,请选择“Custom API (OpenAI Compatible)”。",
"customApiHint": "用于接入自定义 OpenAI 兼容接口。你可以配置 Base URL、自定义模型名,并选择 Chat Completions 或 Responses 请求风格。",
- "dashscopeHint": "阿里百炼已支持 OpenAI 兼容的 Chat Completions 与 Responses 接口。当前可直接在这里切换请求风格进行使用。"
+ "dashscopeHint": "阿里百炼已支持 OpenAI 兼容的 Chat Completions 与 Responses 接口。当前可直接在这里切换请求风格进行使用。",
+ "minimaxHint": "默认地址是 MiniMax 海外 OpenAI 兼容接口。国内用户请将 API 地址改为 https://api.minimaxi.com/v1;这里不要使用 MiniMax 的 Anthropic 格式地址。"
},
"connection": {
"accountId": "账户 ID",
diff --git a/packages/ui/src/i18n/locales/zh-TW/models.ts b/packages/ui/src/i18n/locales/zh-TW/models.ts
index 36926e90..6a0a13ec 100644
--- a/packages/ui/src/i18n/locales/zh-TW/models.ts
+++ b/packages/ui/src/i18n/locales/zh-TW/models.ts
@@ -14,6 +14,7 @@ const messages = {
"modelKey": "模型標識",
"apiUrl": "API位址",
"apiUrlHint": "範例:https://api.example.com/v1;多數提供商位址通常以 /v1 結尾",
+ "apiUrlHintAriaLabel": "顯示 API 位址說明",
"defaultModel": "預設模型",
"clickToFetchModels": "點選箭頭取得模型清單",
"apiKey": "API金鑰",
@@ -26,7 +27,8 @@ const messages = {
"placeholder": "選擇提供商",
"openaiHint": "這是官方 OpenAI API 入口。如果你想接入自訂 Base URL、第三方相容服務或本地模型,請選擇「Custom API (OpenAI Compatible)」。",
"customApiHint": "用於接入自訂 OpenAI 相容接口。你可以配置 Base URL、自訂模型名稱,並選擇 Chat Completions 或 Responses 請求風格。",
- "dashscopeHint": "阿里百鍊已支援 OpenAI 相容的 Chat Completions 與 Responses 接口,目前可直接在這裡切換請求風格使用。"
+ "dashscopeHint": "阿里百鍊已支援 OpenAI 相容的 Chat Completions 與 Responses 接口,目前可直接在這裡切換請求風格使用。",
+ "minimaxHint": "預設位址是 MiniMax 海外 OpenAI 相容接口。中國大陸用戶請將 API 位址改為 https://api.minimaxi.com/v1;這裡不要使用 MiniMax 的 Anthropic 格式位址。"
},
"connection": {
"accountId": "帳戶 ID",
diff --git a/packages/ui/tests/unit/i18n/runtime-english-guards.spec.ts b/packages/ui/tests/unit/i18n/runtime-english-guards.spec.ts
index 0d158355..ccea192f 100644
--- a/packages/ui/tests/unit/i18n/runtime-english-guards.spec.ts
+++ b/packages/ui/tests/unit/i18n/runtime-english-guards.spec.ts
@@ -138,6 +138,20 @@ describe('ui runtime english guards', () => {
expect(source).not.toMatch(/'Unknown error'/)
})
+ it('keeps text model API URL and MiniMax guidance locale-backed', () => {
+ const source = readUiSource('src/components/TextModelEditModal.vue')
+
+ expect(source).toMatch(/NTooltip/)
+ expect(source).toMatch(/modelManager\.apiUrlHintAriaLabel/)
+ expect(source).toMatch(/modelManager\.provider\.minimaxHint/)
+ expect(source).not.toMatch(/:title="t\('modelManager\.apiUrlHint'\)"/)
+
+ expect(enUS.modelManager.apiUrlHintAriaLabel).toBe('Show API URL help')
+ expect(enUS.modelManager.provider.minimaxHint).toContain('https://api.minimaxi.com/v1')
+ expect(zhCN.modelManager.provider.minimaxHint).toContain('https://api.minimaxi.com/v1')
+ expect(zhTW.modelManager.provider.minimaxHint).toContain('https://api.minimaxi.com/v1')
+ })
+
it('keeps prompt testing and test mode config free of hardcoded chinese runtime strings', () => {
const promptTesterSource = readUiSource('src/composables/prompt/usePromptTester.ts')
const modeConfigSource = readUiSource('src/composables/ui/useTestModeConfig.ts')