modelmix 4.5.28 → 4.5.30
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 +1 -0
- package/index.js +14 -0
- package/package.json +3 -3
- package/skills/modelmix/SKILL.md +2 -2
- package/test/anthropic.test.js +19 -0
package/README.md
CHANGED
|
@@ -149,6 +149,7 @@ Here's a comprehensive list of available methods:
|
|
|
149
149
|
| `gpt41mini()` | OpenAI | gpt-4.1-mini | [\$0.40 / \$1.60][1] |
|
|
150
150
|
| `gpt41nano()` | OpenAI | gpt-4.1-nano | [\$0.10 / \$0.40][1] |
|
|
151
151
|
| `gptOss()` | Together | gpt-oss-120B | [\$0.15 / \$0.60][7] |
|
|
152
|
+
| `fable5[think]()` | Anthropic | claude-fable-5 | [\$10.00 / \$50.00][2] |
|
|
152
153
|
| `opus48[think]()` | Anthropic | claude-opus-4-8 | [\$5.00 / \$25.00][2] |
|
|
153
154
|
| `opus47[think]()` | Anthropic | claude-opus-4-7 | [\$5.00 / \$25.00][2] |
|
|
154
155
|
| `opus46[think]()` | Anthropic | claude-opus-4-6 | [\$5.00 / \$25.00][2] |
|
package/index.js
CHANGED
|
@@ -58,6 +58,7 @@ const MODEL_PRICING = {
|
|
|
58
58
|
'gpt-oss-120b': [0.15, 0.60],
|
|
59
59
|
'openai/gpt-oss-120b:free': [0, 0],
|
|
60
60
|
// Anthropic
|
|
61
|
+
'claude-fable-5': [10.00, 50.00],
|
|
61
62
|
'claude-sonnet-5': [3.00, 15.00],
|
|
62
63
|
'claude-opus-4-8': [5.00, 25.00],
|
|
63
64
|
'claude-opus-4-7': [5.00, 25.00],
|
|
@@ -345,6 +346,13 @@ class ModelMix {
|
|
|
345
346
|
if (mix.openrouter) this.attach('openai/gpt-oss-120b:free', new MixOpenRouter({ options, config }));
|
|
346
347
|
return this;
|
|
347
348
|
}
|
|
349
|
+
fable5({ options = {}, config = {} } = {}) {
|
|
350
|
+
return this.attach('claude-fable-5', new MixAnthropic({ options, config }));
|
|
351
|
+
}
|
|
352
|
+
fable5think({ options = {}, config = {} } = {}) {
|
|
353
|
+
options = { ...MixAnthropic.fableThinkingOptions, ...options };
|
|
354
|
+
return this.attach('claude-fable-5', new MixAnthropic({ options, config }));
|
|
355
|
+
}
|
|
348
356
|
opus48think({ options = {}, config = {} } = {}) {
|
|
349
357
|
options = { ...MixAnthropic.thinkingOptions, ...options };
|
|
350
358
|
return this.attach('claude-opus-4-8', new MixAnthropic({ options, config }));
|
|
@@ -2091,6 +2099,12 @@ class MixAnthropic extends MixCustom {
|
|
|
2091
2099
|
temperature: 1
|
|
2092
2100
|
};
|
|
2093
2101
|
|
|
2102
|
+
static fableThinkingOptions = {
|
|
2103
|
+
output_config: { effort: 'max' },
|
|
2104
|
+
thinking: { display: 'summarized' },
|
|
2105
|
+
temperature: 1
|
|
2106
|
+
};
|
|
2107
|
+
|
|
2094
2108
|
getDefaultConfig(customConfig) {
|
|
2095
2109
|
|
|
2096
2110
|
if (!process.env.ANTHROPIC_API_KEY) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "modelmix",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.30",
|
|
4
4
|
"description": "🧬 Reliable interface with automatic fallback for AI LLMs.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"llama",
|
|
23
23
|
"fallback",
|
|
24
24
|
"kimi",
|
|
25
|
-
"
|
|
25
|
+
"mythos",
|
|
26
26
|
"gpt5",
|
|
27
|
-
"
|
|
27
|
+
"fable",
|
|
28
28
|
"sonnet",
|
|
29
29
|
"openrouter",
|
|
30
30
|
"gemini",
|
package/skills/modelmix/SKILL.md
CHANGED
|
@@ -96,9 +96,9 @@ If `sonnet46` fails, it automatically tries `gpt52`, then `gemini3flash`.
|
|
|
96
96
|
`gpt52()` `gpt52chat()` `gpt51()` `gpt5()` `gpt5mini()` `gpt5nano()` `gpt45()` `gpt41()` `gpt41mini()` `gpt41nano()` `o3()` `o4mini()`
|
|
97
97
|
|
|
98
98
|
### Anthropic
|
|
99
|
-
`opus48()` `opus47()` `opus46()` `opus41()` `sonnet5()` `sonnet46()` `sonnet45()` `sonnet4()` `haiku45()` `haiku35()`
|
|
99
|
+
`fable5()` `opus48()` `opus47()` `opus46()` `opus41()` `sonnet5()` `sonnet46()` `sonnet45()` `sonnet4()` `haiku45()` `haiku35()`
|
|
100
100
|
|
|
101
|
-
Thinking variants: append `think` — e.g. `opus48think()` `opus47think()` `opus46think()` `sonnet5think()` `sonnet46think()` `sonnet45think()` `sonnet4think()` `opus41think()` `haiku45think()`
|
|
101
|
+
Thinking variants: append `think` — e.g. `fable5think()` `opus48think()` `opus47think()` `opus46think()` `sonnet5think()` `sonnet46think()` `sonnet45think()` `sonnet4think()` `opus41think()` `haiku45think()`
|
|
102
102
|
|
|
103
103
|
### Google
|
|
104
104
|
`gemini3pro()` `gemini3flash()` `gemini35flash()` `gemini25pro()` `gemini25flash()`
|
package/test/anthropic.test.js
CHANGED
|
@@ -2,6 +2,25 @@ const { expect } = require('chai');
|
|
|
2
2
|
const { ModelMix, MixAnthropic } = require('../index.js');
|
|
3
3
|
|
|
4
4
|
describe('Anthropic Model Registration Tests', () => {
|
|
5
|
+
it('should register Claude Fable 5', () => {
|
|
6
|
+
const model = ModelMix.new();
|
|
7
|
+
model.fable5();
|
|
8
|
+
|
|
9
|
+
expect(model.models).to.have.length(1);
|
|
10
|
+
expect(model.models[0].key).to.equal('claude-fable-5');
|
|
11
|
+
expect(model.models[0].provider).to.be.instanceOf(MixAnthropic);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('should register Claude Fable 5 with max effort thinking', () => {
|
|
15
|
+
const model = ModelMix.new();
|
|
16
|
+
model.fable5think();
|
|
17
|
+
|
|
18
|
+
expect(model.models).to.have.length(1);
|
|
19
|
+
expect(model.models[0].key).to.equal('claude-fable-5');
|
|
20
|
+
expect(model.models[0].provider.options.output_config).to.deep.equal({ effort: 'max' });
|
|
21
|
+
expect(model.models[0].provider.options.thinking).to.deep.equal({ display: 'summarized' });
|
|
22
|
+
});
|
|
23
|
+
|
|
5
24
|
it('should register Claude Opus 4.8', () => {
|
|
6
25
|
const model = ModelMix.new();
|
|
7
26
|
model.opus48();
|