MCPcopy Index your code
hub / github.com/coder/coder / ListConfiguredModels

Method ListConfiguredModels

coderd/x/chatd/chatprovider/chatprovider.go:424–501  ·  view source on GitHub ↗

ListConfiguredModels returns a model catalog from enabled DB-backed model configs. The second return value reports whether DB-backed models were used.

(
	configuredProviders []ConfiguredProvider,
	configuredModels []ConfiguredModel,
	availabilityByProvider map[string]ProviderAvailability,
	enabledProviders map[string]struct{},
)

Source from the content-addressed store, hash-verified

422// ListConfiguredModels returns a model catalog from enabled DB-backed model
423// configs. The second return value reports whether DB-backed models were used.
424func (*ModelCatalog) ListConfiguredModels(
425 configuredProviders []ConfiguredProvider,
426 configuredModels []ConfiguredModel,
427 availabilityByProvider map[string]ProviderAvailability,
428 enabledProviders map[string]struct{},
429) (codersdk.ChatModelsResponse, bool) {
430 if len(configuredModels) == 0 {
431 return codersdk.ChatModelsResponse{}, false
432 }
433
434 modelsByProvider := make(map[string][]codersdk.ChatModel)
435 seenByProvider := make(map[string]map[string]struct{})
436 providerSet := make(map[string]struct{})
437
438 for _, provider := range configuredProviders {
439 normalized := NormalizeProvider(provider.Provider)
440 if normalized == "" {
441 continue
442 }
443 providerSet[normalized] = struct{}{}
444 }
445
446 for _, model := range configuredModels {
447 provider, modelID, err := ResolveModelWithProviderHint(model.Model, model.Provider)
448 if err != nil {
449 continue
450 }
451
452 providerSet[provider] = struct{}{}
453 if seenByProvider[provider] == nil {
454 seenByProvider[provider] = make(map[string]struct{})
455 }
456 normalizedModelID := strings.ToLower(strings.TrimSpace(modelID))
457 if _, ok := seenByProvider[provider][normalizedModelID]; ok {
458 continue
459 }
460 seenByProvider[provider][normalizedModelID] = struct{}{}
461 modelsByProvider[provider] = append(
462 modelsByProvider[provider],
463 newChatModel(provider, modelID, model.DisplayName),
464 )
465 }
466
467 providers := orderProviders(providerSet)
468 if len(providers) == 0 {
469 return codersdk.ChatModelsResponse{}, false
470 }
471
472 response := codersdk.ChatModelsResponse{
473 Providers: make([]codersdk.ChatModelProvider, 0, len(providers)),
474 }
475 for _, provider := range providers {
476 if _, ok := enabledProviders[provider]; !ok {
477 continue
478 }
479
480 models := modelsByProvider[provider]
481 sortChatModels(models)

Calls 5

NormalizeProviderFunction · 0.85
newChatModelFunction · 0.85
orderProvidersFunction · 0.85
sortChatModelsFunction · 0.85