Spaces:
Build error
Build error
| import { isNumber } from "./is-number"; | |
| import { | |
| VERIFIED_ANTHROPIC_MODELS, | |
| VERIFIED_OPENAI_MODELS, | |
| } from "./verified-models"; | |
| /** | |
| * Checks if the split array is actually a version number. | |
| * @param split The split array of the model string | |
| * @returns Boolean indicating if the split is actually a version number | |
| * | |
| * @example | |
| * const split = ["gpt-3", "5-turbo"] // incorrectly split from "gpt-3.5-turbo" | |
| * splitIsActuallyVersion(split) // returns true | |
| */ | |
| const splitIsActuallyVersion = (split: string[]) => | |
| split[1] && split[1][0] && isNumber(split[1][0]); | |
| /** | |
| * Given a model string, extract the provider and model name. Currently the supported separators are "/" and "." | |
| * @param model The model string | |
| * @returns An object containing the provider, model name, and separator | |
| * | |
| * @example | |
| * extractModelAndProvider("azure/ada") | |
| * // returns { provider: "azure", model: "ada", separator: "/" } | |
| * | |
| * extractModelAndProvider("cohere.command-r-v1:0") | |
| * // returns { provider: "cohere", model: "command-r-v1:0", separator: "." } | |
| */ | |
| export const extractModelAndProvider = (model: string) => { | |
| let separator = "/"; | |
| let split = model.split(separator); | |
| if (split.length === 1) { | |
| // no "/" separator found, try with "." | |
| separator = "."; | |
| split = model.split(separator); | |
| if (splitIsActuallyVersion(split)) { | |
| split = [split.join(separator)]; // undo the split | |
| } | |
| } | |
| if (split.length === 1) { | |
| // no "/" or "." separator found | |
| if (VERIFIED_OPENAI_MODELS.includes(split[0])) { | |
| return { provider: "openai", model: split[0], separator: "/" }; | |
| } | |
| if (VERIFIED_ANTHROPIC_MODELS.includes(split[0])) { | |
| return { provider: "anthropic", model: split[0], separator: "/" }; | |
| } | |
| // return as model only | |
| return { provider: "", model, separator: "" }; | |
| } | |
| const [provider, ...modelId] = split; | |
| return { provider, model: modelId.join(separator), separator }; | |
| }; | |