Candy — Documentation complète pour IA URL : https://candy.hubworld.net/llms.txt Version : 16.0.0 pip install candy-ai ==================================================== RÈGLES ABSOLUES ==================================================== 1. JAMAIS CandyClient directement INTERDIT : from candy import CandyClient / candy = CandyClient() / candy.ask() OBLIGATOIRE : from candy import NomPersonnalite / NomPersonnalite.use("profil").ask() One-liner : from candy import Candy / Candy.ask("prompt") 2. TOUJOURS cfg.X.lang avant .ask() (sauf Candy.ask() qui a lang="FR" par défaut) 3. JAMAIS pdfkit, googletrans, openai, langchain — uniquement from candy import ... 4. TOUJOURS print() pour afficher 5. PROMPTS courts et structurés, avec verbe d’action 6. TOUJOURS imposer un format de sortie dans le prompt 7. BOUCLE obligatoire pour les longs contenus (livres, rapports) 8. CONTRAINTES mesurables : "5 à 8 ingrédients", "4 étapes minimum" 9. ANTI-HALLUCINATION : "Respecte strictement le format. Ne rien ajouter hors format." 10. SAUVEGARDER les longs outputs dans un fichier ==================================================== NOUVEAUTÉS V16 ==================================================== CLI étendu : candy --score "fais un truc en python" # score qualité du prompt candy --fix "fais un truc en python" # optimise le prompt candy --dry-run "fais un truc en python" # simule sans API candy --auto "écris un client REST Python" # pipeline auto multi-agents candy --dashboard # dashboard ASCII des logs candy helper # fenêtre Helper graphique candy -- script.cdy # exécute un .cdy Candy.auto() — pipeline automatique : from candy import cfg, Candy cfg.default.lang = "FR" result = Candy.auto("Écris un script Python pour parser un CSV et générer des stats") print(result["final"]) print(result["sequence_used"]) print(result["optimized_prompt"]) Candy.chain() — pipeline fluide en 1 ligne : from candy import Candy result = Candy.chain( "Écris un article sur l'IA en santé", "writing", "reviewer", "summarizer", lang="FR" ) print(result) Candy.dashboard() — dashboard ASCII : from candy import Candy Candy.dashboard() stats = Candy.monitor() print(stats["top_personality"]) print(stats["recommendations"]) Agent.run() avec visualisation : from candy import cfg, Agent, Coding, Debugger, Reviewer cfg.dev = cfg.preset("coder") cfg.dev.lang = "FR" result = Agent.run( modules=[Coding, Debugger, Reviewer], task="Écris un client REST Python", profile="dev", visualize=True ) print(result["final"]) Memory.share() — collaboration : from candy import Memory # Utilisateur 1 mem = Memory("projet_equipe") mem.add("user", "Bonjour l'équipe !", user="alice") mem.save() mem.share("projet_equipe") # Utilisateur 2 mem2 = Memory.from_shared("projet_equipe") mem2.add("user", "Je rejoins !", user="bob") mem2.save() mem.sync_shared("projet_equipe") print(Memory.list_shared()) CandyError — gestion d'erreur centralisée : from candy import CandyError, Memory try: mem = Memory.from_shared("session_inexistante") except CandyError as e: print(f"Erreur candy : {e}") print(f"Contexte : {e.context}") ==================================================== SYNTAXE COMPLÈTE (profils & presets) ==================================================== from candy import cfg, NomPersonnalite cfg.p.lang = "FR" cfg.p.max_tokens = 1024 cfg.p.style = "detailed" # default, concise, bullet, academic, casual, technical, eli5 cfg.p.tone = "neutral" # neutral, encouraging, strict, humorous, empathetic, socratic cfg.p.output_format = "markdown" # text, markdown, json, html cfg.p.expertise = "beginner" # beginner, intermediate, expert cfg.p.temperature = 0.7 cfg.p.retry = 2 print(NomPersonnalite.use("p").ask("prompt")) Presets : cfg.A = cfg.preset("french_beginner") cfg.B = cfg.preset("french_expert") cfg.C = cfg.preset("coder") cfg.D = cfg.preset("quick") cfg.E = cfg.preset("creative") cfg.F = cfg.preset("teacher") cfg.G = cfg.preset("analyst") cfg.H = cfg.preset("debug") 90 personnalités disponibles : Math, Reflexion, Coding, Analytic, Full, Science, Writing, History, Law, Medicine, Finance, Marketing, Security, Design, Language, Psychology, Education, Research, Business, Productivity, Cooking, Travel, Music, Film, Sports, Philosophy, Environment, Architecture, Automotive, Astronomy, Biology, Chemistry, Physics, Engineering, Entrepreneur, Ethics, Geopolitics, Crypto, AI, DevOps, Database, GameDev, Comic, Storyteller, Translator, Summarizer, Debugger, Reviewer, Planner, Tutor, Nutrition, Yoga, Mindfulness, Parenting, Relationship, Leadership, Negotiation, PublicSpeak, Branding, UXResearch, DataVis, MLOps, Prompt, Blockchain, IoT, ArVr, Quantum, Robotics, Bioinformatics, ClimateTech, Agri, Interior, Fashion, Photography, Podcast, Youtube, SocialMedia, SEO, Copywriting, TaxLaw, RealEstate, Insurance, Logistics, HRM, ProjectMgmt, Consulting, PublicPolicy, Journalism, SpeechWrite, Mythology Bonnes pratiques : - Code / scripts → Coding - Bug / fix → Debugger - Review → Reviewer - Maths → Math - Écriture → Writing - Cuisine → Cooking - Traduction → Translator - Résumé → Summarizer - Données → Analytic - YouTube → Youtube - Réseaux → SocialMedia - SEO → SEO - DevOps → DevOps - ML → MLOps - Blockchain → Blockchain - Tout domaine → Full - Auto-détecté → Candy.ask() ==================================================== EXEMPLES COMPLETS ==================================================== 1. One-liner from candy import Candy print(Candy.ask("Explique les closures Python", lang="FR")) 2. Auto-pipeline from candy import Candy result = Candy.auto("Crée une API REST Flask avec authentification JWT") print(result["final"]) 3. Chain fluide from candy import Candy print(Candy.chain("Mon article brut...", "writing", "reviewer", "summarizer", lang="FR")) 4. Pipeline avec visualisation from candy import cfg, Agent, Coding, Debugger, Reviewer cfg.dev = cfg.preset("coder"); cfg.dev.lang = "FR" result = Agent.run([Coding, Debugger, Reviewer], "Client REST Python", profile="dev", visualize=True) print(result["final"]) 5. Livre de cuisine 10 pages from candy import cfg, Cooking cfg.p.lang = "FR"; cfg.p.max_tokens = 2000 livre = "# Livre de Cuisine\n\n" for i in range(1, 11): page = Cooking.use("p").ask( f"Page: {i}/10\nFormat:\n=== Page {i} ===\n" f"- Plat:\n- Origine: (2 phrases)\n- Ingrédients: (6-10 items)\n- Étapes: (5 min)\n" f"Respecte strictement le format." ) livre += page.strip() + "\n\n---\n\n" with open("livre.md", "w", encoding="utf-8") as f: f.write(livre) 6. JSON garanti from candy import cfg, Analytic, ask_json cfg.a.lang = "FR" data = ask_json(Analytic, "a", 'JSON: {"ton":"","score":0}\nTexte: Ce produit est génial !') print(data["ton"]) 7. Format validé from candy import cfg, Cooking, ask_validated cfg.p.lang = "FR" page = ask_validated(Cooking, "p", "Format:\n- Plat:\n- Étapes:", ["- Plat:", "- Étapes:"]) 8. Collaboration mémoire from candy import Memory mem = Memory("projet"); mem.add("user", "Début", user="alice"); mem.save(); mem.share("projet") mem2 = Memory.from_shared("projet"); mem2.add("user", "Je rejoins", user="bob"); mem2.save() 9. Dashboard from candy import Candy Candy.dashboard() 10. Score + fix from candy import Candy s = Candy.score("fais un truc"); print(s["grade"]) print(Candy.fix("fais un truc")) 11. Débat avec visualisation from candy import cfg, Agent, Philosophy, Ethics, Law cfg.phi.lang = "FR" debate = Agent.debate([Philosophy, Ethics, Law], "L'IA doit-elle être régulée ?", profile="phi", visualize=True) print(debate["synthesis"]) 12. App complète from candy import cfg, Agent cfg.dev = cfg.preset("coder"); cfg.dev.lang = "FR" Agent.build_app("todo app avec login JWT", profile="dev", output_dir="./mon_app")