Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ GOOGLE_API_KEY=
GOOGLE_GENAI_USE_VERTEXAI=false
#GOOGLE_CLOUD_PROJECT=
MINIMAX_PLAN_API_KEY=
# Global: https://api.minimax.io/anthropic
# China: https://api.minimaxi.com/anthropic
MINIMAX_ANTHROPIC_BASE_URL=https://api.minimax.io/anthropic
MIMO_PLAN_API_KEY=

# OpenAI Compatible Provider
Expand Down
3 changes: 3 additions & 0 deletions intentkit/config/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,9 @@ def __init__(self) -> None:
self.deepseek_api_key: str | None = self.load("DEEPSEEK_API_KEY")
self.xai_api_key: str | None = self.load("XAI_API_KEY")
self.minimax_plan_api_key: str | None = self.load("MINIMAX_PLAN_API_KEY")
self.minimax_anthropic_base_url: str = self.load(
"MINIMAX_ANTHROPIC_BASE_URL", "https://api.minimax.io/anthropic"
)
self.mimo_plan_api_key: str | None = self.load("MIMO_PLAN_API_KEY")
self.openrouter_api_key: str | None = self.load("OPENROUTER_API_KEY")
# OpenAI Compatible provider
Expand Down
2 changes: 1 addition & 1 deletion intentkit/models/llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -888,7 +888,7 @@ async def create_instance(self, params: dict[str, Any] = {}) -> BaseChatModel:
kwargs: dict[str, Any] = {
"model": info.id,
"api_key": config.minimax_plan_api_key,
"base_url": "https://api.minimax.io/anthropic",
"base_url": config.minimax_anthropic_base_url,
"timeout": info.timeout,
"max_retries": 3,
}
Expand Down
22 changes: 21 additions & 1 deletion intentkit/models/llm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -889,7 +889,7 @@
cached_input_price: "0.12"
output_price: "2.4"
price_level: 2
context_length: 524288
context_length: 1000000
output_length: 512000
intelligence: 5
speed: 3
Expand All @@ -902,3 +902,23 @@
supports_frequency_penalty: true
supports_presence_penalty: true
timeout: 300

- id: "MiniMax-M2.7"
name: "MiniMax M2.7"
provider: minimax
enabled: true
input_price: "0.3"
cached_input_price: "0.06"
output_price: "1.2"
price_level: 2
context_length: 204800
output_length: 131072
intelligence: 4
speed: 4
supports_image_input: false
supports_audio_input: false
supports_video_input: false
supports_file_input: false
reasoning_effort: "high"
supports_temperature: false
timeout: 300
10 changes: 10 additions & 0 deletions tests/core/test_llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@
from intentkit.models.llm import LLMProvider, load_default_llm_models


def test_minimax_catalog_contains_current_models():
"""The native MiniMax catalog mirrors the current subscription API lineup."""
with patch("intentkit.models.llm.config") as mock_config:
mock_config.minimax_plan_api_key = "test-key"
models = load_default_llm_models()

assert models["minimax:MiniMax-M3"].context_length == 1_000_000
assert models["minimax:MiniMax-M2.7"].context_length == 204_800


def test_llm_model_filtering():
"""Test that models are filtered based on available API keys in config."""

Expand Down