cc / src /utils /modelHelper.js
hequ's picture
Upload 221 files
69b897d verified
/**
* Model Helper Utility
*
* Provides utilities for parsing vendor-prefixed model names.
* Supports parsing model strings like "ccr,model_name" to extract vendor type and base model.
*/
/**
* Parse vendor-prefixed model string
* @param {string} modelStr - Model string, potentially with vendor prefix (e.g., "ccr,gemini-2.5-pro")
* @returns {{vendor: string|null, baseModel: string}} - Parsed vendor and base model
*/
function parseVendorPrefixedModel(modelStr) {
if (!modelStr || typeof modelStr !== 'string') {
return { vendor: null, baseModel: modelStr || '' }
}
// Trim whitespace and convert to lowercase for comparison
const trimmed = modelStr.trim()
const lowerTrimmed = trimmed.toLowerCase()
// Check for ccr prefix (case insensitive)
if (lowerTrimmed.startsWith('ccr,')) {
const parts = trimmed.split(',')
if (parts.length >= 2) {
// Extract base model (everything after the first comma, rejoined in case model name contains commas)
const baseModel = parts.slice(1).join(',').trim()
return {
vendor: 'ccr',
baseModel
}
}
}
// No recognized vendor prefix found
return {
vendor: null,
baseModel: trimmed
}
}
/**
* Check if a model string has a vendor prefix
* @param {string} modelStr - Model string to check
* @returns {boolean} - True if the model has a vendor prefix
*/
function hasVendorPrefix(modelStr) {
const { vendor } = parseVendorPrefixedModel(modelStr)
return vendor !== null
}
/**
* Get the effective model name for scheduling and processing
* This removes vendor prefixes to get the actual model name used for API calls
* @param {string} modelStr - Original model string
* @returns {string} - Effective model name without vendor prefix
*/
function getEffectiveModel(modelStr) {
const { baseModel } = parseVendorPrefixedModel(modelStr)
return baseModel
}
/**
* Get the vendor type from a model string
* @param {string} modelStr - Model string to parse
* @returns {string|null} - Vendor type ('ccr') or null if no prefix
*/
function getVendorType(modelStr) {
const { vendor } = parseVendorPrefixedModel(modelStr)
return vendor
}
module.exports = {
parseVendorPrefixedModel,
hasVendorPrefix,
getEffectiveModel,
getVendorType
}