findBestProvider method

String? findBestProvider(
  1. Set<LLMCapability> required, {
  2. Set<LLMCapability>? preferred,
})

Find the best provider for a set of requirements Returns the provider with the most matching capabilities

Implementation

String? findBestProvider(
  Set<LLMCapability> required, {
  Set<LLMCapability>? preferred,
}) {
  String? bestProvider;
  int bestScore = -1;

  for (final entry in _capabilities.entries) {
    final providerId = entry.key;
    final capabilities = entry.value;

    // Must have all required capabilities
    if (!required.every((cap) => capabilities.contains(cap))) {
      continue;
    }

    // Calculate score based on preferred capabilities
    int score = required.length; // Base score for meeting requirements

    if (preferred != null) {
      score += preferred.where((cap) => capabilities.contains(cap)).length;
    }

    if (score > bestScore) {
      bestScore = score;
      bestProvider = providerId;
    }
  }

  return bestProvider;
}