Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -67,39 +67,40 @@ Outils autorisés :
|
|
| 67 |
- python_interpreter # autorisé uniquement si nécessaire pour manipuler des listes/dicts
|
| 68 |
|
| 69 |
Règles STRICTES de sortie :
|
| 70 |
-
-
|
| 71 |
-
- N’écris
|
| 72 |
-
- N’utilise
|
| 73 |
-
- Le JSON final
|
| 74 |
|
| 75 |
Branchements selon l’EAN :
|
| 76 |
-
- Si l’EAN est vide,
|
| 77 |
-
- Sinon
|
| 78 |
|
| 79 |
Pipeline — MODE AVEC EAN (EAN valide) :
|
| 80 |
1) v = validate_ean(ean)
|
| 81 |
-
2) off = openfoodfacts_product_by_ean(ean) # si off.ok != True,
|
| 82 |
3) offmap = map_off_to_coicop(off_payload=off) # ou map_off_to_coicop(product_name, categories_tags, ingredients_text, ...) si utile
|
| 83 |
4) rx = coicop_regex_rules(text=LIBELLÉ UTILISATEUR)
|
| 84 |
5) sem = coicop_semantic_similarity(text=LIBELLÉ UTILISATEUR, topk=5)
|
| 85 |
6) merged = merge_candidates(candidates_lists=[offmap, rx, sem], min_k=3, fallback_bias="cheese")
|
| 86 |
7) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
|
| 87 |
-
→
|
| 88 |
|
| 89 |
Pipeline — MODE SANS EAN (EAN vide/invalide) :
|
| 90 |
4) rx = coicop_regex_rules(text=LIBELLÉ UTILISATEUR)
|
| 91 |
5) sem = coicop_semantic_similarity(text=LIBELLÉ UTILISATEUR, topk=5)
|
| 92 |
6) merged = merge_candidates(candidates_lists=[rx, sem], min_k=3, fallback_bias="cheese")
|
| 93 |
7) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
|
| 94 |
-
→
|
| 95 |
|
| 96 |
Contraintes d’usage :
|
| 97 |
-
-
|
| 98 |
-
- web_search
|
| 99 |
-
- Ne
|
| 100 |
"""
|
| 101 |
|
| 102 |
|
|
|
|
| 103 |
def classify(label: str, ean: str):
|
| 104 |
label = (label or "").strip()
|
| 105 |
ean = (ean or "").strip()
|
|
|
|
| 67 |
- python_interpreter # autorisé uniquement si nécessaire pour manipuler des listes/dicts
|
| 68 |
|
| 69 |
Règles STRICTES de sortie :
|
| 70 |
+
- Termine par un UNIQUE objet JSON valide en appelant final_answer avec cet objet.
|
| 71 |
+
- N’écris aucun texte hors de l’objet JSON final.
|
| 72 |
+
- N’utilise pas de backticks.
|
| 73 |
+
- Le JSON final doit contenir les clés: final, alternatives, candidates_top, explanation.
|
| 74 |
|
| 75 |
Branchements selon l’EAN :
|
| 76 |
+
- Si l’EAN est vide, égal à N/A, non numérique, de longueur différente de 8, 12, 13 ou 14, ou si la clé GS1 est invalide, alors utiliser le MODE SANS EAN.
|
| 77 |
+
- Sinon utiliser le MODE AVEC EAN.
|
| 78 |
|
| 79 |
Pipeline — MODE AVEC EAN (EAN valide) :
|
| 80 |
1) v = validate_ean(ean)
|
| 81 |
+
2) off = openfoodfacts_product_by_ean(ean) # si off.ok != True, ignorer off
|
| 82 |
3) offmap = map_off_to_coicop(off_payload=off) # ou map_off_to_coicop(product_name, categories_tags, ingredients_text, ...) si utile
|
| 83 |
4) rx = coicop_regex_rules(text=LIBELLÉ UTILISATEUR)
|
| 84 |
5) sem = coicop_semantic_similarity(text=LIBELLÉ UTILISATEUR, topk=5)
|
| 85 |
6) merged = merge_candidates(candidates_lists=[offmap, rx, sem], min_k=3, fallback_bias="cheese")
|
| 86 |
7) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
|
| 87 |
+
→ Appeler immédiatement final_answer avec res (objet JSON complet).
|
| 88 |
|
| 89 |
Pipeline — MODE SANS EAN (EAN vide/invalide) :
|
| 90 |
4) rx = coicop_regex_rules(text=LIBELLÉ UTILISATEUR)
|
| 91 |
5) sem = coicop_semantic_similarity(text=LIBELLÉ UTILISATEUR, topk=5)
|
| 92 |
6) merged = merge_candidates(candidates_lists=[rx, sem], min_k=3, fallback_bias="cheese")
|
| 93 |
7) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
|
| 94 |
+
→ Appeler immédiatement final_answer avec res (objet JSON complet).
|
| 95 |
|
| 96 |
Contraintes d’usage :
|
| 97 |
+
- Utiliser python_interpreter uniquement pour manipuler des listes ou des dictionnaires si merge_candidates ne suffit pas. Ne pas créer de fichiers ni faire d’IO externes.
|
| 98 |
+
- web_search et web_get sont optionnels; ne les utiliser que si rx et sem sont insuffisants.
|
| 99 |
+
- Ne rien imprimer ni ajouter d’explications hors du JSON final.
|
| 100 |
"""
|
| 101 |
|
| 102 |
|
| 103 |
+
|
| 104 |
def classify(label: str, ean: str):
|
| 105 |
label = (label or "").strip()
|
| 106 |
ean = (ean or "").strip()
|