* 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>
453 lines
11 KiB
Markdown
453 lines
11 KiB
Markdown
# Multi-LLM Platform Support Guide
|
|
|
|
Skill Seekers supports multiple LLM platforms through a clean adaptor system. The core scraping and content organization remains universal, while packaging and upload are platform-specific.
|
|
|
|
## Supported Platforms
|
|
|
|
| Platform | Status | Format | Upload | Enhancement | API Key Required |
|
|
|----------|--------|--------|--------|-------------|------------------|
|
|
| **Claude AI** | ✅ Full Support | ZIP + YAML | ✅ Automatic | ✅ Yes | ANTHROPIC_API_KEY |
|
|
| **Google Gemini** | ✅ Full Support | tar.gz | ✅ Automatic | ✅ Yes | GOOGLE_API_KEY |
|
|
| **OpenAI ChatGPT** | ✅ Full Support | ZIP + Vector Store | ✅ Automatic | ✅ Yes | OPENAI_API_KEY |
|
|
| **MiniMax AI** | ✅ Full Support | ZIP | ✅ Validation | ✅ Yes | MINIMAX_API_KEY |
|
|
| **Generic Markdown** | ✅ Export Only | ZIP | ❌ Manual | ❌ No | None |
|
|
|
|
## Quick Start
|
|
|
|
### Claude AI (Default)
|
|
|
|
No changes needed! All existing workflows continue to work:
|
|
|
|
```bash
|
|
# Scrape documentation
|
|
skill-seekers scrape --config configs/react.json
|
|
|
|
# Package for Claude (default)
|
|
skill-seekers package output/react/
|
|
|
|
# Upload to Claude
|
|
skill-seekers upload react.zip
|
|
```
|
|
|
|
### Google Gemini
|
|
|
|
```bash
|
|
# Install Gemini support
|
|
pip install skill-seekers[gemini]
|
|
|
|
# Set API key
|
|
export GOOGLE_API_KEY=AIzaSy...
|
|
|
|
# Scrape documentation (same as always)
|
|
skill-seekers scrape --config configs/react.json
|
|
|
|
# Package for Gemini
|
|
skill-seekers package output/react/ --target gemini
|
|
|
|
# Upload to Gemini
|
|
skill-seekers upload react-gemini.tar.gz --target gemini
|
|
|
|
# Optional: Enhance with Gemini
|
|
skill-seekers enhance output/react/ --target gemini
|
|
```
|
|
|
|
**Output:** `react-gemini.tar.gz` ready for Google AI Studio
|
|
|
|
### OpenAI ChatGPT
|
|
|
|
```bash
|
|
# Install OpenAI support
|
|
pip install skill-seekers[openai]
|
|
|
|
# Set API key
|
|
export OPENAI_API_KEY=sk-proj-...
|
|
|
|
# Scrape documentation (same as always)
|
|
skill-seekers scrape --config configs/react.json
|
|
|
|
# Package for OpenAI
|
|
skill-seekers package output/react/ --target openai
|
|
|
|
# Upload to OpenAI (creates Assistant + Vector Store)
|
|
skill-seekers upload react-openai.zip --target openai
|
|
|
|
# Optional: Enhance with GPT-4o
|
|
skill-seekers enhance output/react/ --target openai
|
|
```
|
|
|
|
**Output:** OpenAI Assistant created with file search enabled
|
|
|
|
### Generic Markdown (Universal Export)
|
|
|
|
```bash
|
|
# Package as generic markdown (no dependencies)
|
|
skill-seekers package output/react/ --target markdown
|
|
|
|
# Output: react-markdown.zip with:
|
|
# - README.md
|
|
# - references/*.md
|
|
# - DOCUMENTATION.md (combined)
|
|
```
|
|
|
|
**Use case:** Export for any LLM, documentation hosting, or manual distribution
|
|
|
|
## Installation Options
|
|
|
|
### Install Core Package Only
|
|
|
|
```bash
|
|
# Default installation (Claude support only)
|
|
pip install skill-seekers
|
|
```
|
|
|
|
### Install with Specific Platform Support
|
|
|
|
```bash
|
|
# Google Gemini support
|
|
pip install skill-seekers[gemini]
|
|
|
|
# OpenAI ChatGPT support
|
|
pip install skill-seekers[openai]
|
|
|
|
# MiniMax AI support
|
|
pip install skill-seekers[minimax]
|
|
|
|
# All LLM platforms
|
|
pip install skill-seekers[all-llms]
|
|
|
|
# Development dependencies (includes testing)
|
|
pip install skill-seekers[dev]
|
|
```
|
|
|
|
### Install from Source
|
|
|
|
```bash
|
|
git clone https://github.com/yusufkaraaslan/Skill_Seekers.git
|
|
cd Skill_Seekers
|
|
|
|
# Editable install with all platforms
|
|
pip install -e .[all-llms]
|
|
```
|
|
|
|
## Platform Comparison
|
|
|
|
### Format Differences
|
|
|
|
**Claude AI:**
|
|
- Format: ZIP archive
|
|
- SKILL.md: YAML frontmatter + markdown
|
|
- Structure: `SKILL.md`, `references/`, `scripts/`, `assets/`
|
|
- API: Anthropic Skills API
|
|
- Enhancement: Claude Sonnet 4
|
|
|
|
**Google Gemini:**
|
|
- Format: tar.gz archive
|
|
- SKILL.md → `system_instructions.md` (plain markdown, no frontmatter)
|
|
- Structure: `system_instructions.md`, `references/`, `gemini_metadata.json`
|
|
- API: Google Files API + grounding
|
|
- Enhancement: Gemini 2.0 Flash
|
|
|
|
**OpenAI ChatGPT:**
|
|
- Format: ZIP archive
|
|
- SKILL.md → `assistant_instructions.txt` (plain text)
|
|
- Structure: `assistant_instructions.txt`, `vector_store_files/`, `openai_metadata.json`
|
|
- API: Assistants API + Vector Store
|
|
- Enhancement: GPT-4o
|
|
|
|
**MiniMax AI:**
|
|
- Format: ZIP archive
|
|
- SKILL.md -> `system_instructions.txt` (plain text, no frontmatter)
|
|
- Structure: `system_instructions.txt`, `knowledge_files/`, `minimax_metadata.json`
|
|
- API: OpenAI-compatible chat completions
|
|
- Enhancement: MiniMax-M2.7
|
|
|
|
**Generic Markdown:**
|
|
- Format: ZIP archive
|
|
- Structure: `README.md`, `references/`, `DOCUMENTATION.md` (combined)
|
|
- No API integration
|
|
- No enhancement support
|
|
- Universal compatibility
|
|
|
|
### API Key Configuration
|
|
|
|
**Claude AI:**
|
|
```bash
|
|
export ANTHROPIC_API_KEY=sk-ant-...
|
|
```
|
|
|
|
**Google Gemini:**
|
|
```bash
|
|
export GOOGLE_API_KEY=AIzaSy...
|
|
```
|
|
|
|
**OpenAI ChatGPT:**
|
|
```bash
|
|
export OPENAI_API_KEY=sk-proj-...
|
|
```
|
|
|
|
**MiniMax AI:**
|
|
```bash
|
|
export MINIMAX_API_KEY=your-key
|
|
```
|
|
|
|
## Complete Workflow Examples
|
|
|
|
### Workflow 1: Claude AI (Default)
|
|
|
|
```bash
|
|
# 1. Scrape
|
|
skill-seekers scrape --config configs/react.json
|
|
|
|
# 2. Enhance (optional but recommended)
|
|
skill-seekers enhance output/react/
|
|
|
|
# 3. Package
|
|
skill-seekers package output/react/
|
|
|
|
# 4. Upload
|
|
skill-seekers upload react.zip
|
|
|
|
# Access at: https://claude.ai/skills
|
|
```
|
|
|
|
### Workflow 2: Google Gemini
|
|
|
|
```bash
|
|
# Setup (one-time)
|
|
pip install skill-seekers[gemini]
|
|
export GOOGLE_API_KEY=AIzaSy...
|
|
|
|
# 1. Scrape (universal)
|
|
skill-seekers scrape --config configs/react.json
|
|
|
|
# 2. Enhance for Gemini
|
|
skill-seekers enhance output/react/ --target gemini
|
|
|
|
# 3. Package for Gemini
|
|
skill-seekers package output/react/ --target gemini
|
|
|
|
# 4. Upload to Gemini
|
|
skill-seekers upload react-gemini.tar.gz --target gemini
|
|
|
|
# Access at: https://aistudio.google.com/files/
|
|
```
|
|
|
|
### Workflow 3: OpenAI ChatGPT
|
|
|
|
```bash
|
|
# Setup (one-time)
|
|
pip install skill-seekers[openai]
|
|
export OPENAI_API_KEY=sk-proj-...
|
|
|
|
# 1. Scrape (universal)
|
|
skill-seekers scrape --config configs/react.json
|
|
|
|
# 2. Enhance with GPT-4o
|
|
skill-seekers enhance output/react/ --target openai
|
|
|
|
# 3. Package for OpenAI
|
|
skill-seekers package output/react/ --target openai
|
|
|
|
# 4. Upload (creates Assistant + Vector Store)
|
|
skill-seekers upload react-openai.zip --target openai
|
|
|
|
# Access at: https://platform.openai.com/assistants/
|
|
```
|
|
|
|
### Workflow 4: MiniMax AI
|
|
|
|
```bash
|
|
# Setup (one-time)
|
|
pip install skill-seekers[minimax]
|
|
export MINIMAX_API_KEY=your-key
|
|
|
|
# 1. Scrape (universal)
|
|
skill-seekers scrape --config configs/react.json
|
|
|
|
# 2. Enhance with MiniMax-M2.7
|
|
skill-seekers enhance output/react/ --target minimax
|
|
|
|
# 3. Package for MiniMax
|
|
skill-seekers package output/react/ --target minimax
|
|
|
|
# 4. Upload to MiniMax (validates with API)
|
|
skill-seekers upload react-minimax.zip --target minimax
|
|
|
|
# Access at: https://platform.minimaxi.com/
|
|
```
|
|
|
|
### Workflow 5: Export to All Platforms
|
|
|
|
```bash
|
|
# Install all platforms
|
|
pip install skill-seekers[all-llms]
|
|
|
|
# Scrape once
|
|
skill-seekers scrape --config configs/react.json
|
|
|
|
# Package for all platforms
|
|
skill-seekers package output/react/ --target claude
|
|
skill-seekers package output/react/ --target gemini
|
|
skill-seekers package output/react/ --target openai
|
|
skill-seekers package output/react/ --target minimax
|
|
skill-seekers package output/react/ --target markdown
|
|
|
|
# Result:
|
|
# - react.zip (Claude)
|
|
# - react-gemini.tar.gz (Gemini)
|
|
# - react-openai.zip (OpenAI)
|
|
# - react-minimax.zip (MiniMax)
|
|
# - react-markdown.zip (Universal)
|
|
```
|
|
|
|
## Advanced Usage
|
|
|
|
### Custom Enhancement Models
|
|
|
|
Each platform uses its default enhancement model, but you can customize:
|
|
|
|
```bash
|
|
# Use specific model for enhancement (if supported)
|
|
skill-seekers enhance output/react/ --target gemini --model gemini-2.0-flash-exp
|
|
skill-seekers enhance output/react/ --target openai --model gpt-4o
|
|
```
|
|
|
|
### Programmatic Usage
|
|
|
|
```python
|
|
from skill_seekers.cli.adaptors import get_adaptor
|
|
|
|
# Get platform-specific adaptor
|
|
gemini = get_adaptor('gemini')
|
|
openai = get_adaptor('openai')
|
|
claude = get_adaptor('claude')
|
|
|
|
# Package for specific platform
|
|
gemini_package = gemini.package(skill_dir, output_path)
|
|
openai_package = openai.package(skill_dir, output_path)
|
|
|
|
# Upload with API key
|
|
result = gemini.upload(gemini_package, api_key)
|
|
print(f"Uploaded to: {result['url']}")
|
|
```
|
|
|
|
### Platform Detection
|
|
|
|
Check which platforms are available:
|
|
|
|
```python
|
|
from skill_seekers.cli.adaptors import list_platforms, is_platform_available
|
|
|
|
# List all registered platforms
|
|
platforms = list_platforms()
|
|
print(platforms) # ['claude', 'gemini', 'minimax', 'openai', 'markdown']
|
|
|
|
# Check if platform is available
|
|
if is_platform_available('gemini'):
|
|
print("Gemini adaptor is available")
|
|
```
|
|
|
|
## Backward Compatibility
|
|
|
|
**100% backward compatible** with existing workflows:
|
|
|
|
- All existing Claude commands work unchanged
|
|
- Default behavior remains Claude-focused
|
|
- Optional `--target` flag adds multi-platform support
|
|
- No breaking changes to existing configs or workflows
|
|
|
|
## Platform-Specific Guides
|
|
|
|
For detailed platform-specific instructions, see:
|
|
|
|
- [Claude AI Integration](CLAUDE_INTEGRATION.md) (default)
|
|
- [Google Gemini Integration](GEMINI_INTEGRATION.md)
|
|
- [OpenAI ChatGPT Integration](OPENAI_INTEGRATION.md)
|
|
- [MiniMax AI Integration](MINIMAX_INTEGRATION.md)
|
|
|
|
## Troubleshooting
|
|
|
|
### Missing Dependencies
|
|
|
|
**Error:** `ModuleNotFoundError: No module named 'google.generativeai'`
|
|
|
|
**Solution:**
|
|
```bash
|
|
pip install skill-seekers[gemini]
|
|
```
|
|
|
|
**Error:** `ModuleNotFoundError: No module named 'openai'`
|
|
|
|
**Solution:**
|
|
```bash
|
|
pip install skill-seekers[openai]
|
|
# or for MiniMax (also uses openai library)
|
|
pip install skill-seekers[minimax]
|
|
```
|
|
|
|
### API Key Issues
|
|
|
|
**Error:** `Invalid API key format`
|
|
|
|
**Solution:** Check your API key format:
|
|
- Claude: `sk-ant-...`
|
|
- Gemini: `AIza...`
|
|
- OpenAI: `sk-proj-...` or `sk-...`
|
|
- MiniMax: Any valid API key string
|
|
|
|
### Package Format Errors
|
|
|
|
**Error:** `Not a tar.gz file: react.zip`
|
|
|
|
**Solution:** Use correct --target flag:
|
|
```bash
|
|
# Gemini requires tar.gz
|
|
skill-seekers package output/react/ --target gemini
|
|
|
|
# OpenAI and Claude use ZIP
|
|
skill-seekers package output/react/ --target openai
|
|
```
|
|
|
|
## FAQ
|
|
|
|
**Q: Can I use the same scraped data for all platforms?**
|
|
|
|
A: Yes! The scraping phase is universal. Only packaging and upload are platform-specific.
|
|
|
|
**Q: Do I need separate API keys for each platform?**
|
|
|
|
A: Yes, each platform requires its own API key. Set them as environment variables.
|
|
|
|
**Q: Can I enhance with different models?**
|
|
|
|
A: Yes, each platform uses its own enhancement model:
|
|
- Claude: Claude Sonnet 4
|
|
- Gemini: Gemini 2.0 Flash
|
|
- OpenAI: GPT-4o
|
|
- MiniMax: MiniMax-M2.7
|
|
|
|
**Q: What if I don't want to upload automatically?**
|
|
|
|
A: Use the `package` command without `upload`. You'll get the packaged file to upload manually.
|
|
|
|
**Q: Is the markdown export compatible with all LLMs?**
|
|
|
|
A: Yes! The generic markdown export creates universal documentation that works with any LLM or documentation system.
|
|
|
|
**Q: Can I contribute a new platform adaptor?**
|
|
|
|
A: Absolutely! See the [Contributing Guide](../CONTRIBUTING.md) for how to add new platform adaptors.
|
|
|
|
## Next Steps
|
|
|
|
1. Choose your target platform
|
|
2. Install optional dependencies if needed
|
|
3. Set up API keys
|
|
4. Follow the platform-specific workflow
|
|
5. Upload and test your skill
|
|
|
|
For more help, see:
|
|
- [Quick Start Guide](../QUICKSTART.md)
|
|
- [Troubleshooting Guide](../TROUBLESHOOTING.md)
|
|
- [Platform-Specific Guides](.)
|