feat: support SDK#122
Open
FliPPeDround wants to merge 1 commit intoMiniMax-AI:mainfrom
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
关联issue #83
1. PR简介
MiniMaxSDK主类,提供文本、图像、视频、语音、音乐、搜索、视觉、配额 8 大功能模块Client基类,封装配置加载和 HTTP 请求逻辑2. 可视化架构图
SDK 整体架构
graph TD subgraph "SDK 入口层" A["MiniMaxSDK<br/>src/sdk/index.ts"] end subgraph "核心基础设施" B["Client<br/>src/sdk/client.ts"] C["MiniMaxSDKOptions<br/>src/sdk/types.ts"] end subgraph "AI 能力模块" D["TextSDK<br/>文本对话"] E["SpeechSDK<br/>语音合成"] F["ImageSDK<br/>图像生成"] G["VideoSDK<br/>视频生成"] H["MusicSDK<br/>音乐生成"] I["SearchSDK<br/>网络搜索"] J["VisionSDK<br/>图像理解"] K["QuotaSDK<br/>配额查询"] end subgraph "底层服务" L["loadConfig<br/>配置加载"] M["request/requestJson<br/>HTTP 客户端"] N["parseSSE<br/>流式解析"] O["poll<br/>任务轮询"] end A -->|继承| B A -->|使用| C B -->|调用| L B -->|调用| M B -->|调用| N B -->|调用| O A -->|聚合| D A -->|聚合| E A -->|聚合| F A -->|聚合| G A -->|聚合| H A -->|聚合| I A -->|聚合| J A -->|聚合| K D -->|继承| B E -->|继承| B F -->|继承| B G -->|继承| B H -->|继承| B I -->|继承| B J -->|继承| B K -->|继承| B style A fill:#bbdefb,color:#0d47a1 style B fill:#c8e6c9,color:#1a5e20 style D fill:#fff3e0,color:#e65100 style E fill:#fff3e0,color:#e65100 style F fill:#fff3e0,color:#e65100 style G fill:#fff3e0,color:#e65100 style H fill:#fff3e0,color:#e65100 style I fill:#fff3e0,color:#e65100 style J fill:#fff3e0,color:#e65100 style K fill:#fff3e0,color:#e651003. 详细变更分析
3.1 核心基础设施
Client 基类 (
src/sdk/client.ts)MiniMaxSDKOptions,调用loadConfig加载配置request()方法处理流式请求requestJson<T>()方法处理 JSON 响应protected修饰符,仅允许子类访问请求方法类型定义 (
src/sdk/types.ts)ModelPartial<T>- 可选化model字段的工具类型主 SDK 类 (
src/sdk/index.ts)MiniMaxSDK主入口类Client基类readonly属性3.2 构建配置
构建脚本 (
build.ts)src/main.tsdist/mmx.mjssrc/sdk/index.tsdist/sdk.mjs.d.tsbun-plugin-dts- 生成 TypeScript 类型声明文件包配置 (
package.json)filesdist/mmx.mjsdist/mmx.mjs,dist/sdk.mjs,dist/index.d.tsexports./sdk路径导出dependencies——bun-plugin-dts,es-toolkit3.3 文档更新
README.md & README_CN.md
3.4 测试覆盖
新增测试文件
test/sdk/text.test.tstest/sdk/speech.test.tstest/sdk/music.test.tstest/sdk/video.test.tstest/sdk/image.test.tstest/sdk/vision.test.tstest/sdk/search.test.tstest/sdk/quota.test.tscreateMockServer创建模拟服务器4. 影响与风险评估
✅ 兼容性
exports字段支持import { MiniMaxSDK } from 'mmx-cli/sdk'🧪 测试建议
📦 依赖项变更
bun-plugin-dts^0.4.0es-toolkit^1.46.1toMerged)5. 使用示例
快速开始
6. 总结
7. 问题
CLI 的参数校验逻辑目前内聚在
defineCommand内部,迁移成本较高,因此本次实现的参数校验功能并未与 CLI 复用。这会增加后续的维护负担,需要明确未来的解耦方向,将校验逻辑抽象为可共享的模块。为遵循最小改动原则,仓库未进行 monorepo 改造。当前 SDK 通过
import { MiniMaxSDK } from 'mmx-cli/sdk'的方式引用,导致安装时附带了 CLI 相关功能,引入了非必要的依赖,增加了安装体积。当前构建产物大小如下:dist/mmx.mjsdist/sdk.mjs我个人的 token-plan 不支持视频生成能力,因此未对视频处理能力的完善度进行校验。