Spaces:
Runtime error
Runtime error
Commit History
-
test(eval): jeu d'evaluation de la recherche, 102 questions relues
Genere par ministral-14b a partir de 70 articles tires au sort (60 % d'articles normatifs, 20 % de gros textes, 20 % au hasard), deux questions par article : une requete courte, une question en langage courant. 140 candidates. Relues contre l'article complet, puis chaque verdict verifie par un relecteur contradictoire : 13 gardees telles quelles, 89 corrigees (la plupart reprenaient trop de mots de l'article, ou etaient trop vagues pour designer ce texte), 38 retirees (listes de noms, fragments de tableau, preambules sans contenu). Chaque item garde sa question initiale et la raison du verdict ; le recoupement lexical est recalcule (aucun au-dessus de 0,35). 15 items etaient reserves au lot de test avant la relecture : 11 y restent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>9bbc7a0 -
feat(intention): classement par Groq court et en cache, plus de classement local
Le classement local par embeddings est retire (intent_local.py, intent_examples.py, leurs tests et le prechauffage au demarrage). INTENT_CLASSIFIER accepte « groq » (defaut) ou « llm » (le modele du chat) ; l'ancienne valeur « gemini » est ramenee a « llm », et « local » est refuse avec la raison plutot qu'avec l'erreur generique de pydantic. Le mode groq menage le quota du jour (200 000 jetons, 1 000 requetes) : - consignes courtes (~300 jetons au lieu de ~870 : le chat plafonnait vers 215 questions par jour), schema strict, sortie de 40 jetons ; - deux derniers echanges seulement, 200 caracteres chacun ; - cache des verdicts (2 000 entrees, 24 h) : un message identique ne coute plus de requete ; un repli n'y entre jamais. Quand Groq ne peut pas repondre dans les temps — quota epuise (aucune requete n'est alors envoyee), attente du limiteur au-dela de 0,5 s, delai GROQ_INTENTION_TIMEOUT_S (3 s) depasse, panne — la question part aussitot en « juridique », avec une regle `defaut-g…21d412f
-
feat(chat): classement de l'intention en local, sans appel a Gemini
Chaque question coutait deux appels a Gemini : le classement (juridique, bavardage, question sur l'assistant, hors sujet) puis la reponse. Le classement prenait 3,6 s en reflexion minimale et une requete sur deux du quota gratuit. Il se fait desormais par EmbeddingGemma, deja en memoire pour la recherche : le message est rapproche d'une banque d'exemples etiquetes (intent_examples.py, questions de droit surtout en mots de tous les jours, noms de personnes et nominations compris). Chaque categorie recoit la moyenne de ses 3 exemples les plus proches ; une categorie non juridique ne l'emporte qu'avec 0,04 d'avance — dans le doute, c'est une question de droit. Un message court qui n'est pas clairement juridique est reclasse avec la question precedente (« et pour un mineur ? ») ; un verdict non juridique est encore contredit si un article du corpus est a 0,42 de similarite ou plus. Mesure sur 122 messages etiquetes (tests/fixtures/intent_eval.json, distincts de la banque), banque seule :…52efadf