Makelore 2.0 initial clean snapshot
This commit is contained in:
60
shared/imported-model-profile.ts
Normal file
60
shared/imported-model-profile.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
export type ImportedModelModality = 'text' | 'audio' | 'image' | 'pdf';
|
||||
export type ImportedVisionTokenEstimator = 'qwen-32px-grid';
|
||||
|
||||
export interface ImportedModelProfile {
|
||||
modalities: {
|
||||
input: ImportedModelModality[];
|
||||
output: ImportedModelModality[];
|
||||
};
|
||||
limit?: {
|
||||
context: number;
|
||||
output: number;
|
||||
};
|
||||
visionTokenEstimator?: ImportedVisionTokenEstimator;
|
||||
}
|
||||
|
||||
const VERIFIED_QWEN_PLUS_MODEL_IDS = new Set([
|
||||
'qwen3.6-plus',
|
||||
'qwen3.6-plus-2026-04-02',
|
||||
'qwen3.7-plus',
|
||||
'qwen3.7-plus-2026-05-26',
|
||||
]);
|
||||
const QWEN_VL_PATTERN = /^qwen(?:\d+(?:\.\d+)?)?-vl(?:[-\w.]+)?$/i;
|
||||
const QWEN_OMNI_PATTERN = /^qwen-omni(?:[-\w.]+)?$/i;
|
||||
|
||||
function imageModalities(): ImportedModelProfile['modalities'] {
|
||||
return {
|
||||
input: ['text', 'image'],
|
||||
output: ['text'],
|
||||
};
|
||||
}
|
||||
|
||||
export function getImportedModelProfile(rawModelId: string): ImportedModelProfile | null {
|
||||
const modelId = rawModelId.trim();
|
||||
if (VERIFIED_QWEN_PLUS_MODEL_IDS.has(modelId.toLowerCase())) {
|
||||
return {
|
||||
modalities: imageModalities(),
|
||||
limit: {
|
||||
context: 1_000_000,
|
||||
output: 65_536,
|
||||
},
|
||||
visionTokenEstimator: 'qwen-32px-grid',
|
||||
};
|
||||
}
|
||||
if (QWEN_VL_PATTERN.test(modelId) || QWEN_OMNI_PATTERN.test(modelId)) {
|
||||
return {
|
||||
modalities: imageModalities(),
|
||||
};
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
export function estimateImportedModelVisionTokens(
|
||||
modelId: string,
|
||||
width: number,
|
||||
height: number,
|
||||
): number | null {
|
||||
if (getImportedModelProfile(modelId)?.visionTokenEstimator !== 'qwen-32px-grid') return null;
|
||||
if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) return null;
|
||||
return Math.ceil((width * height) / (32 * 32)) + 2;
|
||||
}
|
||||
Reference in New Issue
Block a user