# 小米 Mimo API 修复说明

## 修复时间
2026-01-26

## 问题描述
小米 Mimo 模型 API 请求失败，无法正常调用 MiMo-V2-Flash 模型。

## 修复内容

### 1. 优化 `argon_call_xiaomi_api` 函数

**修改位置**: `functions.php` 第 8047-8140 行

**主要改进**:
- ✅ 添加 `stream` 参数，明确设置为 `false`（非流式响应）
- ✅ 添加 `Accept` 请求头，明确接受 JSON 格式
- ✅ 使用 `JSON_UNESCAPED_UNICODE` 标志编码请求体，确保中文字符正确传输
- ✅ 明确设置 `sslverify` 为 `true`，确保 SSL 验证

**修改前**:
```php
$data = [
	'model' => $model,
	'messages' => [
		['role' => 'system', 'content' => $prompt],
		['role' => 'user', 'content' => $content]
	],
	'temperature' => 0.7,
	'max_tokens' => 500
];

$response = wp_remote_post($endpoint, [
	'headers' => [
		'Content-Type' => 'application/json',
		'Authorization' => 'Bearer ' . $api_key
	],
	'body' => json_encode($data),
	'timeout' => 30
]);
```

**修改后**:
```php
$data = [
	'model' => $model,
	'messages' => [
		['role' => 'system', 'content' => $prompt],
		['role' => 'user', 'content' => $content]
	],
	'temperature' => 0.7,
	'max_tokens' => 500,
	'stream' => false
];

$response = wp_remote_post($endpoint, [
	'headers' => [
		'Content-Type' => 'application/json',
		'Authorization' => 'Bearer ' . $api_key,
		'Accept' => 'application/json'
	],
	'body' => json_encode($data, JSON_UNESCAPED_UNICODE),
	'timeout' => 30,
	'sslverify' => true
]);
```

### 2. 增强 `argon_get_xiaomi_models` 函数

**修改位置**: `functions.php` 第 9009-9055 行

**主要改进**:
- ✅ 添加 `Accept` 请求头
- ✅ 明确设置 `sslverify` 为 `true`
- ✅ 添加详细的错误日志记录
- ✅ 记录 HTTP 状态码和响应内容，便于调试
- ✅ 改进错误处理逻辑

**新增错误日志**:
- API 调用失败时记录错误信息
- HTTP 状态码非 200 时记录状态码和响应内容
- 响应格式异常时记录原始响应

## 可能的问题原因

根据修复内容，原始代码可能存在以下问题：

1. **缺少 stream 参数**: 某些 API 实现要求明确指定是否使用流式响应
2. **缺少 Accept 头**: API 可能需要明确的 Accept 头来返回正确格式
3. **中文编码问题**: 未使用 `JSON_UNESCAPED_UNICODE` 可能导致中文字符编码错误
4. **缺少错误日志**: 之前无法诊断具体的失败原因

## 测试方法

### 方法 1: 使用测试脚本

1. 打开 `test-xiaomi-mimo-api.php` 文件
2. 将 `YOUR_API_KEY_HERE` 替换为你的实际 API 密钥
3. 在浏览器中访问: `https://your-domain.com/wp-content/themes/argon/test-xiaomi-mimo-api.php`
4. 查看测试结果，包括：
   - 基本 API 请求测试
   - 简化请求格式测试
   - 获取模型列表测试
   - cURL 命令示例

### 方法 2: 在 WordPress 后台测试

1. 进入 WordPress 后台 → Argon 主题设置
2. 找到 "AI 功能" → "API 管理"
3. 添加或编辑小米 Mimo API 配置
4. 点击"测试"按钮
5. 查看测试结果

### 方法 3: 查看错误日志

如果仍然失败，检查 WordPress 错误日志：

```bash
# 查看 PHP 错误日志
tail -f /path/to/php-error.log

# 或者 WordPress debug.log
tail -f /path/to/wp-content/debug.log
```

错误日志会包含：
- API 调用失败的具体错误信息
- HTTP 状态码
- API 响应内容

## 小米 Mimo API 规范

### 端点
- **Chat Completions**: `https://api.mimo.xiaomi.com/v1/chat/completions`
- **Models**: `https://api.mimo.xiaomi.com/v1/models`

### 认证
使用 Bearer Token 认证：
```
Authorization: Bearer YOUR_API_KEY
```

### 请求格式
```json
{
  "model": "MiMo-V2-Flash",
  "messages": [
    {"role": "system", "content": "你是一个有帮助的助手。"},
    {"role": "user", "content": "你好"}
  ],
  "temperature": 0.7,
  "max_tokens": 500,
  "stream": false
}
```

### 响应格式
```json
{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1234567890,
  "model": "MiMo-V2-Flash",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "你好！我是小米的 AI 助手..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 20,
    "total_tokens": 30
  }
}
```

## 支持的模型

根据官方文档，小米 Mimo 目前支持的模型：

- **MiMo-V2-Flash** (推荐)
  - 309B 总参数，15B 活跃参数
  - 256K 上下文窗口
  - 擅长推理、编码和 Agent 场景
  - 在 SWE-bench 上排名第一

## 常见问题

### Q1: API 密钥在哪里获取？
A: 访问 [小米 Mimo 平台](https://platform.xiaomimimo.com/) 注册并获取 API 密钥。

### Q2: API 是否免费？
A: 根据官方信息，MiMo-V2-Flash 目前处于公测阶段，可能提供免费额度。具体请查看官方文档。

### Q3: 为什么返回 401 错误？
A: 检查以下几点：
- API 密钥是否正确
- API 密钥是否已激活
- 是否正确设置了 Authorization 头

### Q4: 为什么返回 429 错误？
A: 请求频率超过限制，需要：
- 降低请求频率
- 检查是否有配额限制
- 联系小米客服增加配额

### Q5: 为什么返回 500 错误？
A: 服务器端错误，可能原因：
- API 服务暂时不可用
- 请求参数格式错误
- 模型名称错误

## 参考资料

- [LiteLLM - Xiaomi MiMo](https://docs.litellm.ai/docs/providers/xiaomi_mimo)
- [Puter.js - Free Xiaomi MiMo API](https://developer.puter.com/tutorials/free-unlimited-xiaomi-mimo-api/)
- [OpenRouter - MiMo-V2-Flash](https://openrouter.ai/xiaomi/mimo-v2-flash-20251210/api)
- [Hugging Face - MiMo-V2-Flash](https://huggingface.co/XiaomiMiMo/MiMo-V2-Flash)

## 后续优化建议

1. **添加重试机制**: 对于临时性失败，自动重试 2-3 次
2. **缓存模型列表**: 减少对 models 端点的请求
3. **支持流式响应**: 对于长文本生成，支持流式输出
4. **添加速率限制**: 避免触发 API 限流
5. **监控 API 使用**: 记录 API 调用次数和成本

## 相关文件

- `functions.php` - 核心函数（包含 API 调用逻辑）
- `test-xiaomi-mimo-api.php` - 测试脚本
- `settings.php` - 设置页面（AI 功能配置）

## Git 提交

提交信息将包含：
```
fix: 修复小米 Mimo API 请求失败的问题

- 添加 stream 参数明确设置为非流式响应
- 添加 Accept 请求头确保返回 JSON 格式
- 使用 JSON_UNESCAPED_UNICODE 编码确保中文正确传输
- 添加详细的错误日志记录便于调试
- 改进 SSL 验证设置
```
