( providerId: string, baseUrl?: string, apiKey?: string, exactRequestUrl = false, )
| 311 | } |
| 312 | |
| 313 | export function buildProviderModelsUrl( |
| 314 | providerId: string, |
| 315 | baseUrl?: string, |
| 316 | apiKey?: string, |
| 317 | exactRequestUrl = false, |
| 318 | ): string { |
| 319 | const rawBaseUrl = ensureUrlProtocol((baseUrl || getDefaultBaseUrl(providerId) || "").trim()); |
| 320 | if (!rawBaseUrl) return ""; |
| 321 | |
| 322 | if (exactRequestUrl && providerSupportsExactRequestUrl(providerId)) { |
| 323 | return ""; |
| 324 | } |
| 325 | |
| 326 | switch (providerId) { |
| 327 | case "google": { |
| 328 | const resolvedBaseUrl = resolveProviderBaseUrl(providerId, baseUrl, exactRequestUrl); |
| 329 | const keyQuery = apiKey ? `?key=${encodeURIComponent(apiKey)}` : ""; |
| 330 | return `${resolvedBaseUrl}/v1beta/models${keyQuery}`; |
| 331 | } |
| 332 | case "ollama": |
| 333 | return `${trimApiUrl(rawBaseUrl)}/api/tags`; |
| 334 | default: { |
| 335 | const resolvedBaseUrl = resolveProviderBaseUrl(providerId, baseUrl, exactRequestUrl); |
| 336 | return `${resolvedBaseUrl}/models`; |
| 337 | } |
| 338 | } |
| 339 | } |
| 340 | |
| 341 | export function buildOpenAICompatibleUrl( |
| 342 | baseUrl?: string, |
no test coverage detected