(provider: ModelsDev.Provider)
| 1237 | } |
| 1238 | |
| 1239 | export function fromModelsDevProvider(provider: ModelsDev.Provider): Info { |
| 1240 | const models: Record<string, Model> = {} |
| 1241 | for (const [key, model] of Object.entries(provider.models)) { |
| 1242 | models[key] = fromModelsDevModel(provider, model) |
| 1243 | for (const [mode, opts] of Object.entries(model.experimental?.modes ?? {})) { |
| 1244 | const id = `${model.id}-${mode}` |
| 1245 | const base = fromModelsDevModel(provider, model) |
| 1246 | models[id] = { |
| 1247 | ...base, |
| 1248 | id: ModelV2.ID.make(id), |
| 1249 | name: `${model.name} ${mode[0].toUpperCase()}${mode.slice(1)}`, |
| 1250 | cost: opts.cost ? mergeDeep(base.cost, cost(opts.cost)) : base.cost, |
| 1251 | options: opts.provider?.body |
| 1252 | ? Object.fromEntries( |
| 1253 | Object.entries(opts.provider.body).map(([k, v]) => [ |
| 1254 | k.replace(/_([a-z])/g, (_, c) => c.toUpperCase()), |
| 1255 | v, |
| 1256 | ]), |
| 1257 | ) |
| 1258 | : base.options, |
| 1259 | headers: opts.provider?.headers ?? base.headers, |
| 1260 | } |
| 1261 | } |
| 1262 | } |
| 1263 | return { |
| 1264 | id: ProviderV2.ID.make(provider.id), |
| 1265 | source: "custom", |
| 1266 | name: provider.name, |
| 1267 | env: [...(provider.env ?? [])], |
| 1268 | options: {}, |
| 1269 | models, |
| 1270 | } |
| 1271 | } |
| 1272 | |
| 1273 | function modelSuggestions(provider: Info | undefined, modelID: ModelV2.ID, enableExperimentalModels: boolean) { |
| 1274 | const available = provider |
nothing calls this directly
no test coverage detected