Marylene commited on
Commit
a0d1aaa
·
verified ·
1 Parent(s): 958ec1d

Mise en forme

Browse files
Files changed (1) hide show
  1. quick_deploy_agent.py +40 -0
quick_deploy_agent.py CHANGED
@@ -384,3 +384,43 @@ class Resolve(Tool):
384
  final = ranked[0]; alts = ranked[1:1+max(0,int(topn))]
385
  exp = f"Choix {final['code']} (score {final['score_final']:.2f}) – votes={final['votes']} – raisons: {', '.join(sorted(set(final['evidences'])))}"
386
  return {"final": final, "alternatives": alts, "explanation": exp}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
384
  final = ranked[0]; alts = ranked[1:1+max(0,int(topn))]
385
  exp = f"Choix {final['code']} (score {final['score_final']:.2f}) – votes={final['votes']} – raisons: {', '.join(sorted(set(final['evidences'])))}"
386
  return {"final": final, "alternatives": alts, "explanation": exp}
387
+
388
+
389
+
390
+ def build_agent(model_id: str | None = None) -> CodeAgent:
391
+ model_id = model_id or "Qwen/Qwen2.5-Coder-7B-Instruct" # léger pour tester
392
+ agent = CodeAgent(
393
+ tools=[ValidateEANTool(), OFFByEAN(), RegexCOICOP(), OFFtoCOICOP(), SemSim(), Resolve()],
394
+ model=InferenceClientModel(model_id=model_id),
395
+ add_base_tools=False,
396
+ max_steps=6,
397
+ verbosity_level=2,
398
+ )
399
+ return agent
400
+
401
+ def parse_result(res):
402
+ if isinstance(res, dict): return res
403
+ try: return ast.literal_eval(res)
404
+ except Exception: return {"raw": res}
405
+
406
+ if __name__ == "__main__":
407
+ # Remplace par les vraies données si possible - uniquement du test
408
+ ean = "3256221112345" # EAN fictif (peut ne pas exister sur OFF)
409
+ label = "Camembert au lait cru AOP 250g - ALDI"
410
+
411
+ agent = build_agent()
412
+ task = f"""
413
+ Classe ce produit en COICOP:
414
+ EAN: {ean}
415
+ Libellé: {label}
416
+ Pipeline:
417
+ 1) validate_ean(ean)
418
+ 2) openfoodfacts_product_by_ean(ean) # si OFF ne trouve pas, on s'appuie sur regex + embeddings
419
+ 3) map_off_to_coicop(product_name, categories_tags, ingredients_text)
420
+ 4) coicop_regex_rules(text=libellé)
421
+ 5) coicop_semantic_similarity(text=libellé, topk=5)
422
+ 6) resolve_coicop_candidates([...], topn=3)
423
+ Attend un JSON final.
424
+ """
425
+ out = agent.run(task)
426
+ print(parse_result(out))