🌙
Introduction
Démarrage
chat()
setConfig()
Modèles
Historique
Exemples
Quotas
* + BsAI
Boutons IA
FAQ

🤖 BsAI — IA conversationnelle

Intégrez l'intelligence artificielle BotStrike directement dans les commandes de votre bot — sans installation de bibliothèque.

S1 — Introduction

BsAI est un global disponible dans toutes les commandes (JS et Python) qui permet d'envoyer un message à l'IA BotStrike et de récupérer la réponse en quelques lignes de code.

ℹ️ Aucune installation requise. BsAI est disponible immédiatement dans toutes vos commandes, sans activer de bibliothèque supplémentaire.

Cas d'usage typiques :

✅ Coût : une fraction d'itération IA selon le modèle (lite 0,1 — mob 0,5 — mega 1), plus 1 itération Cloud pour l'envoi de la réponse. Les deux sont prélevées sur le quota du propriétaire du bot.

S2 — Démarrage rapide

Créez une commande qui utilise BsAI.chat() avec le message reçu :

JavaScript
Python
// Commande : /chat ou tout message texte
const reply = await BsAI.chat(message);
bot.sendMessage(reply);
# Commande : /chat ou tout message texte
reply = BsAI.chat(message)
bot.sendMessage(reply)
⚠️ JavaScript : BsAI.chat() est asynchrone — n'oubliez pas le await.

S3 — BsAI.chat()

Méthode principale. Envoie un message à l'IA et retourne sa réponse.

Signature

JavaScript
Python
const reply = await BsAI.chat(message, options?);
reply = BsAI.chat(message, model=None, name=None, persona=None, history=False)

Paramètres

ParamètreTypeDéfautDescription
messagestring—Message de l'utilisateur du bot (obligatoire)
modelstring'lite'Modèle IA : 'lite', 'mob' ou 'mega'
namestring'BsAI'Nom de l'assistant IA
personastring—Instructions système personnalisées (prompt système)
historybool / arrayfalsetrue = mémoire automatique, false = sans mémoire, tableau = historique manuel
💡 Identité de l'assistant : vous choisissez librement son nom avec name et son caractère avec persona. En revanche, si un utilisateur lui demande quel modèle il est, il répondra toujours BsAI lite, BsAI mob ou BsAI mega selon le modèle choisi, créé par l'équipe BotStrike. Cette règle s'applique même avec un persona personnalisé : votre bot ne citera jamais de fournisseur tiers.

Exemple complet

JavaScript
Python
const reply = await BsAI.chat(message, {
  model: 'mob',
  name: 'Aria',
  persona: 'Tu es une assistante e-commerce spécialisée en mode. Réponds en français, de façon chaleureuse et professionnelle. Utilise des emojis pertinents dans tes réponses.',  // ← ajouter ou retirer selon votre style
  history: true,
});
bot.sendMessage(reply);
reply = BsAI.chat(
    message,
    model='mob',
    name='Aria',
    persona='Tu es une assistante e-commerce. Réponds en français. Utilise des emojis pertinents dans tes réponses.',  # ← ajouter ou retirer selon votre style
    history=True,
)
bot.sendMessage(reply)

S4 — BsAI.setConfig() / set_config()

Configure les valeurs par défaut pour toute la commande, évitant de répéter les options à chaque appel.

JavaScript
Python
BsAI.setConfig({
  model: 'lite',
  name: 'Mon Assistant',
  persona: 'Tu es un assistant Telegram utile et concis. Utilise des emojis adaptés dans tes réponses pour les rendre plus expressives et chaleureuses.',
});

// Tous les appels suivants utiliseront ces valeurs par défaut
const r1 = await BsAI.chat("Bonjour !");
const r2 = await BsAI.chat("Quel temps fait-il ?");
BsAI.set_config(
    model='lite',
    name='Mon Assistant',
    persona='Tu es un assistant Telegram utile et concis.',
)

r1 = BsAI.chat("Bonjour !")
r2 = BsAI.chat("Quel temps fait-il ?")

clearHistory() / clear_history()

Efface l'historique de conversation de l'utilisateur courant (par chat_id).

JavaScript
Python
BsAI.clearHistory();
bot.sendMessage("Conversation réinitialisée ✅");
BsAI.clear_history()
bot.sendMessage("Conversation réinitialisée ✅")

