modelmix 4.6.8 → 4.6.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -107,7 +107,7 @@ Control reasoning depth with one ModelMix policy value (`-1` adaptive, or `0`–
107
107
 
108
108
  ```javascript
109
109
  // In config (ModelMix.new or per-model shorthand)
110
- ModelMix.new({ config: { effort: 50 } }).sonnet46().addText('...').message();
110
+ ModelMix.new({ config: { effort: 50 } }).opus5().addText('...').message();
111
111
  ModelMix.new().deepseekV4Flash({ config: { effort: 100 } }).addText('...').message();
112
112
 
113
113
  // Fluent
@@ -116,16 +116,15 @@ ModelMix.new().effort(-1).minimaxM3().addText('...').message();
116
116
 
117
117
  **Native wins:** if you already set a provider-native field (`reasoning_effort`, `output_config.effort`, `thinkingConfig`, etc.), unified `effort` is ignored for that request.
118
118
 
119
- | Scale | OpenAI | Anthropic | Gemini 3+ | DeepSeek V4 | MiniMax M3 |
120
- |------|--------|-----------|-----------|-------------|------------|
121
- | 0–19 / 0–24* | `none` | `low` | `minimal` | thinking `disabled` | `thinking.disabled` |
122
- | 20–39 / 25–49* | `low` | `medium` | `low` | `low` + thinking on | `thinking.adaptive` |
123
- | 40–59 / 50–74* | `medium` | `high` | `medium` | `high` + thinking on | `thinking.adaptive` |
124
- | 60–79 / 75–100* | `high` | `xhigh` | `high` | `high` + thinking on | `thinking.adaptive` |
125
- | 80–100 | `xhigh` | `max` | | `max` + thinking on | `thinking.adaptive` |
126
- | `-1` | no-op (no adaptive API) | `thinking.type = adaptive` | `thinkingBudget: -1` | no-op (no adaptive API) | `thinking.type = adaptive` |
119
+ | | 0–19 | 20–39 | 40–59 | 60–79 | 80–100 | `-1` |
120
+ |--|------|-------|-------|-------|--------|------|
121
+ | OpenAI | `none` | `low` | `medium` | `high` | `xhigh` | — |
122
+ | Anthropic | `low` | `medium` | `high` | `xhigh` | `max` | adaptive |
123
+ | Gemini 3+\* | `minimal` | `low` | `medium` | `high` | | dynamic |
124
+ | DeepSeek V4 | off | `low`↑ | `high`↑ | `high`↑ | `max`↑ | |
125
+ | MiniMax M3 | off | adaptive | adaptive | adaptive | adaptive | adaptive |
127
126
 
128
- \* Gemini bands use 0–24 / 25–49 / 50–74 / 75–100. Gemini 2.5 maps 0–100 to `thinkingBudget` (0→0, 100→model max). `-1` sets the provider’s adaptive/dynamic control when it exists; otherwise it is a no-op. Levels are clamped to what each model supports. Providers without effort control are a no-op.
127
+ \* Gemini bands: 0–24 / 25–49 / 50–74 / 75–100. DeepSeek `↑` = thinking on; `off` = thinking disabled. MiniMax `off`/`adaptive` = `thinking.disabled` / `thinking.type=adaptive`. Gemini 2.5 maps 0–100 to `thinkingBudget`. `-1` = provider adaptive/dynamic when available, else no-op. Levels clamp to what each model supports.
129
128
 
130
129
  ## 🔧 Model Context Protocol (MCP) Integration
131
130
 
@@ -163,8 +162,8 @@ Here's a comprehensive list of available methods:
163
162
  | Method | Provider | Model | Price (I/O) per 1 M tokens |
164
163
  | ------------------- | ---------- | ---------------------------- | -------------------------- |
165
164
  | `gpt56sol()` | OpenAI | gpt-5.6-sol | [\$5.00 / \$30.00][1] |
166
- | `gpt56terra()` | OpenAI | gpt-5.6-terra | [\$2.50 / \$15.00][1] |
167
- | `gpt56luna()` | OpenAI | gpt-5.6-luna | [\$1.00 / \$6.00][1] |
165
+ | `gpt56terra()` | OpenAI | gpt-5.6-terra | [\$2.00 / \$12.00][1] |
166
+ | `gpt56luna()` | OpenAI | gpt-5.6-luna | [\$0.20 / \$1.20][1] |
168
167
  | `gpt55()` | OpenAI | gpt-5.5 | [\$5.00 / \$30.00][1] |
169
168
  | `gpt54()` | OpenAI | gpt-5.4 | [\$2.50 / \$15.00][1] |
170
169
  | `gpt54mini()` | OpenAI | gpt-5.4-mini | [\$0.75 / \$4.50][1] |
@@ -230,7 +229,7 @@ const result = await ModelMix.new({
230
229
  options: { temperature: 0.7 },
231
230
  config: { system: "You are a helpful assistant" }
232
231
  })
233
- .sonnet46()
232
+ .gpt56luna()
234
233
  .addText("Tell me a story about a cat");
235
234
  .message();
236
235
  ```
package/index.js CHANGED
@@ -43,8 +43,8 @@ const MODEL_PRICING = {
43
43
  'gpt-realtime-mini': [0.60, 2.40],
44
44
  'gpt-realtime': [4.00, 16.00],
45
45
  'gpt-5.6-sol': [5.00, 30.00],
46
- 'gpt-5.6-terra': [2.50, 15.00],
47
- 'gpt-5.6-luna': [1.00, 6.00],
46
+ 'gpt-5.6-terra': [2.00, 12.00],
47
+ 'gpt-5.6-luna': [0.20, 1.20],
48
48
  'gpt-5.5-pro': [30.00, 180.00],
49
49
  'gpt-5.5': [5.00, 30.00],
50
50
  'gpt-5.4': [2.50, 15.00],
@@ -647,14 +647,6 @@ class ModelMix {
647
647
  return this;
648
648
  }
649
649
 
650
- GLM47({ options = {}, config = {}, mix = { fireworks: true } } = {}) {
651
- mix = { ...this.mix, ...mix };
652
- if (mix.fireworks) this.attach('accounts/fireworks/models/glm-4p7', new MixFireworks({ options, config }));
653
- if (mix.openrouter) this.attach('z-ai/glm-4.7', new MixOpenRouter({ options, config }));
654
- if (mix.cerebras) this.attach('zai-glm-4.7', new MixCerebras({ options, config }));
655
- return this;
656
- }
657
-
658
650
  addText(text, { role = "user" } = {}) {
659
651
  const content = [{
660
652
  type: "text",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "modelmix",
3
- "version": "4.6.8",
3
+ "version": "4.6.10",
4
4
  "description": "🧬 Reliable interface with automatic fallback for AI LLMs.",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -106,16 +106,15 @@ ModelMix.new({ config: { effort: 80 } })
106
106
  .gpt52({ options: { reasoning_effort: 'none' } }) // stays none
107
107
  ```
108
108
 
109
- | Value | OpenAI | Anthropic | Gemini 3+ | DeepSeek V4 | MiniMax M3 |
110
- |------|--------|-----------|-----------|-------------|------------|
111
- | 0–19 | `none` | `low` | `minimal` (0–24) | thinking `disabled` | `thinking.disabled` |
112
- | 20–39 | `low` | `medium` | `low` (25–49) | `low` + thinking on | `thinking.adaptive` |
113
- | 40–59 | `medium` | `high` | `medium` (50–74) | `high` + thinking on | `thinking.adaptive` |
114
- | 60–79 | `high` | `xhigh` | `high` (75–100) | `high` + thinking on | `thinking.adaptive` |
115
- | 80–100 | `xhigh` | `max` | | `max` + thinking on | `thinking.adaptive` |
116
- | `-1` | no-op (no adaptive API) | `thinking.type=adaptive` | `thinkingBudget: -1` | no-op (no adaptive API) | `thinking.type=adaptive` |
109
+ | | 0–19 | 20–39 | 40–59 | 60–79 | 80–100 | `-1` |
110
+ |--|------|-------|-------|-------|--------|------|
111
+ | OpenAI | `none` | `low` | `medium` | `high` | `xhigh` | — |
112
+ | Anthropic | `low` | `medium` | `high` | `xhigh` | `max` | adaptive |
113
+ | Gemini 3+\* | `minimal` | `low` | `medium` | `high` | | dynamic |
114
+ | DeepSeek V4 | off | `low`↑ | `high`↑ | `high`↑ | `max`↑ | |
115
+ | MiniMax M3 | off | adaptive | adaptive | adaptive | adaptive | adaptive |
117
116
 
118
- Gemini 2.5 maps 0–100 to numeric `thinkingBudget`. `-1` sets the provider adaptive/dynamic control when available; otherwise no-op. Levels clamp to what each model supports. `*think()` shorthands that set native effort still win over unified `effort`.
117
+ \* Gemini bands: 0–24 / 25–49 / 50–74 / 75–100. DeepSeek `↑` = thinking on; `off` = thinking disabled. MiniMax `off`/`adaptive` = `thinking.disabled` / `thinking.type=adaptive`. Gemini 2.5 maps 0–100 to `thinkingBudget`. `-1` = adaptive/dynamic when available, else no-op. Levels clamp per model. `*think()` shorthands still win over unified `effort`.
119
118
 
120
119
  ## Available Model Shorthands
121
120
 
@@ -146,7 +145,7 @@ Thinking variants: append `think` — e.g. `fable5think()` `opus5think()` `opus4
146
145
  `minimaxM25()` `minimaxM27()` `minimaxM3()`
147
146
 
148
147
  ### Fireworks
149
- `deepseekV4Flash()` `deepseekV4Pro()` `GLM5()` `GLM47()`
148
+ `deepseekV4Flash()` `deepseekV4Pro()` `GLM5()`
150
149
 
151
150
  ### Cerebras
152
151
  `GLM46()`
@@ -155,7 +154,7 @@ Thinking variants: append `think` — e.g. `fable5think()` `opus5think()` `opus4
155
154
  `GLM45()`
156
155
 
157
156
  ### Multi-provider (auto-fallback across free/paid tiers)
158
- `hermes3()` `kimiK25think()` `GLM47()`
157
+ `hermes3()` `kimiK25think()`
159
158
 
160
159
  ### Local
161
160
  `lmstudio()` — for LM Studio local models
@@ -452,7 +451,7 @@ const model = ModelMix.new({
452
451
  minimax: false, // default: false
453
452
  fireworks: false // default: false
454
453
  }
455
- }).GLM47();
454
+ }).kimiK25think();
456
455
  ```
457
456
 
458
457
  ## Agent Usage Rules