File size: 1,425 Bytes
09572bd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import random
def build_provider_index(providers: list) -> dict:
return {p.name: p for p in providers}
def build_model_index(providers: list) -> dict:
"""Build {slot: [(provider_name, actual_model_id), ...]} from providers."""
index = {}
for p in providers:
for slot, model in p.get_model_list():
index.setdefault(slot, []).append((p.name, model))
return index
def get_shuffled_combos(index: dict, slot: str) -> list:
"""Get shuffled (provider_name, actual_model_id) list for a slot."""
candidates = list(index.get(slot, []))
random.shuffle(candidates)
return candidates
def build_providers(keys: dict):
from .providers import GroqProvider, G4FProvider, NvidiaNimProvider, LLM7Provider, GeminiProvider, SambanovaProvider, DeepSeekProvider
ps = []
if keys.get('groq'):
ps.append(GroqProvider(keys['groq']))
if keys.get('groq2'):
ps.append(GroqProvider(keys['groq2'], name='groq2'))
ps.append(G4FProvider())
if keys.get('gemini'):
ps.append(GeminiProvider(keys['gemini']))
if keys.get('nvidia_nim'):
ps.append(NvidiaNimProvider(keys['nvidia_nim']))
if keys.get('llm7'):
ps.append(LLM7Provider(keys['llm7']))
if keys.get('sambanova'):
ps.append(SambanovaProvider(keys['sambanova']))
if keys.get('deepseek'):
ps.append(DeepSeekProvider(keys['deepseek']))
return ps
|