Files
skill-seekers-reference/docs/integrations/MINIMAX_INTEGRATION.md
yusyus 4f87de6b56 fix: improve MiniMax adaptor from PR #318 review (#319)
* feat: add MiniMax AI as LLM platform adaptor

Original implementation by octo-patch in PR #318.
This commit includes comprehensive improvements and documentation.

Code Improvements:
- Fix API key validation to properly check JWT format (eyJ prefix)
- Add specific exception handling for timeout and connection errors
- Remove unused variable in upload method

Dependencies:
- Add MiniMax to [all-llms] extra group in pyproject.toml

Tests:
- Remove duplicate setUp method in integration test class
- Add 4 new test methods:
  * test_package_excludes_backup_files
  * test_upload_success_mocked (with OpenAI mocking)
  * test_upload_network_error
  * test_upload_connection_error
  * test_validate_api_key_jwt_format
- Update test_validate_api_key_valid to use JWT format keys
- Fix test assertions for error message matching

Documentation:
- Create comprehensive MINIMAX_INTEGRATION.md guide (380+ lines)
- Update MULTI_LLM_SUPPORT.md with MiniMax platform entry
- Update 01-installation.md extras table
- Update INTEGRATIONS.md AI platforms table
- Update AGENTS.md adaptor import pattern example
- Fix README.md platform count from 4 to 5

All tests pass (33 passed, 3 skipped)
Lint checks pass

Co-authored-by: octo-patch <octo-patch@users.noreply.github.com>

* fix: improve MiniMax adaptor — typed exceptions, key validation, tests, docs

- Remove invalid "minimax" self-reference from all-llms dependency group
- Use typed OpenAI exceptions (APITimeoutError, APIConnectionError)
  instead of string-matching on generic Exception
- Replace incorrect JWT assumption in validate_api_key with length check
- Use DEFAULT_API_ENDPOINT constant instead of hardcoded URLs (3 sites)
- Add Path() cast for output_path before .is_dir() call
- Add sys.modules mock to test_enhance_missing_library
- Add mocked test_enhance_success with backup/content verification
- Update test assertions for new exception types and key validation
- Add MiniMax to __init__.py docstrings (module, get_adaptor, list_platforms)
- Add MiniMax sections to MULTI_LLM_SUPPORT.md (install, format, API key,
  workflow example, export-to-all)

Follows up on PR #318 by @octo-patch (feat: add MiniMax AI as LLM platform adaptor).

Co-Authored-By: Octopus <octo-patch@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: octo-patch <octo-patch@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 22:12:23 +03:00

392 lines
9.1 KiB
Markdown

