Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -33,6 +33,16 @@ start_backup_thread()
|
|
| 33 |
def get_available_models():
|
| 34 |
return [model[0] for model in arena_config.APPROVED_MODELS]
|
| 35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
# Function to call Ollama API with caching
|
| 37 |
@lru_cache(maxsize=100)
|
| 38 |
def call_ollama_api(model, prompt):
|
|
@@ -84,9 +94,20 @@ def generate_responses(prompt):
|
|
| 84 |
# Select the first model (least battles)
|
| 85 |
model_a = sorted_models[0]
|
| 86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
# For the second model, use weighted random selection
|
| 88 |
-
weights = [1 / (battle_counts.get(m, 1) + 1) for m in
|
| 89 |
-
model_b = random.choices(
|
|
|
|
|
|
|
|
|
|
| 90 |
|
| 91 |
model_a_response = call_ollama_api(model_a, prompt)
|
| 92 |
model_b_response = call_ollama_api(model_b, prompt)
|
|
@@ -555,4 +576,4 @@ with gr.Blocks(css="""
|
|
| 555 |
if __name__ == "__main__":
|
| 556 |
# Initialize ELO ratings before launching the app
|
| 557 |
ensure_elo_ratings_initialized()
|
| 558 |
-
demo.launch(show_api=False)
|
|
|
|
| 33 |
def get_available_models():
|
| 34 |
return [model[0] for model in arena_config.APPROVED_MODELS]
|
| 35 |
|
| 36 |
+
# Function to get recent opponents for a model
|
| 37 |
+
recent_opponents = {}
|
| 38 |
+
|
| 39 |
+
def update_recent_opponents(model_a, model_b):
|
| 40 |
+
recent_opponents.setdefault(model_a, []).append(model_b)
|
| 41 |
+
recent_opponents.setdefault(model_b, []).append(model_a)
|
| 42 |
+
# Limit history to last 5 opponents
|
| 43 |
+
recent_opponents[model_a] = recent_opponents[model_a][-5:]
|
| 44 |
+
recent_opponents[model_b] = recent_opponents[model_b][-5:]
|
| 45 |
+
|
| 46 |
# Function to call Ollama API with caching
|
| 47 |
@lru_cache(maxsize=100)
|
| 48 |
def call_ollama_api(model, prompt):
|
|
|
|
| 94 |
# Select the first model (least battles)
|
| 95 |
model_a = sorted_models[0]
|
| 96 |
|
| 97 |
+
# Filter out recent opponents for model_a
|
| 98 |
+
potential_opponents = [m for m in sorted_models[1:] if m not in recent_opponents.get(model_a, [])]
|
| 99 |
+
|
| 100 |
+
# If no potential opponents left, reset recent opponents for model_a
|
| 101 |
+
if not potential_opponents:
|
| 102 |
+
recent_opponents[model_a] = []
|
| 103 |
+
potential_opponents = sorted_models[1:]
|
| 104 |
+
|
| 105 |
# For the second model, use weighted random selection
|
| 106 |
+
weights = [1 / (battle_counts.get(m, 1) + 1) for m in potential_opponents]
|
| 107 |
+
model_b = random.choices(potential_opponents, weights=weights, k=1)[0]
|
| 108 |
+
|
| 109 |
+
# Update recent opponents
|
| 110 |
+
update_recent_opponents(model_a, model_b)
|
| 111 |
|
| 112 |
model_a_response = call_ollama_api(model_a, prompt)
|
| 113 |
model_b_response = call_ollama_api(model_b, prompt)
|
|
|
|
| 576 |
if __name__ == "__main__":
|
| 577 |
# Initialize ELO ratings before launching the app
|
| 578 |
ensure_elo_ratings_initialized()
|
| 579 |
+
demo.launch(show_api=False)
|