llm-checker 3.2.7 → 3.2.8
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 +6 -0
- package/package.json +1 -1
- package/src/models/deterministic-selector.js +16 -3
package/README.md
CHANGED
|
@@ -97,6 +97,12 @@ LLM Checker is published in all primary channels:
|
|
|
97
97
|
- GitHub Releases: [Release history](https://github.com/Pavelevich/llm-checker/releases)
|
|
98
98
|
- GitHub Packages: [`@pavelevich/llm-checker`](https://github.com/users/Pavelevich/packages/npm/package/llm-checker)
|
|
99
99
|
|
|
100
|
+
### v3.2.8 Highlights
|
|
101
|
+
|
|
102
|
+
- Fixed multimodal recommendation false positives from noisy metadata.
|
|
103
|
+
- Coding-only models with incidental `input_types: image` flags are no longer treated as vision models.
|
|
104
|
+
- Added regression tests to keep multimodal category picks aligned with true vision-capable models.
|
|
105
|
+
|
|
100
106
|
### v3.2.7 Highlights
|
|
101
107
|
|
|
102
108
|
- License updated to **NPDL-1.0**: paid redistribution and paid hosted/API delivery now require a separate commercial license.
|
package/package.json
CHANGED
|
@@ -1042,6 +1042,9 @@ class DeterministicModelSelector {
|
|
|
1042
1042
|
|
|
1043
1043
|
inferModalities(model, variantTag = '') {
|
|
1044
1044
|
const inputTypes = Array.isArray(model.input_types) ? model.input_types.map((x) => String(x).toLowerCase()) : [];
|
|
1045
|
+
const primaryCategory = String(model.primary_category || '').toLowerCase();
|
|
1046
|
+
const categories = Array.isArray(model.categories) ? model.categories.map((x) => String(x).toLowerCase()) : [];
|
|
1047
|
+
const useCases = Array.isArray(model.use_cases) ? model.use_cases.map((x) => String(x).toLowerCase()) : [];
|
|
1045
1048
|
const text = [
|
|
1046
1049
|
model.model_identifier,
|
|
1047
1050
|
model.model_name,
|
|
@@ -1050,9 +1053,19 @@ class DeterministicModelSelector {
|
|
|
1050
1053
|
variantTag
|
|
1051
1054
|
].filter(Boolean).join(' ').toLowerCase();
|
|
1052
1055
|
|
|
1053
|
-
const
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
+
const hasVisionInputFlag = inputTypes.includes('image') || inputTypes.includes('vision');
|
|
1057
|
+
const hasVisionMetadataHint =
|
|
1058
|
+
primaryCategory === 'multimodal' ||
|
|
1059
|
+
categories.some((cat) => cat.includes('multimodal') || cat.includes('vision')) ||
|
|
1060
|
+
useCases.some((useCase) => useCase.includes('multimodal') || useCase.includes('vision'));
|
|
1061
|
+
const hasVisionTextHint =
|
|
1062
|
+
/(?:\bmultimodal\b|\bvision\b|\bllava\b|\bbakllava\b|\bmoondream\b|\bpixtral\b|\bidefics\b|\bpaligemma\b|\bminicpm-?v\b|\bqwen[\w.-]*vl\b|\bllama3\.2[-_ ]?vision\b|\bdeepseek-ocr\b)/.test(text);
|
|
1063
|
+
const hasVisionContextHint =
|
|
1064
|
+
/\b(image[- ]?(understanding|caption|analysis)|vision[- ]?language|vlm)\b/.test(text);
|
|
1065
|
+
|
|
1066
|
+
// Some upstream scrapers may over-report `image` support by scanning generic page text.
|
|
1067
|
+
// Trust image input flags only when accompanied by multimodal metadata or explicit vision naming.
|
|
1068
|
+
const hasVision = hasVisionTextHint || hasVisionMetadataHint || (hasVisionInputFlag && hasVisionContextHint);
|
|
1056
1069
|
|
|
1057
1070
|
return hasVision ? ['text', 'vision'] : ['text'];
|
|
1058
1071
|
}
|