S5 — Modèles IA

Trois modèles sont disponibles, adaptés à différents besoins :

⚡
'lite' — BotStrike IA Défaut
Rapide et économique. Idéal pour les chatbots simples, FAQ, réponses courtes. Contexte standard.
🧠
'mob' — BotStrike IA Standard Équilibré
Plus puissant, contexte étendu (200k tokens). Convient aux assistants avec mémoire longue, analyse de texte, support avancé.
🚀
'mega' — BotStrike IA Highspeed Ultra-rapide
Même puissance que Standard mais optimisé pour la vitesse (~100 tokens/s). Contexte très large (200k). Pour les bots à fort trafic.
ℹ️ Fallback automatique : Si un modèle n'est pas configuré sur le serveur, BsAI utilise automatiquement lite.

S6 — Historique de conversation

BsAI peut mémoriser la conversation pour rendre le bot plus naturel.

Automatique (history: true)

L'historique est automatiquement lu et mis à jour dans les propriétés du bot, par utilisateur (chat_id). Les 6 derniers échanges sont conservés (12 messages, FIFO) : au-delà, les plus anciens sont oubliés. Cet historique est renvoyé au serveur à chaque appel, donc le garder court rend les réponses plus rapides.

JavaScript
Python
// Chatbot avec mémoire
const reply = await BsAI.chat(message, { history: true });
bot.sendMessage(reply);
reply = BsAI.chat(message, history=True)
bot.sendMessage(reply)

Manuel (history: [...])

Fournissez votre propre tableau d'historique si vous gérez la mémoire vous-même.

JavaScript
Python
const hist = Props.get('my_history') || [];
const reply = await BsAI.chat(message, { history: hist });
// Mettre à jour manuellement si besoin
hist.push({ role: 'user', content: message });
hist.push({ role: 'assistant', content: reply });
Props.set('my_history', hist.slice(-20));
hist = Props.get('my_history') or []
reply = BsAI.chat(message, history=hist)
hist.append({'role': 'user', 'content': message})
hist.append({'role': 'assistant', 'content': reply})
Props.set('my_history', hist[-20:])

Réinitialiser

JavaScript
Python
BsAI.clearHistory();
bot.sendMessage("Mémoire effacée ✅");
BsAI.clear_history()
bot.sendMessage("Mémoire effacée ✅")

S7 — Exemples complets

Chatbot universel (2 lignes)

JavaScript
Python
const reply = await BsAI.chat(message, { history: true });
bot.sendMessage(reply);
reply = BsAI.chat(message, history=True)
bot.sendMessage(reply)

Assistant FAQ avec persona

JavaScript
Python
BsAI.setConfig({
  name: 'Support Client',       // ← Changez le nom de votre assistant
  model: 'lite',                // ← 'lite', 'mob' ou 'mega'
  persona: `Tu es l'assistant virtuel de notre service client.
Réponds uniquement aux questions concernant nos produits et services.
Si la question est hors sujet, explique poliment que tu ne peux pas aider sur ce point.
Réponds toujours dans la langue de l'utilisateur.
Utilise des emojis adaptés pour rendre tes réponses plus agréables. 😊`,
  // ↑ Décrivez ici le rôle, le comportement et le style de votre assistant
});

const reply = await BsAI.chat(message, { history: true });
bot.sendMessage(reply);
BsAI.set_config(
    name='Support Client',   # ← Changez le nom de votre assistant
    model='lite',            # ← 'lite', 'mob' ou 'mega'
    persona=(
        "Tu es l'assistant virtuel de notre service client. "
        "Réponds uniquement aux questions sur nos produits et services. "
        "Réponds toujours dans la langue de l'utilisateur. "
        "Utilise des emojis adaptés pour rendre tes réponses plus agréables. 😊"
        # ↑ Décrivez ici le rôle, le comportement et le style de votre assistant
    ),
)

reply = BsAI.chat(message, history=True)
bot.sendMessage(reply)

Bot avec commande /reset

JavaScript
Python
// Commande /reset
BsAI.clearHistory();
bot.sendMessage("🔄 Conversation réinitialisée. Comment puis-je vous aider ?");
# Commande /reset
BsAI.clear_history()
bot.sendMessage("🔄 Conversation réinitialisée. Comment puis-je vous aider ?")

