fix(llm): Mistral 403 tier_not_allowed — défauts tous-plans + sonde chat + migration 36 (v7.59.1)
La clé fonctionne: /v1/models 200 + chat 200 (vérifié live). L'échec venait
du modèle: mistral-large-latest (défaut PROVIDERS + tête de liste) n'est pas
servi par les plans d'abonnement basiques → 403 code 1910 « tier_not_allowed »,
et le Test connection sélectionnait systématiquement ce premier candidat.
- PROVIDERS mistral default → mistral-small-latest (tous plans)
- PROVIDER_MODELS réordonnée: tous-plans d'abord (ordre du test de connexion)
- mistral ∈ _CHAT_VALIDATED_PROVIDERS: le fetch modèles ne garde que les
modèles réellement servis (46 listés → 25 utilisables avec la clé du compte)
- migration 36: default_model bloqué (large/pixtral-large) reset en base
Test live déployé: {ok:true, model:mistral-small-latest, reply:PONG,
verified:true} · tests/test_agent.py 53/53 · nouveau test d'ancrage
test_mistral_defaults_are_tier_safe
This commit is contained in:
@@ -89,6 +89,21 @@ def test_llm_client_providers_listed(client):
|
||||
assert name in PROVIDERS
|
||||
|
||||
|
||||
def test_mistral_defaults_are_tier_safe(client):
|
||||
"""La clé Mistral plan basique → 403 « tier_not_allowed » sur mistral-large/pixtral-large.
|
||||
Le modèle par défaut et le premier de la liste du test de connexion doivent
|
||||
être des modèles servis par tous les plans."""
|
||||
from app.services.llm_client import PROVIDERS, PROVIDER_MODELS
|
||||
tier_blocked = {"mistral-large-latest", "pixtral-large-latest"}
|
||||
assert PROVIDERS["mistral"][1] not in tier_blocked
|
||||
assert PROVIDER_MODELS["mistral"][0] not in tier_blocked
|
||||
# le fallback du modèle retiré (PROVIDERS default) est présent dans la liste
|
||||
assert PROVIDERS["mistral"][1] in PROVIDER_MODELS["mistral"]
|
||||
# et la liste des modèles Mistral est validée chat à chaque fetch (403 exclus)
|
||||
from app.services.llm_config import _CHAT_VALIDATED_PROVIDERS
|
||||
assert "mistral" in _CHAT_VALIDATED_PROVIDERS
|
||||
|
||||
|
||||
def test_llm_client_openai_compatible_bases(client):
|
||||
"""Providers that need an OpenAI-compatible surface must point at it.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user