# MiniMax AI Integration Guide
Complete guide for using Skill Seekers with MiniMax AI platform.
---
## Overview
**MiniMax AI** is a Chinese AI company offering OpenAI-compatible APIs with their M2.7 model. Skill Seekers packages documentation for use with MiniMax's platform.
### Key Features
- **OpenAI-Compatible API**: Uses standard OpenAI client library
- **MiniMax-M2.7 Model**: Powerful LLM for enhancement and chat
- **Simple ZIP Format**: Easy packaging with system instructions
- **Knowledge Files**: Reference documentation included in package
---
## Prerequisites
### 1. Get MiniMax API Key
1. Visit [MiniMax Platform](https://platform.minimaxi.com/)
2. Create an account and verify
3. Navigate to API Keys section
4. Generate a new API key
5. Copy the key (starts with `eyJ` - JWT format)
### 2. Install Dependencies
```bash
# Install MiniMax support (includes openai library)
pip install skill-seekers[minimax]
# Or install all LLM platforms
pip install skill-seekers[all-llms]
```
### 3. Configure Environment
```bash
export MINIMAX_API_KEY=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
```
Add to your `~/.bashrc`, `~/.zshrc`, or `.env` file for persistence.
---
## Complete Workflow
### Step 1: Scrape Documentation
```bash
# Scrape documentation website
skill-seekers scrape --config configs/react.json
# Or use quick preset
skill-seekers create https://docs.python.org/3/ --preset quick
```
### Step 2: Enhance with MiniMax-M2.7
```bash
# Enhance SKILL.md using MiniMax AI
skill-seekers enhance output/react/ --target minimax
# With custom model (if available)
skill-seekers enhance output/react/ --target minimax --model MiniMax-M2.7
```
This step:
- Reads reference documentation
- Generates enhanced system instructions
- Creates backup of original SKILL.md
- Uses MiniMax-M2.7 for AI enhancement
### Step 3: Package for MiniMax
```bash
# Package as MiniMax-compatible ZIP
skill-seekers package output/react/ --target minimax
# Custom output path
skill-seekers package output/react/ --target minimax --output my-skill.zip
```
**Output structure:**
```
react-minimax.zip
├── system_instructions.txt # Main instructions (from SKILL.md)
├── knowledge_files/ # Reference documentation
│ ├── guide.md
│ ├── api-reference.md
│ └── examples.md
└── minimax_metadata.json # Skill metadata
```
### Step 4: Validate Package
```bash
# Validate package with MiniMax API
skill-seekers upload react-minimax.zip --target minimax
```
This validates:
- Package structure
- API connectivity
- System instructions format
**Note:** MiniMax doesn't have persistent skill storage like Claude. The upload validates your package but you'll use the ZIP file directly with MiniMax's API.
---
## Using Your Skill
### Direct API Usage
```python
from openai import OpenAI
import zipfile
import json
# Extract package
with zipfile.ZipFile('react-minimax.zip', 'r') as zf:
with zf.open('system_instructions.txt') as f:
system_instructions = f.read().decode('utf-8')
# Load metadata
with zf.open('minimax_metadata.json') as f:
metadata = json.load(f)
# Initialize MiniMax client (OpenAI-compatible)
client = OpenAI(
api_key="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
base_url="https://api.minimax.io/v1"
)
# Use with chat completions
response = client.chat.completions.create(
model="MiniMax-M2.7",
messages=[
{"role": "system", "content": system_instructions},
{"role": "user", "content": "How do I create a React component?"}
],
temperature=0.3,
max_tokens=2000
)
print(response.choices[0].message.content)
```
### With Knowledge Files
```python
import zipfile
from pathlib import Path
# Extract knowledge files
with zipfile.ZipFile('react-minimax.zip', 'r') as zf:
zf.extractall('extracted_skill')
# Read all knowledge files
knowledge_dir = Path('extracted_skill/knowledge_files')
knowledge_files = []
for md_file in knowledge_dir.glob('*.md'):
knowledge_files.append({
'name': md_file.name,
'content': md_file.read_text()
})
# Include in context (truncate if too long)
context = "\n\n".join([f"## {kf['name']}\n{kf['content'][:5000]}"
for kf in knowledge_files[:5]])
response = client.chat.completions.create(
model="MiniMax-M2.7",
messages=[
{"role": "system", "content": system_instructions},
{"role": "user", "content": f"Context: {context}\n\nQuestion: What are React hooks?"}
]
)
```
---
## API Reference
### SkillAdaptor Methods
```python
from skill_seekers.cli.adaptors import get_adaptor
# Get MiniMax adaptor
adaptor = get_adaptor('minimax')
# Format SKILL.md as system instructions
instructions = adaptor.format_skill_md(skill_dir, metadata)
# Package skill
package_path = adaptor.package(skill_dir, output_path)
# Validate package with MiniMax API
result = adaptor.upload(package_path, api_key)
print(result['message']) # Validation result
# Enhance SKILL.md
success = adaptor.enhance(skill_dir, api_key)
```
### Environment Variables
| Variable | Description | Required |
|----------|-------------|----------|
| `MINIMAX_API_KEY` | Your MiniMax API key (JWT format) | Yes |
---
## Troubleshooting
### Invalid API Key Format
**Error:** `Invalid API key format`
**Solution:** MiniMax API keys use JWT format starting with `eyJ`. Check:
```bash
# Should start with 'eyJ'
echo $MINIMAX_API_KEY | head -c 10
# Output: eyJhbGciOi
```
### OpenAI Library Not Installed
**Error:** `ModuleNotFoundError: No module named 'openai'`
**Solution:**
```bash
pip install skill-seekers[minimax]
# or
pip install openai>=1.0.0
```
### Upload Timeout
**Error:** `Upload timed out`
**Solution:**
- Check internet connection
- Try again (temporary network issue)
- Verify API key is correct
- Check MiniMax platform status
### Connection Error
**Error:** `Connection error`
**Solution:**
- Verify internet connectivity
- Check if MiniMax API endpoint is accessible:
```bash
curl https://api.minimax.io/v1/models
```
- Try with VPN if in restricted region
### Package Validation Failed
**Error:** `Invalid package: system_instructions.txt not found`
**Solution:**
- Ensure SKILL.md exists before packaging
- Check package contents:
```bash
unzip -l react-minimax.zip
```
- Re-package the skill
---
## Best Practices
### 1. Keep References Organized
Structure your documentation:
```
output/react/
├── SKILL.md # Main instructions
├── references/
│ ├── 01-getting-started.md
│ ├── 02-components.md
│ ├── 03-hooks.md
│ └── 04-api-reference.md
└── assets/
└── diagrams/
```
### 2. Use Enhancement
Always enhance before packaging:
```bash
# Enhancement improves system instructions quality
skill-seekers enhance output/react/ --target minimax
```
### 3. Test Before Deployment
```bash
# Validate package
skill-seekers upload react-minimax.zip --target minimax
# If successful, package is ready to use
```
### 4. Version Your Skills
```bash
# Include version in output name
skill-seekers package output/react/ --target minimax --output react-v2.0-minimax.zip
```
---
## Comparison with Other Platforms
| Feature | MiniMax | Claude | Gemini | OpenAI |
|---------|---------|--------|--------|--------|
| **Format** | ZIP | ZIP | tar.gz | ZIP |
| **Upload** | Validation | Full API | Full API | Full API |
| **Enhancement** | MiniMax-M2.7 | Claude Sonnet | Gemini 2.0 | GPT-4o |
| **API Type** | OpenAI-compatible | Anthropic | Google | OpenAI |
| **Key Format** | JWT (eyJ...) | sk-ant... | AIza... | sk-... |
| **Knowledge Files** | Included in ZIP | Included | Included | Vector Store |
---
## Advanced Usage
### Custom Enhancement Prompt
Programmatically customize enhancement:
```python
from skill_seekers.cli.adaptors import get_adaptor
from pathlib import Path
adaptor = get_adaptor('minimax')
skill_dir = Path('output/react')
# Build custom prompt
references = adaptor._read_reference_files(skill_dir / 'references')
prompt = adaptor._build_enhancement_prompt(
skill_name='React',
references=references,
current_skill_md=(skill_dir / 'SKILL.md').read_text()
)
# Customize prompt
prompt += "\n\nADDITIONAL FOCUS: Emphasize React 18 concurrent features."
# Use with your own API call
```
### Batch Processing
```bash
# Process multiple frameworks
for framework in react vue angular; do
skill-seekers scrape --config configs/${framework}.json
skill-seekers enhance output/${framework}/ --target minimax
skill-seekers package output/${framework}/ --target minimax --output ${framework}-minimax.zip
done
```
---
## Resources
- [MiniMax Platform](https://platform.minimaxi.com/)
- [MiniMax API Documentation](https://platform.minimaxi.com/document)
- [OpenAI Python Client](https://github.com/openai/openai-python)
- [Multi-LLM Support Guide](MULTI_LLM_SUPPORT.md)
---
## Next Steps
1. Get your [MiniMax API key](https://platform.minimaxi.com/)
2. Install dependencies: `pip install skill-seekers[minimax]`
3. Try the [Quick Start example](#complete-workflow)
4. Explore [advanced usage](#advanced-usage) patterns
For help, see [Troubleshooting](#troubleshooting) or open an issue on GitHub.