Assistante personnalisée avec le modèle mob

JavaScript
Python
const reply = await BsAI.chat(message, {
  model: 'mob',             // ← Changez le modèle selon vos besoins
  name: 'Aria',             // ← Donnez un prénom à votre assistant
  persona: 'Tu t\'appelles Aria. Tu es une assistante chaleureuse, empathique et professionnelle. Tu réponds toujours dans la langue de l\'utilisateur et en moins de 3 paragraphes. Utilise des emojis pour exprimer tes émotions et rendre tes messages vivants. ✨',
  // ↑ Personnalisez le caractère, le rôle et le style emoji de votre assistant
  history: true,
});
bot.sendMessage(reply);
reply = BsAI.chat(
    message,
    model='mob',           # ← Changez le modèle selon vos besoins
    name='Aria',           # ← Donnez un prénom à votre assistant
    persona=(
        "Tu t'appelles Aria. Tu es une assistante chaleureuse et professionnelle. "
        "Tu réponds toujours dans la langue de l'utilisateur en moins de 3 paragraphes. "
        "Utilise des emojis pour exprimer tes émotions et rendre tes messages vivants. ✨"
        # ↑ Personnalisez le caractère, le rôle et le style emoji de votre assistant
    ),
    history=True,
)
bot.sendMessage(reply)

S8 — Quotas & Limites

LimiteValeur
Coût IA par appel — modèle lite0,1 itération IA (10 appels = 1 iter)
Coût IA par appel — modèle mob0,5 itération IA (2 appels = 1 iter)
Coût IA par appel — modèle mega1 itération IA par appel
Modèle selon l'offrelite : toutes les offres · mob : Starter et Pro · mega : Pro. Un modèle hors de l'offre retombe sur le plus haut modèle permis, sans erreur.
Lecture d'image (photo)Starter et Pro. photo: true (JS) ou photo=True (Python) fait lire la photo du message reçu ; sa légende sert de question. Accepte aussi une adresse https://… ou un file_id. +0,2 itération IA par image lue. Sur Free, l'appel renvoie une erreur : prévoir un try / catch.
Appel volumineuxLe tarif couvre jusqu'à 16 000 caractères envoyés (persona + historique + message). Chaque tranche de 16 000 caractères au-delà ajoute 0,1 itération IA.
Persona max8 000 caractères (le surplus est ignoré)
Historique max accepté24 messages quand il est passé à la main (le surplus est ignoré)
Coût Cloud (envoi de la réponse)1 itération Cloud par sendMessage (sur le quota du bot)
Longueur max d'une réponse3 500 caractères (Telegram en refuse 4096 ; au-delà l'envoi échoue)
Historique max envoyé12 messages (6 échanges)
Historique stocké12 derniers messages par chat_id (FIFO)
Timeout réponse serveur45 secondes
💡 Deux compteurs distincts : chaque appel BsAI.chat() consomme à la fois :
  • une fraction d'itération IA (selon le modèle choisi : 0,1 / 0,5 / 1) — le quota mensuel IA du compte, celui-là même qu'utilise l'agent « Développer avec IA » ;
  • une itération Cloud pour l'envoi du message de réponse à l'utilisateur — comme tout sendMessage d'un bot normal.
✂️ Longueur des réponses : Telegram refuse tout message de plus de 4096 caractères — et il ne le raccourcit pas, il rejette l'envoi, donc l'utilisateur ne reçoit rien. BsAI est donc bridée à 3 500 caractères : au-delà, la réponse est coupée à la fin d'une phrase et suivie de « […] ».
  • Si vous envoyez la réponse en légende d'une photo ou d'un fichier, la limite Telegram n'est plus que 1024 caractères : découpez vous-même, ou envoyez le média puis le texte séparément.
  • Si vous ajoutez du texte autour de la réponse (salutation, signature), comptez-le : la limite porte sur le message final.
⚠️ Quota dépassé : Si le propriétaire du bot a épuisé son quota cloud mensuel, BsAI.chat() lancera une erreur "quota_exceeded". Pensez à prévoir une gestion d'erreur.
JavaScript
Python
try {
  const reply = await BsAI.chat(message, { history: true });
  bot.sendMessage(reply);
} catch (e) {
  if (e.message.includes('quota_exceeded')) {
    bot.sendMessage("⚠️ Le service IA est temporairement indisponible. Réessayez demain.");
  } else {
    bot.sendMessage("😢 Une erreur s'est produite : " + e.message);
  }
}
try:
    reply = BsAI.chat(message, history=True)
    bot.sendMessage(reply)
