Skip to main content

Client Python pour Cédric — IA conversationnelle avec file d'attente automatique si serveur hors ligne

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+.


Démarrage rapide

from cedric_ai import CedricAI

ai = CedricAI(host="ai.cedric.com", token="MON_TOKEN")
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, la requête attend et s'exécute dès qu'il rallume
  • 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
  • Authentification — protège tes requêtes avec un token

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(host="ai.cedric.com", token="MON_TOKEN")

reponse = ai.ask("Explique moi la gravité en deux phrases")
print(reponse)

Si le serveur est temporairement hors ligne, 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 éteint.

from cedric_ai import CedricAI

ai = CedricAI(host="ai.cedric.com", token="MON_TOKEN")

# 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. Tu ne parles que de RH.
"""

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, tu donnes des exemples concrets, et tu vérifies la compréhension."

reponse = ai.ask("Comment on résout 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 en ligne

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
host str "localhost" Adresse du serveur Cédric
port int 11434 Port du serveur
model str "llama3" Modèle d'IA à utiliser
token str None Token d'authentification (recommandé en production)
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 à l'IA
wait_if_offline bool True Attend que le serveur soit en ligne si True
max_wait int 600 Secondes max d'attente si serveur hors ligne

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(host="ai.cedric.com", token="MON_TOKEN")

try:
    reponse = ai.ask("Bonjour", wait_if_offline=False)
except ConnectionError:
    print("Serveur hors ligne")
except PermissionError:
    print("Token invalide")
except TimeoutError:
    print("Timeout dépassé")
except Exception as e:
    print(f"Erreur inattendue : {e}")

Exemple complet — application CLI

from cedric_ai import CedricAI

ai = CedricAI(
    host="ai.cedric.com",
    token="MON_TOKEN",
    queue_mode=True,
    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 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

cedric_ai-2.0.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cedric_ai-2.0.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file cedric_ai-2.0.0.tar.gz.

File metadata

  • Download URL: cedric_ai-2.0.0.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cedric_ai-2.0.0.tar.gz
Algorithm Hash digest
SHA256 41e194977bbe9509a79671887e799607ca3254a159102e85c98ace1b9f914c7a
MD5 b767916d61b84e916195596cad09791f
BLAKE2b-256 e18bfcebfd822738e16d4e17ae34fe7d1099e55136df569e85cb0f94cd1517ee

See more details on using hashes here.

File details

Details for the file cedric_ai-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: cedric_ai-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cedric_ai-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 322f87c049de344d896570eb8857e309e7a5fdd34fe629db379f9657301d0c57
MD5 aaaf23b77a475f712462618feb96d044
BLAKE2b-256 e5832a3b91690e3e4fa757f5953332ec7fde33dfb748a763ff92d0354964a05c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page