Marylene commited on
Commit
c2b538a
·
verified ·
1 Parent(s): 342e87e

interdire tout controle de flux par le code généré par l'agent

Browse files
Files changed (1) hide show
  1. app.py +30 -23
app.py CHANGED
@@ -62,41 +62,48 @@ Outils autorisés :
62
  - coicop_semantic_similarity
63
  - merge_candidates
64
  - resolve_coicop_candidates
65
- - web_search
66
- - web_get
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
 
 
62
  - coicop_semantic_similarity
63
  - merge_candidates
64
  - resolve_coicop_candidates
65
+ - python_interpreter # UNIQUEMENT pour lignes simples d’assignation ou d’appel d’outil (voir ci-dessous)
66
+
67
+ Règles STRICTES d’écriture de code :
68
+ - Pas de contrôle de flux ni structure Python : AUCUN if/else/for/while/try/with/def/class.
69
+ - AUCUN print, AUCUN logging, AUCUNE concaténation multi-ligne, AUCUN caractère « \ » de continuation.
70
+ - Chaque bloc de code doit contenir **une seule** instruction Python, sur **une** ligne.
71
+ - Au début, crée deux variables :
72
+ 1) EAN_STR = "{ean}" # chaîne simple
73
+ 2) LBL = \"\"\"{label}\"\"\" # triple guillemets pour éviter les erreurs de guillemets
74
+ - Pour tous les outils qui prennent le libellé, passe **LBL** (ne colle jamais le libellé en littéral).
75
+ - `validate_ean` renvoie un objet { "valid": bool, "normalized": "..." } — ne l’utilise pas comme booléen en code.
76
+ - Tu choisis le chemin (AVEC ou SANS EAN) par raisonnement, **sans** écrire d’instructions conditionnelles en code. Tu n’appelles que les outils utiles.
77
 
78
  Règles STRICTES de sortie :
79
+ - Termine par un UNIQUE objet JSON valide en appelant final_answer avec cet objet (pas de texte hors JSON).
80
+ - Pas de backticks.
 
81
  - Le JSON final doit contenir les clés: final, alternatives, candidates_top, explanation.
82
 
83
+ Branchements décider sans écrire de if en code) :
84
+ - MODE AVEC EAN si EAN_STR n’est pas "N/A" ET si validate_ean(EAN_STR) indique valid = True ET si OpenFoodFacts retourne ok = True.
85
+ - Sinon, MODE SANS EAN.
86
 
87
+ Pipeline — MODE AVEC EAN :
88
+ 1) v = validate_ean(EAN_STR)
89
+ 2) off = openfoodfacts_product_by_ean(EAN_STR)
90
+ 3) offmap = map_off_to_coicop(off_payload=off)
91
+ 4) rx = coicop_regex_rules(text=LBL)
92
+ 5) sem = coicop_semantic_similarity(text=LBL, topk=5)
93
  6) merged = merge_candidates(candidates_lists=[offmap, rx, sem], min_k=3, fallback_bias="cheese")
94
  7) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
95
  → Appeler immédiatement final_answer avec res (objet JSON complet).
96
 
97
+ Pipeline — MODE SANS EAN :
98
+ 1) rx = coicop_regex_rules(text=LBL)
99
+ 2) sem = coicop_semantic_similarity(text=LBL, topk=5)
100
+ 3) merged = merge_candidates(candidates_lists=[rx, sem], min_k=3, fallback_bias="cheese")
101
+ 4) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
102
  → Appeler immédiatement final_answer avec res (objet JSON complet).
103
 
104
  Contraintes d’usage :
105
+ - N’utilise python_interpreter que pour des **lignes uniques** d’assignation ou d’appel d’outil (format: `var = tool_name(args)` ou `tool_name(args)`).
106
+ - Ne crée aucun fichier, pas d’IO externes.
 
107
  """
108
 
109