Démarrage
Installation
Une seule commande. Aucune clé API. Aucun compte. Python 3.10+ requis.
pip install candy-ai
Fonctionne sur Windows, macOS et Linux. Candy se connecte automatiquement à l'API cedric-8EF — aucune configuration requise.
Démarrage
Premier appel
Un import, une ligne.
from candy import Coding print(Coding.ask("Écris une fonction Python qui inverse une chaîne"))
Pas de profil, pas de configuration — candy utilise le profil default automatiquement.
Personnalités
50 personnalités spécialisées
Chaque personnalité est optimisée pour son domaine. Importe celle dont tu as besoin.
from candy import Math, Writing, Medicine, Law, Finance print(Math.ask("Quelle est la dérivée de x³ + 2x ?")) print(Writing.ask("Écris un email professionnel pour décliner une réunion")) print(Medicine.ask("Quels sont les symptômes du diabète de type 2 ?")) print(Law.ask("Différence entre droit civil et droit pénal ?")) print(Finance.ask("Explique les intérêts composés avec un exemple"))
La liste complète des 50 personnalités est disponible sur la page d'accueil.
Configuration
Système de profils
Les profils te permettent de contrôler la langue, le style, le ton, la longueur et bien plus.
from candy import cfg, Coding, Math cfg.A.lang = "FR" cfg.A.style = "detailed" cfg.A.tone = "friendly" cfg.A.expertise = "beginner" cfg.A.max_tokens = 2000 cfg.A.temperature = 0.7 cfg.A.context = "Réponds toujours avec des exemples concrets." print(Coding.use("A").ask("Explique la récursivité")) print(Math.use("A").ask("Résous ∫x²sin(x)dx"))
Paramètres disponibles
| Paramètre | Type | Valeurs |
|---|---|---|
| lang | str | FR, EN, ES, DE, IT, PT, JA, ZH, AR, RU... |
| style | str | detailed, concise, technical, casual, bullet, markdown |
| tone | str | friendly, professional, strict, encouraging, empathetic, dramatic |
| expertise | str | beginner, intermediate, expert |
| max_tokens | int | nombre de tokens max dans la réponse |
| temperature | float | 0.0 (précis) → 2.0 (très créatif) |
| context | str | instruction système ajoutée à chaque appel |
| output_format | str | markdown, plain, json |
Tu peux créer autant de profils nommés que tu veux : cfg.A, cfg.B, cfg.monprofil, etc. Le profil default est utilisé quand tu n'appelles pas .use().
Configuration
Presets
14 profils prêts à l'emploi pour les cas d'usage courants.
cfg.A = cfg.preset("coder") # expert, markdown, 3000 tokens cfg.B = cfg.preset("french_beginner") # FR, détaillé, encourageant cfg.C = cfg.preset("creative") # casual, temperature=1.1 cfg.D = cfg.preset("quick") # concis, 120 tokens max
| Preset | Langue | Style | Tokens |
|---|---|---|---|
| french_beginner | FR | detailed · encouraging | default |
| french_expert | FR | concise · strict · expert | default |
| english_beginner | EN | detailed · encouraging | default |
| english_expert | EN | technical · strict · expert | default |
| coder | EN | markdown · expert | 3000 |
| academic | EN | markdown · expert | 2000 |
| creative | EN | casual · temp=1.1 | 1500 |
| teacher | EN | detailed · encouraging | 2000 |
| quick | EN | concise | 120 |
| journalist | EN | markdown | 2000 |
| storyteller | EN | casual · temp=1.2 | 4096 |
| analyst | EN | bullet · expert | 2000 |
| coach | EN | detailed · encouraging | 1500 |
| debug | EN | markdown · expert | 3000 |
Fonctionnalités
Streaming
Réponses token par token, comme ChatGPT. Idéal pour les apps web et les interfaces terminal.
from candy import Writing # Méthode 1 — stream_print() affiche directement Writing.stream_print("Raconte une histoire courte") # Méthode 2 — itérer token par token for token in Writing.stream("Raconte une histoire courte"): print(token, end="", flush=True)
Fonctionnalités
Batch
Plusieurs prompts en un seul appel. Idéal pour traiter des listes de textes ou de questions.
from candy import cfg, Summarizer cfg.A.lang = "FR" cfg.A.max_tokens = 300 cfg.A.style = "concise" textes = ["Article 1...", "Article 2...", "Article 3..."] resumes = Summarizer.use("A").batch( [f"Résume en 3 points :\n{t}" for t in textes] ) for resume in resumes: print(resume) print("---")
Fonctionnalités
Conversations multi-tours
Sessions avec mémoire du contexte. Sauvegarde JSON. Rechargement possible.
from candy import cfg, Tutor cfg.s.lang = "FR" cfg.s.expertise = "beginner" cfg.s.tone = "encouraging" session = Tutor.chat(profile="s") print(session.say("Je veux apprendre Python. Par où commencer ?")) print(session.say("Explique-moi les variables")) print(session.say("Et les listes ?")) session.save("session.json") session.show_history() session.clear()
Intégration
Intégration web
candy s'intègre dans Flask, FastAPI et Django en quelques lignes.
Flask — API JSON + streaming SSE
from flask import Flask, request, jsonify, Response from candy import cfg, Full app = Flask(__name__) cfg.web.lang = "FR" @app.route("/ask", methods=["POST"]) def ask(): question = request.get_json().get("question", "") return jsonify({"answer": Full.use("web").ask(question)}) @app.route("/stream", methods=["POST"]) def stream(): question = request.get_json().get("question") def generate(): for token in Full.use("web").stream(question): yield f"data: {token}\n\n" return Response(generate(), mimetype="text/event-stream") if __name__ == "__main__": app.run(debug=True)
FastAPI
from fastapi import FastAPI from pydantic import BaseModel from candy import cfg, Full app = FastAPI() cfg.web.lang = "FR" class Query(BaseModel): question: str @app.post("/ask") def ask(query: Query): return {"answer": Full.use("web").ask(query.question)}
CLI
CLI & fichiers .cdy
candy est aussi une commande système. Les fichiers .cdy sont des scripts Python candy partageables et exécutables en une commande.
# Ouvrir la fenêtre Helper graphique $ candy helper # Exécuter un fichier .cdy $ candy -- mon_script.cdy
from candy import cfg, Coding cfg.default.lang = "FR" cfg.default.style = "concise" print(Coding.ask("C'est quoi un générateur Python ?"))
Helper
Helper — génération de code
Le Helper génère du code candy complet à partir d'une description ou d'un template.
from candy import Helper Helper.list() code = Helper.write("chatbot", lang="FR", module="Full") print(code) Helper.run("livre", sujet="Napoléon", lang="FR") Helper.run("traduction", texte="Bonjour", langues=["ES","DE","JA"])
Templates disponibles : livre, traduction, chatbot, pipeline, batch, resume, question.
Référence
Toutes les méthodes
| Méthode | Retour | Description |
|---|---|---|
| .ask(prompt) | str | Appel simple, retourne la réponse complète |
| .use("profil") | self | Attache un profil nommé à l'appel |
| .stream(prompt) | generator | Itère les tokens un par un |
| .stream_print(prompt) | None | Affiche les tokens directement dans le terminal |
| .batch(liste) | list[str] | Envoie plusieurs prompts en un appel |
| .chat(profile) | Session | Crée une session multi-tours |
| session.say(msg) | str | Envoie un message dans la session |
| session.save(path) | None | Sauvegarde la session en JSON |
| session.load(path) | None | Charge une session depuis JSON |
| session.show_history() | None | Affiche l'historique de la conversation |
| session.clear() | None | Remet la session à zéro |
| cfg.A.reset() | None | Remet le profil A aux valeurs par défaut |
| ping() | bool | Vérifie que l'API est accessible |
| is_online() | bool | Alias de ping() |