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

interdire tout contrôle de flux dans le code généré par l'agent

Browse files
Files changed (1) hide show
  1. quick_deploy_agent.py +30 -23
quick_deploy_agent.py CHANGED
@@ -740,41 +740,48 @@ if __name__ == "__main__":
740
  - coicop_semantic_similarity
741
  - merge_candidates
742
  - resolve_coicop_candidates
743
- - web_search
744
- - web_get
745
- - python_interpreter # autorisé uniquement si nécessaire pour manipuler des listes/dicts
 
 
 
 
 
 
 
 
 
746
 
747
  Règles STRICTES de sortie :
748
- - Termine par un UNIQUE objet JSON valide en appelant final_answer avec cet objet.
749
- - N’écris aucun texte hors de l’objet JSON final.
750
- - N’utilise pas de backticks.
751
  - Le JSON final doit contenir les clés: final, alternatives, candidates_top, explanation.
752
 
753
- Branchements selon l’EAN :
754
- - 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, passer en MODE SANS EAN.
755
- - Sinon, MODE AVEC EAN.
756
 
757
- Pipeline — MODE AVEC EAN (EAN valide) :
758
- 1) v = validate_ean(ean)
759
- 2) off = openfoodfacts_product_by_ean(ean) # si off.ok != True, ignorer off
760
- 3) offmap = map_off_to_coicop(off_payload=off) # ou map_off_to_coicop(product_name, categories_tags, ingredients_text, ...) si utile
761
- 4) rx = coicop_regex_rules(text=LIBELLÉ UTILISATEUR)
762
- 5) sem = coicop_semantic_similarity(text=LIBELLÉ UTILISATEUR, topk=5)
763
  6) merged = merge_candidates(candidates_lists=[offmap, rx, sem], min_k=3, fallback_bias="cheese")
764
  7) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
765
  → Appeler immédiatement final_answer avec res (objet JSON complet).
766
 
767
- Pipeline — MODE SANS EAN (EAN vide/invalide) :
768
- 4) rx = coicop_regex_rules(text=LIBELLÉ UTILISATEUR)
769
- 5) sem = coicop_semantic_similarity(text=LIBELLÉ UTILISATEUR, topk=5)
770
- 6) merged = merge_candidates(candidates_lists=[rx, sem], min_k=3, fallback_bias="cheese")
771
- 7) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
772
  → Appeler immédiatement final_answer avec res (objet JSON complet).
773
 
774
  Contraintes d’usage :
775
- - Utiliser python_interpreter uniquement pour manipuler des listes/dicts si merge_candidates ne suffit pas. Pas de fichiers, pas d’IO externes.
776
- - web_search / web_get sont optionnels (ne les utiliser que si rx + sem sont insuffisants).
777
- - Ne rien imprimer ni ajouter d’explications hors du JSON final.
778
  """
779
 
780
  # out = agent.run(task)
 
740
  - coicop_semantic_similarity
741
  - merge_candidates
742
  - resolve_coicop_candidates
743
+ - python_interpreter # UNIQUEMENT pour lignes simples d’assignation ou d’appel d’outil (voir ci-dessous)
744
+
745
+ Règles STRICTES d’écriture de code :
746
+ - Pas de contrôle de flux ni structure Python : AUCUN if/else/for/while/try/with/def/class.
747
+ - AUCUN print, AUCUN logging, AUCUNE concaténation multi-ligne, AUCUN caractère « \ » de continuation.
748
+ - Chaque bloc de code doit contenir **une seule** instruction Python, sur **une** ligne.
749
+ - Au début, crée deux variables :
750
+ 1) EAN_STR = "{ean}" # chaîne simple
751
+ 2) LBL = \"\"\"{label}\"\"\" # triple guillemets pour éviter les erreurs de guillemets
752
+ - Pour tous les outils qui prennent le libellé, passe **LBL** (ne colle jamais le libellé en littéral).
753
+ - `validate_ean` renvoie un objet { "valid": bool, "normalized": "..." } — ne l’utilise pas comme booléen en code.
754
+ - Tu choisis le chemin (AVEC ou SANS EAN) par raisonnement, **sans** écrire d’instructions conditionnelles en code. Tu n’appelles que les outils utiles.
755
 
756
  Règles STRICTES de sortie :
757
+ - Termine par un UNIQUE objet JSON valide en appelant final_answer avec cet objet (pas de texte hors JSON).
758
+ - Pas de backticks.
 
759
  - Le JSON final doit contenir les clés: final, alternatives, candidates_top, explanation.
760
 
761
+ Branchements décider sans écrire de if en code) :
762
+ - 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.
763
+ - Sinon, MODE SANS EAN.
764
 
765
+ Pipeline — MODE AVEC EAN :
766
+ 1) v = validate_ean(EAN_STR)
767
+ 2) off = openfoodfacts_product_by_ean(EAN_STR)
768
+ 3) offmap = map_off_to_coicop(off_payload=off)
769
+ 4) rx = coicop_regex_rules(text=LBL)
770
+ 5) sem = coicop_semantic_similarity(text=LBL, topk=5)
771
  6) merged = merge_candidates(candidates_lists=[offmap, rx, sem], min_k=3, fallback_bias="cheese")
772
  7) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
773
  → Appeler immédiatement final_answer avec res (objet JSON complet).
774
 
775
+ Pipeline — MODE SANS EAN :
776
+ 1) rx = coicop_regex_rules(text=LBL)
777
+ 2) sem = coicop_semantic_similarity(text=LBL, topk=5)
778
+ 3) merged = merge_candidates(candidates_lists=[rx, sem], min_k=3, fallback_bias="cheese")
779
+ 4) res = resolve_coicop_candidates(json_lists=[merged], topn=3)
780
  → Appeler immédiatement final_answer avec res (objet JSON complet).
781
 
782
  Contraintes d’usage :
783
+ - 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)`).
784
+ - Ne crée aucun fichier, pas d’IO externes.
 
785
  """
786
 
787
  # out = agent.run(task)