| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import { LLMModel } from "../client/api";
- const customProvider = (modelName: string) => ({
- id: modelName,
- providerName: "",
- providerType: "custom",
- });
- export function collectModelTable(
- models: readonly LLMModel[],
- customModels: string,
- ) {
- const modelTable: Record<
- string,
- {
- available: boolean;
- name: string;
- displayName: string;
- provider?: LLMModel["provider"]; // Marked as optional
- isDefault?: boolean;
- }
- > = {};
- // default models
- models.forEach((m) => {
- modelTable[m.name] = {
- ...m,
- displayName: m.name, // 'provider' is copied over if it exists
- };
- });
- // server custom models
- customModels
- .split(",")
- .filter((v) => !!v && v.length > 0)
- .forEach((m) => {
- const available = !m.startsWith("-");
- const nameConfig =
- m.startsWith("+") || m.startsWith("-") ? m.slice(1) : m;
- const [name, displayName] = nameConfig.split("=");
- // enable or disable all models
- if (name === "all") {
- Object.values(modelTable).forEach(
- (model) => (model.available = available),
- );
- } else {
- modelTable[name] = {
- name,
- displayName: displayName || name,
- available,
- provider: modelTable[name]?.provider ?? customProvider(name), // Use optional chaining
- };
- }
- });
- return modelTable;
- }
- export function collectModelTableWithDefaultModel(
- models: readonly LLMModel[],
- customModels: string,
- defaultModel: string,
- ) {
- let modelTable = collectModelTable(models, customModels);
- if (defaultModel && defaultModel !== "") {
- delete modelTable[defaultModel];
- modelTable[defaultModel] = {
- name: defaultModel,
- displayName: defaultModel,
- available: true,
- provider:
- modelTable[defaultModel]?.provider ?? customProvider(defaultModel),
- isDefault: true,
- };
- }
- return modelTable;
- }
- /**
- * Generate full model table.
- */
- export function collectModels(
- models: readonly LLMModel[],
- customModels: string,
- ) {
- const modelTable = collectModelTable(models, customModels);
- const allModels = Object.values(modelTable);
- return allModels;
- }
- export function collectModelsWithDefaultModel(
- models: readonly LLMModel[],
- customModels: string,
- defaultModel: string,
- ) {
- const modelTable = collectModelTableWithDefaultModel(
- models,
- customModels,
- defaultModel,
- );
- const allModels = Object.values(modelTable);
- return allModels;
- }
|