MiniMax AI 项目结构与原理

编程技巧 网站经验
📅 2026-04-09 16:39 👤 admin

## MiniMax AI 项目结构与原理

### 📁 文件结构

```
ForAI/
├── config.py          # 配置文件
├── main.py            # 命令行入口
├── minimax_client.py  # API 客户端封装
├── requirements.txt   # 依赖列表
└── .env.example       # 环境变量示例(已弃用)
```

### 🔧 各文件详解

**1. config.py - 配置管理**
```python
MINIMAX_API_KEY = "sk-cp-..."  # API 密钥(写死)
MINIMAX_BASE_URL = "https://api.minimaxi.com/anthropic"  # API 地址
DEFAULT_MODEL = "image-01"  # 默认模型
MAX_TOKENS = 4096  # 最大生成 token 数
TEMPERATURE = 1.0  # 随机性参数
```
原理:集中管理所有配置,简化其他文件的引用。

**2. minimax_client.py - 核心客户端**

```python
class MiniMaxClient:
    # __init__: 初始化 Anthropic SDK 客户端
    # chat(): 支持流式/非流式文字对话
    # simple_chat(): 简易单轮对话
    # generate_image(): 调用 /v1/image_generation 生成图片
```

原理:
- 使用 `anthropic` 官方 SDK 进行文字对话
- 使用 `requests` 库直接调用图像生成 API(因为 SDK 不支持)

**3. main.py - 命令行入口**

使用 `argparse` 解析命令行参数:
- `-m/--message`: 发送的消息
- `-s/--system`: 系统提示词
- `--stream`: 开启流式输出
- `--image/-i`: 图像生成模式
- `--width/--height`: 像素尺寸
- `--aspect-ratio`: 比例(如 16:9)
- `--n`: 生成数量

### 🔄 工作流程

```
用户输入命令
    ↓
main.py 解析参数
    ↓
创建 MiniMaxClient 实例
    ↓
调用相应方法
    ├── chat() / simple_chat() → 文字对话
    └── generate_image() → 图像生成
    ↓
API 返回响应
    ↓
解析并打印结果
```

### 📡 API 调用原理

**文字对话**(使用 Anthropic SDK):
```
client.messages.create(
    model="MiniMax-M2.7-highspeed",
    messages=[{"role": "user", "content": "..."}],
    system="你是一个助手"
)
```

**图像生成**(直接调用 REST API):
```python
requests.post(
    "https://api.minimaxi.com/v1/image_generation",
    headers={"Authorization": f"Bearer {api_key}"},
    json={
        "model": "image-01",
        "prompt": "...",
        "aspect_ratio": "1:1",
        "n": 1
    }
)
```

### 🔑 核心概念

| 参数 | 作用 |
|------|------|
| `temperature` | 控制输出随机性,1.0 为标准,较低值更确定 |
| `max_tokens` | 限制最大生成长度 |
| `stream` | 是否逐字输出(打字机效果) |
| `prompt_optimizer` | 是否让 AI 优化提示词 |
| `aspect_ratio` | 图像宽高比 |

### 🚀 运行示例

```bash
# 文字对话
python main.py -m "你好"

# 流式对话
python main.py -m "写一个故事" --stream

# 生成图片
python main.py -m "一只猫" --image --width 512 --height 512
```

相关笔记