4.4 KiB
4.4 KiB
讨论记录:增加国内大模型厂商接入
对话概述
日期:2026-03-31
目标:为 MimiClaw 项目增加国内大模型厂商的接入,特别是硅基流动和火山方舟(豆包模型)
对话内容
用户需求
用户希望给当前项目增加国内大模型厂商的接入,包括:
- 硅基流动的免费模型
- 火山方舟的豆包模型
项目现状分析
项目基本信息
- 项目名称:MimiClaw
- 运行平台:ESP32-S3(纯C语言)
- 交互方式:Telegram机器人
- 功能:AI助手,支持工具调用,本地记忆
当前LLM集成状态
-
支持的提供商:
- Anthropic (Claude)
- OpenAI (GPT)
-
配置方式:
- 构建时配置:
main/mimi_secrets.h - 运行时配置:串口CLI命令,存储在NVS中
- 构建时配置:
-
关键代码文件:
main/llm/llm_proxy.c:LLM代理核心实现main/llm/llm_proxy.h:LLM代理头文件main/mimi_config.h:全局配置定义main/cli/serial_cli.c:命令行界面
-
提供商检测机制:
provider_is_openai()函数检查是否为OpenAI提供商- 根据提供商选择不同的API URL、Host和Path
国内大模型厂商API兼容性调研
硅基流动 (SiliconFlow)
- API兼容性:OpenAI兼容模式
- Base URL:
https://api.siliconflow.cn/v1 - 特点:
- 提供100+高性能大模型
- 新用户注册送免费额度
- 价格比OpenAI官方便宜80%+
- 支持OpenClaw等工具集成
火山方舟 (字节跳动豆包模型)
- API兼容性:兼容OpenAI SDK
- Base URL:
https://ark.cn-beijing.volces.com/api/v3 - 特点:
- 豆包大模型系列
- 新用户首次开通可享受50万token免费试用
- 支持函数调用、工具调用等高级功能
技术实现分析
当前架构特点
-
提供商抽象:
- 使用
s_provider变量存储提供商名称 - 通过
provider_is_openai()函数区分提供商 - 根据提供商选择不同的API配置
- 使用
-
API调用流程:
- 构建请求体
- 设置请求头(根据提供商不同)
- 发送HTTP请求
- 解析响应(根据提供商不同)
-
工具调用支持:
- 支持Anthropic的tool_use格式
- 支持OpenAI的function calling格式
- 有格式转换函数
convert_tools_openai()
实现方案讨论
由于硅基流动和火山方舟都提供OpenAI兼容的API,理论上可以复用现有的OpenAI集成代码,只需要:
- 修改Base URL
- 可能需要调整认证方式
- 可能需要处理特定的模型名称
待解决问题
-
认证方式差异:
- 硅基流动:使用API Key
- 火山方舟:可能使用不同的认证方式
-
模型名称规范:
- 需要了解具体的模型ID格式
- 例如:硅基流动的
deepseek-ai/DeepSeek-V3,火山方舟的豆包模型名称
-
功能支持差异:
- 工具调用格式是否完全兼容
- 上下文长度限制
- 特殊功能支持情况
下一步计划
基于讨论,制定了以下实施计划:
阶段一:准备与设计
- 详细调研硅基流动和火山方舟的API文档
- 确定具体的实现方案
- 设计配置结构和命令行接口
阶段二:核心实现
- 修改LLM代理以支持新的提供商
- 添加配置管理功能
- 更新命令行界面
阶段三:测试与优化
- 功能测试
- 性能优化
- 文档更新
相关资源
项目文件
main/llm/llm_proxy.c:LLM代理实现main/llm/llm_proxy.h:LLM代理头文件main/mimi_config.h:配置定义main/cli/serial_cli.c:命令行界面
外部文档
- 硅基流动OpenClaw集成文档
- 火山方舟兼容OpenAI SDK文档
- ESP32-S3开发文档
技术要点总结
- 复用现有架构:可以充分利用现有的OpenAI集成代码
- 提供商扩展:需要扩展提供商检测和配置机制
- 配置管理:需要支持新的API密钥和Base URL配置
- 兼容性处理:可能需要处理API响应格式的细微差异
风险与挑战
- API兼容性风险:虽然声称兼容,但可能存在细微差异
- 内存限制:ESP32-S3内存有限,需要确保新功能不会导致内存不足
- 网络稳定性:国内网络环境可能影响API调用稳定性
- 认证安全性:需要确保API密钥的安全存储和传输