except RuntimeError as e:
    if 'quota_exceeded' in str(e):
        bot.sendMessage("⚠️ Service IA temporairement indisponible.")
    else:
        bot.sendMessage(f"😢 Erreur : {e}")
💡 Conseil : Utilisez le modèle lite pour les chatbots à fort volume afin de minimiser la consommation d'itérations.

S9 — Chatbot universel avec la commande *

La commande * (étoile / wildcard) est déclenchée pour tout message qui ne correspond à aucune autre commande. Combinée avec BsAI.chat(), elle crée un chatbot IA qui répond directement aux questions de l'utilisateur — sans qu'il ait besoin d'écrire une commande spécifique.

ℹ️ Comment créer la commande * ? Dans BotStrike, créez une commande et nommez-la exactement *. Elle sera automatiquement exécutée pour tous les messages sans commande correspondante.

Chatbot IA universel — 2 lignes

JavaScript
Python
// Commande : * (répond à TOUT message sans commande)
const reply = await BsAI.chat(message, { history: true });
Bot.sendMessage(reply);
# Commande : * (répond à TOUT message sans commande)
reply = BsAI.chat(message, history=True)
Bot.sendMessage(reply)

Chatbot avec persona personnalisé

JavaScript
Python
// Commande : *
// L'IA répond à toutes les questions avec un persona défini
const reply = await BsAI.chat(message, {
  model: 'mob',
  name: 'Aria',
  persona: `Tu t'appelles Aria, l'assistante IA de ce bot Telegram.
Tu réponds toujours dans la langue de l'utilisateur.
Tu es chaleureuse, concise et tu utilises des emojis adaptés. ✨
Si on te demande ta date d'entraînement ou ta version, réponds :
"J'apprends de jour en jour. Je ne communique pas cette information. 😊"`,
  history: true,
});
Bot.sendMessage(reply);
# Commande : *
reply = BsAI.chat(
    message,
    model='mob',
    name='Aria',
    persona=(
        "Tu t'appelles Aria, l'assistante IA de ce bot Telegram. "
        "Tu réponds toujours dans la langue de l'utilisateur. "
        "Tu es chaleureuse, concise et tu utilises des emojis adaptés. ✨ "
        "Si on te demande ta date d'entraînement ou ta version, réponds : "
        ""J'apprends de jour en jour. Je ne communique pas cette information. 😊""
    ),
    history=True,
)
Bot.sendMessage(reply)
✅ Astuce : Ajoutez une commande /reset pour permettre à l'utilisateur d'effacer l'historique IA avec BsAI.clearHistory() (JS) ou BsAI.clear_history() (Python).

S10 — Boutons de suggestion générés par l'IA

En ajoutant une instruction dans le persona, l'IA peut proposer automatiquement des boutons de suggestion rapide à la fin de ses réponses. Votre code parse le format [BTNS: Option1 | Option2 | Option3] et crée le clavier de réponse Telegram.

ℹ️ Fonctionnement : Par défaut 3 boutons maximum. Configurable jusqu'à 4 boutons via la constante MAX_BTNS. Les workers ne font pas ce parsing automatiquement — c'est votre code de commande qui extrait les boutons.

Boutons de suggestion automatiques (3 par défaut, max 4)

JavaScript
Python
// Commande : * (ou n'importe quelle commande qui appelle BsAI)
const MAX_BTNS = 3; // 3 par défaut — changez jusqu'à 4 maximum

const reply = await BsAI.chat(message, {
  persona: `Tu es un assistant Telegram. Après ta réponse, propose toujours ${MAX_BTNS} suggestions de réponse courtes (MAX 4 mots chacune). Format OBLIGATOIRE à la fin : [BTNS: Option1 | Option2 | Option3]`,
  history: true,
});

// Extraire les boutons du format [BTNS: A | B | C]
const m = reply.match(/\[BTNS:\s*([^\]]+)\]/i);
const cleanReply = reply.replace(/\[BTNS:[^\]]*\]/gi, "").trim();

