6.6 KiB
6.6 KiB
变更日志:增加国内大模型厂商接入
版本信息
- 版本:v1.1.0(计划)
- 日期:2026-03-31
- 状态:计划中
功能概述
为 MimiClaw 项目增加国内大模型厂商的接入支持,包括:
- 硅基流动 (SiliconFlow) - 提供免费模型和多种高性能大模型
- 火山方舟 (Volcengine Ark) - 字节跳动豆包模型系列
实施计划
阶段一:准备与设计(1-2天)
1.1 详细API调研
-
研究硅基流动API文档,确认:
- 具体的Base URL和端点
- 认证方式(API Key格式)
- 支持的模型列表和ID格式
- 工具调用兼容性
- 速率限制和配额
-
研究火山方舟API文档,确认:
- 具体的Base URL和端点
- 认证方式(API Key格式)
- 支持的模型列表和ID格式
- 工具调用兼容性
- 速率限制和配额
1.2 架构设计
- 设计提供商扩展机制
- 确定配置管理方案
- 设计命令行接口扩展
- 评估内存影响
阶段二:核心实现(3-5天)
2.1 配置系统扩展
-
修改
mimi_secrets.h.example添加新配置项:/* 国内大模型厂商配置 */ #define MIMI_SECRET_SILICONFLOW_API_KEY "" #define MIMI_SECRET_SILICONFLOW_BASE_URL "https://api.siliconflow.cn/v1" #define MIMI_SECRET_VOLCENGINE_API_KEY "" #define MIMI_SECRET_VOLCENGINE_BASE_URL "https://ark.cn-beijing.volces.com/api/v3" -
更新
mimi_config.h添加相关默认值
2.2 LLM代理扩展
-
修改
llm_proxy.c支持新的提供商:- 添加
provider_is_siliconflow()函数 - 添加
provider_is_volcengine()函数 - 扩展
llm_api_url()函数支持新提供商 - 扩展
llm_api_host()函数支持新提供商 - 扩展
llm_api_path()函数支持新提供商
- 添加
-
添加Base URL配置支持:
static char s_siliconflow_base_url[256] = "https://api.siliconflow.cn/v1"; static char s_volcengine_base_url[256] = "https://ark.cn-beijing.volces.com/api/v3"; -
修改HTTP请求头设置逻辑:
- 硅基流动:使用Bearer Token认证
- 火山方舟:使用Bearer Token认证(假设与OpenAI兼容)
-
添加模型名称转换逻辑(如果需要)
2.3 命令行界面扩展
-
在
serial_cli.c添加新命令:set_siliconflow_key <key>:设置硅基流动API密钥set_siliconflow_url <url>:设置硅基流动Base URLset_volcengine_key <key>:设置火山方舟API密钥set_volcengine_url <url>:设置火山方舟Base URL
-
更新现有命令的帮助信息
-
更新
config_show命令显示新配置
2.4 提供商切换机制
-
修改
set_model_provider命令支持新提供商:- 支持值:
anthropic,openai,siliconflow,volcengine
- 支持值:
-
更新NVS存储键名:
- 可能需要扩展
MIMI_NVS_KEY_PROVIDER支持更多值
- 可能需要扩展
阶段三:测试与优化(2-3天)
3.1 功能测试
-
单元测试:
- 提供商检测函数测试
- API URL生成测试
- 请求头设置测试
-
集成测试:
- 硅基流动API连接测试
- 火山方舟API连接测试
- 工具调用功能测试
- 提供商切换测试
3.2 性能优化
-
内存使用优化:
- 评估新增变量对内存的影响
- 优化字符串存储大小
-
网络性能:
- 测试国内网络环境下的连接稳定性
- 优化超时设置
3.3 错误处理
- 添加详细的错误日志
- 处理API特定的错误响应
- 添加重试机制(如果需要)
阶段四:文档与发布(1天)
4.1 文档更新
- 更新
README.md添加新功能说明 - 更新
mimi_secrets.h.example添加配置示例 - 创建国内大模型厂商配置指南
- 更新串口CLI命令文档
4.2 发布准备
- 代码审查
- 最终测试
- 创建发布标签
技术细节
提供商检测逻辑
// 在 llm_proxy.c 中添加
static bool provider_is_siliconflow(void) {
return strcmp(s_provider, "siliconflow") == 0;
}
static bool provider_is_volcengine(void) {
return strcmp(s_provider, "volcengine") == 0;
}
API URL 配置
// 扩展 llm_api_url 函数
static const char *llm_api_url(void) {
if (provider_is_openai()) {
return MIMI_OPENAI_API_URL;
} else if (provider_is_siliconflow()) {
return s_siliconflow_base_url;
} else if (provider_is_volcengine()) {
return s_volcengine_base_url;
} else {
return MIMI_LLM_API_URL; // Anthropic
}
}
请求头设置
// 扩展 HTTP 请求头设置
if (provider_is_openai() || provider_is_siliconflow() || provider_is_volcengine()) {
// OpenAI兼容的Bearer Token认证
if (s_api_key[0]) {
char auth[LLM_API_KEY_MAX_LEN + 16];
snprintf(auth, sizeof(auth), "Bearer %s", s_api_key);
esp_http_client_set_header(client, "Authorization", auth);
}
} else {
// Anthropic的x-api-key认证
esp_http_client_set_header(client, "x-api-key", s_api_key);
esp_http_client_set_header(client, "anthropic-version", MIMI_LLM_API_VERSION);
}
风险评估与缓解
风险1:API兼容性问题
- 风险:国内厂商的API可能与OpenAI有细微差异
- 缓解:详细测试,添加兼容性处理代码
风险2:内存限制
- 风险:新增配置可能超出ESP32-S3内存限制
- 缓解:优化字符串存储,使用固定大小数组
风险3:网络连接问题
- 风险:国内网络环境可能影响API调用
- 缓解:添加重试机制,优化超时设置
风险4:认证安全
- 风险:API密钥存储和传输安全
- 缓解:使用现有的NVS加密存储,确保安全传输
预期成果
- 功能完成:支持硅基流动和火山方舟两个国内大模型厂商
- 配置灵活:用户可以通过命令行或配置文件灵活配置
- 向后兼容:不影响现有的Anthropic和OpenAI功能
- 文档完整:提供完整的配置和使用文档
时间估算
- 总时间:7-11个工作日
- 阶段一:1-2天
- 阶段二:3-5天
- 阶段三:2-3天
- 阶段四:1天
依赖项
-
外部依赖:
- 硅基流动API访问权限
- 火山方舟API访问权限
- 稳定的网络连接
-
内部依赖:
- 现有的LLM代理架构
- 配置管理系统
- 命令行界面系统
成功标准
- 可以成功连接硅基流动API并获取响应
- 可以成功连接火山方舟API并获取响应
- 工具调用功能在两个新提供商上正常工作
- 提供商切换功能正常
- 内存使用在可接受范围内
- 所有现有功能保持正常