From 5721a0a36faabd479ca2fc343dd9254239ef3cff Mon Sep 17 00:00:00 2001 From: Antoine Piron Date: Mon, 12 Oct 2026 14:47:08 +0200 Subject: [PATCH] Fix model list for GitHub Models via its catalog endpoint Co-Authored-By: Claude Sonnet 5.5 --- artifacts/flask-api/ai_agent.py | 11 +++++++++++ artifacts/flask-api/app.py | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/artifacts/flask-api/ai_agent.py b/artifacts/flask-api/ai_agent.py index 2d8266a..830a4e9 100644 --- a/artifacts/flask-api/ai_agent.py +++ b/artifacts/flask-api/ai_agent.py @@ -77,6 +77,17 @@ def get_client() -> OpenAI: return _client +GITHUB_CATALOG_URL = "https://models.github.ai/catalog/models" + + +def list_model_ids() -> list[str]: + """Modèles accessibles avec la clé en place (GitHub Models : catalogue dédié, /models n'est pas OpenAI-compatible).""" + client = get_client() + if "models.github.ai" in str(client.base_url): + return sorted(m["id"] for m in client.get(GITHUB_CATALOG_URL, cast_to=object)) + return sorted(m.id for m in client.models.list().data) + + def filter_idea(content: str) -> dict: """ Filtre une idée selon le cadre légal international des droits humains diff --git a/artifacts/flask-api/app.py b/artifacts/flask-api/app.py index 62d4fc3..944cb7f 100644 --- a/artifacts/flask-api/app.py +++ b/artifacts/flask-api/app.py @@ -60,7 +60,7 @@ from database import ( check_ip_blacklist, record_ip_rejection, get_ip_blacklist, remove_ip_blacklist, set_setting, ) -from ai_agent import filter_idea, synthesize_ideas, check_existing_law, get_client, get_model +from ai_agent import filter_idea, synthesize_ideas, check_existing_law, get_client, get_model, list_model_ids # ─── Logging ──────────────────────────────────────────────────────────────── @@ -1297,7 +1297,7 @@ def admin_ai_models(): """Modèles actuellement actifs + liste de ceux accessibles avec la clé en place.""" out = {"filter": get_model("filter"), "synthesis": get_model("synthesis"), "available": [], "error": None} try: - out["available"] = sorted(m.id for m in get_client().models.list().data) + out["available"] = list_model_ids() except Exception as e: logger.warning("Admin — liste des modèles IA impossible : %s", type(e).__name__) out["error"] = f"{type(e).__name__}: {str(e)[:200]}" -- 2.39.5