if (m) {
  const btns = m[1].split("|").map(b => b.trim()).filter(Boolean).slice(0, MAX_BTNS);
  // 2 boutons sur la 1ère ligne, 1 ou 2 boutons sur la 2ème
  const rows = [btns.slice(0, 2).map(b => ({ text: b }))];
  if (btns.length > 2) rows.push(btns.slice(2).map(b => ({ text: b })));
  Bot.sendMessage(cleanReply, {
    reply_markup: { keyboard: rows, resize_keyboard: true, one_time_keyboard: true },
  });
} else {
  Bot.sendMessage(cleanReply);
}
# re est deja disponible : aucun import
# Commande : * (ou n'importe quelle commande qui appelle BsAI)
MAX_BTNS = 3  # 3 par défaut — changez jusqu'à 4 maximum

reply = BsAI.chat(
    message,
    persona=(
        f"Tu es un assistant Telegram. Après ta réponse, propose toujours "
        f"{MAX_BTNS} suggestions de réponse courtes (MAX 4 mots chacune). "
        f"Format OBLIGATOIRE à la fin : [BTNS: Option1 | Option2 | Option3]"
    ),
    history=True,
)

# Extraire les boutons du format [BTNS: A | B | C]
m = re.search(r'\[BTNS:\s*([^\]]+)\]', reply, re.IGNORECASE)
clean_reply = re.sub(r'\[BTNS:[^\]]*\]', '', reply).strip()

if m:
    btns = [b.strip() for b in m.group(1).split('|') if b.strip()][:MAX_BTNS]
    # 2 boutons sur la 1ère ligne, reste sur la 2ème
    rows = [btns[:2]]
    if len(btns) > 2:
        rows.append(btns[2:])
    Bot.sendMessage(clean_reply, {
        'reply_markup': {
            'keyboard': [[{'text': b} for b in row] for row in rows],
            'resize_keyboard': True,
            'one_time_keyboard': True,
        }
    })
else:
    Bot.sendMessage(clean_reply)

Boutons inline choisis par l'IA

L'IA peut aussi proposer des boutons inline, rattachés au message plutôt qu'au clavier. Utilisez le format [BTN: label | /commande].

⚠️ Pas de style sur un bouton inline. Les couleurs success / danger / primary / normal sont une extension BotStrike du clavier de réponse (Bot.sendMenu) : Telegram ignore ce champ sur un bouton inline. Pour distinguer les actions ici, faites mettre un emoji dans le libellé par l'IA (✅, ❌, ➡️).
JavaScript
Python
// Commande : * — l'IA choisit les boutons selon le contexte
const reply = await BsAI.chat(message, {
  persona: `Tu es un assistant Telegram. Si ta réponse nécessite une action, propose 1 à 3 boutons inline APRÈS ta réponse.
Format par bouton : [BTN: label | /commande]
Mets un emoji dans le libellé selon le contexte : ✅ pour une confirmation, ❌ pour une annulation, ➡️ pour une navigation.
Exemple : [BTN: ✅ Confirmer | /confirm][BTN: ❌ Annuler | /cancel]`,
  history: true,
});

// Parser les boutons [BTN: label | /cmd]
const BTN_RE = /\[BTN:\s*([^\|\]]+)\s*\|\s*([^\]]+)\s*\]/gi;
const btns = [...reply.matchAll(BTN_RE)].map(m => ({
  text: m[1].trim(),
  callback_data: m[2].trim(),
}));
const cleanReply = reply.replace(BTN_RE, "").trim();

if (btns.length > 0) {
  // 2 boutons max par ligne
  const rows = [];
  for (let i = 0; i < btns.length; i += 2) rows.push(btns.slice(i, i + 2));
  Bot.sendMessage(cleanReply, {
    reply_markup: { inline_keyboard: rows },
  });
} else {
  Bot.sendMessage(cleanReply);
}
# re est deja disponible : aucun import
# Commande : * — l'IA choisit les boutons selon le contexte
reply = BsAI.chat(
    message,
    persona=(
        "Tu es un assistant Telegram. Si ta réponse nécessite une action, "
        "propose 1 à 3 boutons inline APRÈS ta réponse. "
        "Format par bouton : [BTN: label | /commande] "
        "Mets un emoji dans le libellé selon le contexte : ✅ pour une "
        "confirmation, ❌ pour une annulation, ➡️ pour une navigation. "
        "Exemple : [BTN: ✅ Confirmer | /confirm][BTN: ❌ Annuler | /cancel]"
    ),
    history=True,
)

