2026-03-12 01:43:17 +09:00
|
|
|
const KNOWN_VARIANTS = new Set([
|
|
|
|
|
"low",
|
|
|
|
|
"medium",
|
|
|
|
|
"high",
|
|
|
|
|
"xhigh",
|
|
|
|
|
"max",
|
|
|
|
|
"none",
|
|
|
|
|
"auto",
|
|
|
|
|
"thinking",
|
|
|
|
|
])
|
|
|
|
|
|
2026-03-16 13:52:56 +09:00
|
|
|
export function parseVariantFromModelID(rawModelID: string): { modelID: string; variant?: string } {
|
2026-03-12 01:43:17 +09:00
|
|
|
const trimmedModelID = rawModelID.trim()
|
|
|
|
|
if (!trimmedModelID) {
|
|
|
|
|
return { modelID: "" }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const parenthesizedVariant = trimmedModelID.match(/^(.*)\(([^()]+)\)\s*$/)
|
|
|
|
|
if (parenthesizedVariant) {
|
|
|
|
|
const modelID = parenthesizedVariant[1]?.trim() ?? ""
|
|
|
|
|
const variant = parenthesizedVariant[2]?.trim()
|
|
|
|
|
return variant ? { modelID, variant } : { modelID }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const spaceVariant = trimmedModelID.match(/^(.*\S)\s+([a-z][a-z0-9_-]*)$/i)
|
|
|
|
|
if (spaceVariant) {
|
|
|
|
|
const modelID = spaceVariant[1]?.trim() ?? ""
|
|
|
|
|
const variant = spaceVariant[2]?.trim().toLowerCase()
|
|
|
|
|
if (variant && KNOWN_VARIANTS.has(variant)) {
|
|
|
|
|
return { modelID, variant }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return { modelID: trimmedModelID }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function parseModelString(
|
|
|
|
|
model: string,
|
|
|
|
|
): { providerID: string; modelID: string; variant?: string } | undefined {
|
|
|
|
|
const trimmedModel = model.trim()
|
|
|
|
|
if (!trimmedModel) return undefined
|
|
|
|
|
|
|
|
|
|
const parts = trimmedModel.split("/")
|
|
|
|
|
if (parts.length < 2) {
|
|
|
|
|
return undefined
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const providerID = parts[0]?.trim()
|
|
|
|
|
const rawModelID = parts.slice(1).join("/").trim()
|
|
|
|
|
if (!providerID || !rawModelID) {
|
|
|
|
|
return undefined
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const parsedModel = parseVariantFromModelID(rawModelID)
|
|
|
|
|
if (!parsedModel.modelID) {
|
|
|
|
|
return undefined
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return parsedModel.variant
|
|
|
|
|
? { providerID, modelID: parsedModel.modelID, variant: parsedModel.variant }
|
|
|
|
|
: { providerID, modelID: parsedModel.modelID }
|
2026-02-08 13:57:26 +09:00
|
|
|
}
|