expAge commited on
Commit ·
82f7fac
1
Parent(s): 2c3fd2e
fix(2.5): pool pick pour TOUS les Gemini (pas seulement NATIVE_REQUIRED)
Browse filesLa diag a confirmé : pour 2.5 (qui passe par _build_openai_compat),
override_token=None → fallback sur env GOOGLE_API_KEY qui contient
le CSV brut des 4 clés (159 chars) → Gemini renvoie INVALID_KEY
(évidemment).
Cause : le pick_unblown_gemini_key était limité à GEMINI_NATIVE_REQUIRED
(= {3.1, 3.5}). Pour 2.5, on n'allait jamais chercher dans le pool et
on tombait sur l'env brut.
Fix : changer la condition pour `model in GEMINI_MODELS` (= TOUS les
Gemini natifs, incluant 2.5). Pareil dans chat_with_agent et
run_jarvis_flow. Le fallback final (pool vide) parse le CSV via
_parse_google_keys()[0] au lieu de retomber sur l'env brut.
app.py
CHANGED
|
@@ -1028,12 +1028,15 @@ def chat_with_agent(message: str, history: list[dict], api_key: str, model: str,
|
|
| 1028 |
# peut être utilisée même hors pool) et on la track quand même —
|
| 1029 |
# mark_blown ultérieur fonctionne et le dropdown reflète l'état.
|
| 1030 |
current_gemini_key: Optional[str] = None
|
| 1031 |
-
if model in
|
|
|
|
|
|
|
|
|
|
| 1032 |
current_gemini_key = pick_unblown_gemini_key(model)
|
| 1033 |
if not current_gemini_key:
|
| 1034 |
-
|
| 1035 |
-
if
|
| 1036 |
-
current_gemini_key =
|
| 1037 |
set_current_gemini_key(current_gemini_key)
|
| 1038 |
# Annonce le modèle actif → préfixe ✅ devant lui dans le dropdown.
|
| 1039 |
set_current_model(model)
|
|
|
|
| 1028 |
# peut être utilisée même hors pool) et on la track quand même —
|
| 1029 |
# mark_blown ultérieur fonctionne et le dropdown reflète l'état.
|
| 1030 |
current_gemini_key: Optional[str] = None
|
| 1031 |
+
if model in GEMINI_MODELS:
|
| 1032 |
+
# Pick pour TOUS les Gemini (3.1, 3.5, 2.5) — pas seulement
|
| 1033 |
+
# NATIVE_REQUIRED. Sinon 2.5 (OpenAI-compat) tombe sur l'env
|
| 1034 |
+
# GOOGLE_API_KEY brut = CSV du pool non parsé = INVALID_KEY.
|
| 1035 |
current_gemini_key = pick_unblown_gemini_key(model)
|
| 1036 |
if not current_gemini_key:
|
| 1037 |
+
keys = _parse_google_keys()
|
| 1038 |
+
if keys:
|
| 1039 |
+
current_gemini_key = keys[0]
|
| 1040 |
set_current_gemini_key(current_gemini_key)
|
| 1041 |
# Annonce le modèle actif → préfixe ✅ devant lui dans le dropdown.
|
| 1042 |
set_current_model(model)
|
jarvis.py
CHANGED
|
@@ -1111,22 +1111,23 @@ def run_jarvis_flow(
|
|
| 1111 |
_app = _get_app_module()
|
| 1112 |
if _app is None:
|
| 1113 |
raise RuntimeError("app module unavailable")
|
| 1114 |
-
|
| 1115 |
pick_unblown_gemini_key = _app.pick_unblown_gemini_key
|
| 1116 |
_set_current_key = _app.set_current_gemini_key
|
| 1117 |
_set_current_model = _app.set_current_model
|
| 1118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1119 |
current_gemini_key = pick_unblown_gemini_key(model)
|
| 1120 |
-
# Fallback :
|
| 1121 |
-
#
|
| 1122 |
-
# variable d'env singulière GOOGLE_API_KEY (qui
|
| 1123 |
-
# peut être utilisée même hors pool). On la track
|
| 1124 |
-
# quand même comme current_gemini_key → mark_blown
|
| 1125 |
-
# ultérieur fonctionne et le dropdown reflète l'état.
|
| 1126 |
if not current_gemini_key:
|
| 1127 |
-
|
| 1128 |
-
if
|
| 1129 |
-
current_gemini_key =
|
| 1130 |
_set_current_key(current_gemini_key)
|
| 1131 |
# Annonce le modèle actif → préfixe ✅ dans le dropdown.
|
| 1132 |
_set_current_model(model)
|
|
|
|
| 1111 |
_app = _get_app_module()
|
| 1112 |
if _app is None:
|
| 1113 |
raise RuntimeError("app module unavailable")
|
| 1114 |
+
GEMINI_MODELS = _app.GEMINI_MODELS
|
| 1115 |
pick_unblown_gemini_key = _app.pick_unblown_gemini_key
|
| 1116 |
_set_current_key = _app.set_current_gemini_key
|
| 1117 |
_set_current_model = _app.set_current_model
|
| 1118 |
+
# Pick pour TOUS les Gemini (3.1, 3.5, 2.5…), pas seulement
|
| 1119 |
+
# NATIVE_REQUIRED. Sinon 2.5 (qui passe par l'endpoint
|
| 1120 |
+
# OpenAI-compat) ne reçoit pas la clé du pool et tombe
|
| 1121 |
+
# sur l'env GOOGLE_API_KEY brut = CSV des 4 clés non
|
| 1122 |
+
# parsé = INVALID_KEY garanti.
|
| 1123 |
+
if model in GEMINI_MODELS:
|
| 1124 |
current_gemini_key = pick_unblown_gemini_key(model)
|
| 1125 |
+
# Fallback : pool vide → env GOOGLE_API_KEY (mais
|
| 1126 |
+
# _parse_google_keys → 1ère du CSV, pas CSV brut).
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1127 |
if not current_gemini_key:
|
| 1128 |
+
keys = _app._parse_google_keys()
|
| 1129 |
+
if keys:
|
| 1130 |
+
current_gemini_key = keys[0]
|
| 1131 |
_set_current_key(current_gemini_key)
|
| 1132 |
# Annonce le modèle actif → préfixe ✅ dans le dropdown.
|
| 1133 |
_set_current_model(model)
|