# Parser [BTN: label | /cmd]
BTN_RE = re.compile(r'\[BTN:\s*([^\|\]]+)\s*\|\s*([^\]]+)\s*\]', re.IGNORECASE)
btns = [{'text': m.group(1).strip(), 'callback_data': m.group(2).strip()}
        for m in BTN_RE.finditer(reply)]
clean_reply = BTN_RE.sub('', reply).strip()

if btns:
    # 2 boutons max par ligne
    rows = [btns[i:i+2] for i in range(0, len(btns), 2)]
    Bot.sendMessage(clean_reply, {
        'reply_markup': {'inline_keyboard': rows}
    })
else:
    Bot.sendMessage(clean_reply)
⚠️ Note : Les workers BotStrike ne parsent pas automatiquement le format [BTNS: ...] ou [BTN: ...] — c'est votre code de commande qui doit faire l'extraction (comme dans les exemples ci-dessus). La constante MAX_BTNS est configurable de 1 à 4.

Deux raccourcis évitent d'écrire le reply_markup à la main : Bot.sendMenu(texte, rangées) pour un clavier de réponse (une ligne du tableau = une rangée, et c'est là que le champ style fonctionne), Bot.sendButtons(texte, boutons) pour un clavier inline à un bouton par ligne.

S11 — Questions fréquentes (FAQ)

❓ À quoi sert la commande * (étoile) ?

La commande * est un catch-all (attrape-tout) : elle est déclenchée automatiquement lorsqu'un utilisateur envoie un message qui ne correspond à aucune autre commande du bot. C'est la commande idéale pour intégrer un chatbot IA avec BsAI.chat() — voir S9.

Créer le fichier : dans BotStrike, nommez la commande *. Le fichier créé sera *.py (Python) ou *.js (JavaScript).

❓ À quoi sert la commande ! (point d'exclamation) ?

La commande ! est le gestionnaire d'erreur global du bot. Si une exception survient dans le code d'une autre commande, la commande ! est automatiquement exécutée. Deux variables sont injectées :

  • error — texte de l'erreur
  • error_command — nom de la commande qui a échoué

Sans commande !, le bot affiche un message d'erreur par défaut.

JavaScript
Python
// Commande : !
Bot.sendMessage(`😢 Une erreur s'est produite dans ${error_command}.
Détail : ${error}`);
# Commande : !
Bot.sendMessage(f"😢 Une erreur dans {error_command}.\nDétail : {error}")

❓ Comment empêcher que l'IA révèle sa date d'entraînement ?

Ajoutez cette instruction dans le persona de votre appel BsAI.chat(). Le bot répondra alors qu'il apprend de jour en jour et ne communiquera jamais de date précise.

JavaScript
Python
const reply = await BsAI.chat(message, {
  persona: `Tu es un assistant Telegram.
Si on te demande ta date d'entraînement, ta version, ta mise à jour ou ta "knowledge cutoff",
réponds uniquement : "J'apprends et m'améliore de jour en jour. Je ne communique pas cette information. 😊"
Ne confirme ni ne nie jamais une date précise.`,
  history: true,
});
Bot.sendMessage(reply);
reply = BsAI.chat(
    message,
    persona=(
        "Tu es un assistant Telegram. "
        "Si on te demande ta date d'entraînement, ta version ou ta mise à jour, "
        "réponds uniquement : "J'apprends et m'améliore de jour en jour. "
        "Je ne communique pas cette information. 😊" "
        "Ne confirme ni ne nie jamais une date précise."
    ),
    history=True,
)
Bot.sendMessage(reply)

❓ Les modèles lite, mob, mega supportent-ils les boutons suggestion ?

Oui, tous les modèles BotStrike IA peuvent générer des boutons de suggestion en format [BTNS: ...] si vous le précisez dans le persona. Le modèle mob ou mega offre une meilleure compréhension des instructions complexes — voir S10.

❓ Peut-on utiliser BsAI.chat() dans toutes les commandes ?

Oui. BsAI est un global disponible dans toutes les commandes (JS et Python), y compris *, !, les callbacks inline, et les commandes /start, /help, etc. Chaque appel consomme 1 itération cloud.