Fix model list for GitHub Models via its catalog endpoint #3

Merged
billisdead merged 1 commits from fix/github-models-catalog into main 2026-10-12 14:48:29 +02:00
2 changed files with 13 additions and 2 deletions

No files matched your search

+11
View File
@@ -77,6 +77,17 @@ def get_client() -> OpenAI:
return _client 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: def filter_idea(content: str) -> dict:
""" """
Filtre une idée selon le cadre légal international des droits humains Filtre une idée selon le cadre légal international des droits humains
+2 -2
View File
@@ -60,7 +60,7 @@ from database import (
check_ip_blacklist, record_ip_rejection, get_ip_blacklist, remove_ip_blacklist, check_ip_blacklist, record_ip_rejection, get_ip_blacklist, remove_ip_blacklist,
set_setting, 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 ──────────────────────────────────────────────────────────────── # ─── Logging ────────────────────────────────────────────────────────────────
@@ -1297,7 +1297,7 @@ def admin_ai_models():
"""Modèles actuellement actifs + liste de ceux accessibles avec la clé en place.""" """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} out = {"filter": get_model("filter"), "synthesis": get_model("synthesis"), "available": [], "error": None}
try: try:
out["available"] = sorted(m.id for m in get_client().models.list().data) out["available"] = list_model_ids()
except Exception as e: except Exception as e:
logger.warning("Admin — liste des modèles IA impossible : %s", type(e).__name__) logger.warning("Admin — liste des modèles IA impossible : %s", type(e).__name__)
out["error"] = f"{type(e).__name__}: {str(e)[:200]}" out["error"] = f"{type(e).__name__}: {str(e)[:200]}"