findBestProvider method
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;
}