Client Python pour Cédric — IA conversationnelle avec 500 requêtes/jour gratuites par IP et file d'attente automatique
Project description
cedric-ai
cedric-ai est une bibliothèque Python qui te permet d'interagir avec Cédric, une intelligence artificielle conversationnelle rapide, sans filtre et disponible à la demande.
Cédric répond à tes questions, discute de n'importe quel sujet, génère du texte, et s'adapte à n'importe quelle personnalité que tu lui donnes. La lib gère automatiquement les cas où le serveur est temporairement hors ligne grâce à un système de file d'attente persistante — tes requêtes ne sont jamais perdues.
Installation
pip install cedric-ai
Aucune dépendance externe sauf requests. Compatible Python 3.8+.
Accès & Limites
- Aucun token requis — l'accès est identifié par ton adresse IP automatiquement
- 500 requêtes gratuites par jour par adresse IP
- Au delà du quota, les requêtes sont mises en file et traitées le lendemain
- Aucune inscription, aucune clé API à gérer
Démarrage rapide
from cedric_ai import CedricAI
ai = CedricAI()
reponse = ai.ask("C'est quoi Python ?")
print(reponse)
Fonctionnalités
- Requêtes directes — pose une question, reçois une réponse immédiatement
- File d'attente automatique — si le serveur est éteint ou le quota atteint, la requête attend et s'exécute automatiquement
- Persistance — la file est sauvegardée sur disque, même si ton script redémarre les jobs reprennent
- Callbacks — sois notifié dès qu'une réponse arrive
- Personnalité personnalisable — donne un contexte ou une personnalité à Cédric via le paramètre
system - Quota automatique — 500 requêtes/jour par IP, remis à zéro chaque nuit à minuit
Guide complet
Requête directe
La façon la plus simple. Bloquant — attend la réponse avant de continuer.
from cedric_ai import CedricAI
ai = CedricAI()
reponse = ai.ask("Explique moi la gravité en deux phrases")
print(reponse)
Si le serveur est temporairement indisponible, la lib attend automatiquement jusqu'à max_wait secondes (défaut 10 minutes) puis réessaie.
# Attendre max 5 minutes que le serveur revienne
reponse = ai.ask("Bonjour !", max_wait=300)
# Ne pas attendre — lève une erreur si hors ligne
reponse = ai.ask("Bonjour !", wait_if_offline=False)
Requête asynchrone avec file d'attente
Idéal quand tu veux envoyer une requête sans bloquer ton programme, ou quand le serveur peut être indisponible.
from cedric_ai import CedricAI
ai = CedricAI()
# Ajoute la requête en file — retourne immédiatement un job_id
job_id = ai.ask_async("Écris moi un poème sur la pluie")
print(f"Job créé : {job_id}")
# Récupère le résultat plus tard (bloquant, max 10 min)
result = ai.wait_for_result(job_id, timeout=600)
print(result)
Vérifier le résultat sans bloquer
job_id = ai.ask_async("Raconte moi une blague")
# Vérification non bloquante
result = ai.get_result(job_id)
if result is None:
print("Pas encore prêt...")
else:
print(result)
Callback — être notifié quand la réponse arrive
def quand_ca_repond(job_id, reponse):
print(f"[Job {job_id}] Réponse reçue :")
print(reponse)
job_id = ai.ask_async(
"Donne moi 5 idées de projets Python",
callback=quand_ca_repond
)
# Ton programme continue de tourner...
import time
time.sleep(60) # la réponse arrivera via le callback
Personnalité personnalisée
Tu peux donner un contexte ou une personnalité à Cédric via le paramètre system.
ASSISTANT_RH = """
Tu es un assistant RH professionnel. Tu réponds de manière formelle,
tu aides à rédiger des offres d'emploi, des contrats, et tu donnes
des conseils en droit du travail français.
"""
reponse = ai.ask(
"Rédige une offre d'emploi pour un développeur Python senior",
system=ASSISTANT_RH
)
print(reponse)
PROF_MATHS = "Tu es un professeur de mathématiques du lycée. Tu expliques clairement avec des exemples concrets."
reponse = ai.ask("Comment résoudre une équation du second degré ?", system=PROF_MATHS)
Statut de la file d'attente
status = ai.queue_status()
print(status)
# {
# "online": True,
# "pending": 2,
# "done": 8,
# "errors": 0,
# "total": 10
# }
Nettoyer les jobs terminés
ai.clear_done() # supprime les jobs avec status "done" du fichier de file
Vérifier si le serveur est disponible
if ai.is_online():
print("Serveur disponible ✅")
else:
print("Serveur hors ligne ❌")
Référence des paramètres
CedricAI(...)
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
queue_mode |
bool |
True |
Active la file d'attente automatique si serveur hors ligne |
queue_file |
str |
"cedric_queue.json" |
Chemin du fichier de persistance de la file |
retry_interval |
int |
30 |
Secondes entre chaque tentative de reconnexion |
timeout |
int |
120 |
Timeout maximum par requête en secondes |
ask(prompt, system, wait_if_offline, max_wait)
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
prompt |
str |
— | Ta question ou instruction |
system |
str |
None |
Contexte / personnalité donnée à Cédric |
wait_if_offline |
bool |
True |
Attend que le serveur soit disponible si True |
max_wait |
int |
600 |
Secondes max d'attente si serveur indisponible |
ask_async(prompt, system, callback)
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
prompt |
str |
— | Ta question ou instruction |
system |
str |
None |
Contexte / personnalité |
callback |
callable |
None |
Fonction appelée avec (job_id, reponse) quand c'est prêt |
wait_for_result(job_id, timeout)
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
job_id |
str |
— | L'ID retourné par ask_async() |
timeout |
int |
600 |
Secondes max avant TimeoutError |
Gestion des erreurs
from cedric_ai import CedricAI
ai = CedricAI()
try:
reponse = ai.ask("Bonjour", wait_if_offline=False)
except ConnectionError:
print("Serveur indisponible")
except PermissionError:
print("Quota journalier atteint (500 requêtes/jour)")
except TimeoutError:
print("Timeout dépassé")
except Exception as e:
print(f"Erreur inattendue : {e}")
Exemple complet — chatbot en ligne de commande
from cedric_ai import CedricAI
ai = CedricAI(retry_interval=15)
print(f"Serveur en ligne : {ai.is_online()}")
print("Tape 'exit' pour quitter\n")
while True:
question = input("Toi : ").strip()
if question.lower() == "exit":
break
if not question:
continue
try:
reponse = ai.ask(question, max_wait=120)
print(f"Cédric : {reponse}\n")
except PermissionError:
print("⚠️ Quota de 500 requêtes/jour atteint\n")
except TimeoutError:
print("⏱️ Serveur pas disponible, réessaie plus tard\n")
except Exception as e:
print(f"❌ Erreur : {e}\n")
Licence
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cedric_ai-4.0.0.tar.gz.
File metadata
- Download URL: cedric_ai-4.0.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a34d664334b9de4188d41c43d49d9102d9467ab11d6bed43a8bc49ea3e5cb12e
|
|
| MD5 |
309f7068de95ec009a77090fb75c6d82
|
|
| BLAKE2b-256 |
cc535e6a782fe122aeb268916d39aa6abe883c3f00f6ed399d774a6edba81d21
|
File details
Details for the file cedric_ai-4.0.0-py3-none-any.whl.
File metadata
- Download URL: cedric_ai-4.0.0-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35b0969a173b46cb57beeba580b0a5116af5ade0497581dadf6b51f2bdd09ba6
|
|
| MD5 |
c34100a464555474682628bc9ba91c78
|
|
| BLAKE2b-256 |
1382cb562a8f04a843b1fbcf76a3ae33bbfb78fcaf5162b662f1bffd79fb8437
|