> ## Documentation Index
> Fetch the complete documentation index at: https://docs.quivr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Conseils

> Conseils pour créer des workflows efficaces et fiables

export const WorkflowExample = ({title, whenToUse, steps = []}) => {
  const parseToolMentions = text => {
    if (!text) return text;
    const parts = text.split(/(@[\w-]+)/g);
    return parts.map((part, i) => {
      if (part.startsWith("@")) {
        const toolName = part.slice(1);
        return <span key={i} className="text-blue-500 dark:text-blue-400 font-semibold bg-blue-50 dark:bg-blue-950/50 px-1.5 py-0.5 rounded text-[0.9em] whitespace-nowrap">
            @{toolName}
          </span>;
      }
      return part;
    });
  };
  return <div className="my-6 border-2 border-dashed border-zinc-300 dark:border-zinc-600 rounded-xl p-6">
      {}
      <h3 className="text-xl font-semibold text-zinc-900 dark:text-zinc-100 m-0 mb-5">
        {title}
      </h3>

      {}
      <div className="mb-6">
        <span className="text-sm font-medium text-zinc-500 dark:text-zinc-400 block mb-2">
          When to use
        </span>
        <div className="border border-zinc-200 dark:border-zinc-700 rounded-lg p-4 bg-zinc-50/50 dark:bg-zinc-800/30">
          <p className="m-0 text-zinc-700 dark:text-zinc-300 leading-relaxed">
            {whenToUse}
          </p>
        </div>
      </div>

      {}
      <div>
        <span className="text-sm font-semibold text-zinc-900 dark:text-zinc-100 block mb-4">
          Steps
        </span>
        <div className="flex flex-col gap-4">
          {steps && steps.map((step, index) => <div key={index} className="flex gap-3 items-start">
              <span className="flex items-center gap-1.5 flex-shrink-0 pt-0.5">
                <span className="text-blue-500 dark:text-blue-400 font-medium text-sm tabular-nums">
                  {index + 1}.
                </span>
              </span>
              <span className="text-zinc-700 dark:text-zinc-300 leading-relaxed">
                {parseToolMentions(step)}
              </span>
            </div>)}
        </div>
      </div>
    </div>;
};

## Principes fondamentaux

<CardGroup cols={2}>
  <Card title="Clarté avant tout" icon="lightbulb">
    Des instructions claires = des réponses prévisibles. Si c'est ambigu pour vous, ça l'est pour l'IA.
  </Card>

  <Card title="Testez, testez, testez" icon="flask">
    Ne déployez jamais un workflow sans l'avoir testé sur plusieurs scénarios réalistes.
  </Card>

  <Card title="Commencez simple" icon="seedling">
    Un workflow simple qui marche bien vaut mieux qu'un workflow complexe qui échoue parfois.
  </Card>

  <Card title="Itérez progressivement" icon="arrows-rotate">
    Améliorez vos workflows au fil du temps en analysant les conversations réelles.
  </Card>
</CardGroup>

## Déclencheurs efficaces

Le déclencheur détermine quand votre workflow s'active. Un bon déclencheur est précis et inclut des exemples.

<Tabs>
  <Tab title="Bons exemples">
    ```
    Gérer les demandes de suivi de commande

    Exemples positifs :
    - "Où est ma commande ?"
    - "Je n'ai pas reçu mon colis"
    - "Pouvez-vous me donner le suivi ?"

    Exemples négatifs :
    - "Je veux annuler ma commande" (annulation)
    - "J'ai reçu le mauvais article" (retour)
    ```
  </Tab>

  <Tab title="Mauvais exemples">
    ❌ **Trop vague :**

    ```
    Gérer les questions sur les commandes
    ```

    → Peut matcher annulation, retour, modification, suivi...

    ❌ **Sans exemples :**

    ```
    Demandes de remboursement
    ```

    → L'IA ne sait pas distinguer remboursement vs échange vs avoir

    ❌ **Trop large :**

    ```
    Aider les clients
    ```

    → Match tout, donc ne sert à rien
  </Tab>
</Tabs>

## Instructions claires

<AccordionGroup>
  <Accordion title="Utilisez des verbes d'action" icon="play" defaultOpen>
    Chaque instruction doit commencer par un verbe.

    ✅ "Récupère", "Vérifie", "Envoie", "Demande", "Explique"

    ❌ "Il faudrait", "On pourrait", "Peut-être"
  </Accordion>

  <Accordion title="Soyez spécifique sur les conditions" icon="code-branch">
    Utilisez des si/sinon explicites.

    ✅ "Si la commande date de moins de 30 jours, propose le remboursement"

    ❌ "Propose le remboursement si approprié"
  </Accordion>

  <Accordion title="Précisez le ton" icon="message">
    L'IA a besoin de savoir comment s'exprimer.

    ✅ "Utilise un ton empathique et rassurant. Garde la réponse sous 100 mots."

    ❌ "Sois sympa"
  </Accordion>

  <Accordion title="Incluez les cas d'erreur" icon="triangle-exclamation">
    Prévoyez toujours ce qui se passe si quelque chose ne marche pas.

    ✅ "Si la commande n'est pas trouvée, demande le numéro au client"

    ❌ (rien = l'IA improvise)
  </Accordion>
</AccordionGroup>

## Gestion des erreurs

Chaque workflow devrait avoir des "portes de sortie" claires.

<WorkflowExample
  title="Gestion des erreurs"
  whenToUse="Chaque workflow doit prevoir des portes de sortie claires pour gerer les cas ou l'information n'est pas trouvee"
  steps={[
"Utilise @get_order_details pour recuperer la commande",
"Si la commande n'est pas trouvee : Demande au client de verifier le numero, propose de chercher avec son email",
"Si toujours introuvable apres 2 tentatives : Escalade vers un agent avec le contexte"
]}
/>

Si le workflow ne peut pas résoudre, il doit escalader proprement.

## Déploiement progressif

<Steps>
  <Step title="Testez avec des scénarios">
    Créez 5-10 scénarios représentatifs et validez que tous passent.
  </Step>

  <Step title="Déployez en mode brouillon">
    Le workflow génère des brouillons que vos agents révisent.

    **Objectif :** Observer le comportement sur de vrais tickets.
  </Step>

  <Step title="Analysez les performances">
    Surveillez pendant 1-2 semaines :

    * Taux d'approbation des brouillons
    * Types de modifications faites par les agents
    * Cas où le workflow échoue
  </Step>

  <Step title="Activez l'autorésolution">
    Quand le taux d'approbation dépasse 90%, activez l'envoi automatique.
  </Step>

  <Step title="Surveillez en continu">
    Continuez à monitorer et améliorer en fonction des retours.
  </Step>
</Steps>

## Anti-patterns à éviter

<AccordionGroup>
  <Accordion title="Instructions trop longues" icon="scroll">
    **Problème :** Une instruction qui fait 5 lignes est moins fiable.

    **Solution :** Découpez en plusieurs étapes courtes.

    ❌

    ```
    Récupère la commande et vérifie si elle est expédiée et si oui récupère
    le suivi et envoie-le au client avec la date estimée
    ```

    ✅

    ```
    1. Récupère la commande avec @get_order_details
    2. Vérifie si le statut est "expédiée"
    3. Si oui, partage le numéro de suivi et la date estimée
    ```
  </Accordion>

  <Accordion title="Pas de cas par défaut" icon="question">
    **Problème :** Le workflow ne sait pas quoi faire dans certains cas.

    **Solution :** Ajoutez toujours un cas "sinon" ou une escalade.

    ❌

    ```
    Si commande < 30 jours : rembourse
    Si commande > 60 jours : refuse
    ```

    → Que faire entre 30 et 60 jours ?

    ✅

    ```
    Si commande < 30 jours : rembourse
    Si commande entre 30-60 jours : propose un avoir
    Sinon : refuse et explique la politique
    ```
  </Accordion>

  <Accordion title="Trop de workflows" icon="diagram-project">
    **Problème :** 50 workflows créent de la confusion sur lequel s'active.

    **Solution :** Regroupez les cas similaires dans un même workflow avec des conditions.

    ❌ 3 workflows séparés : "Suivi Colissimo", "Suivi Chronopost", "Suivi DHL"

    ✅ 1 workflow "Suivi de livraison" qui gère tous les transporteurs
  </Accordion>

  <Accordion title="Promesses impossibles" icon="handshake-slash">
    **Problème :** Le workflow promet des choses que vous ne pouvez pas tenir.

    **Solution :** Soyez prudent sur les engagements automatiques.

    ❌ "Ton remboursement sera fait sous 24h" (dépend de nombreux facteurs)

    ✅ "Ton remboursement est en cours de traitement (5-7 jours ouvrés)"
  </Accordion>
</AccordionGroup>

## Checklist de lancement

Avant de mettre un workflow en production, vérifiez :

<Steps>
  <Step title="Déclencheur clair">
    * [ ] Description précise de l'intention
    * [ ] Exemples positifs (ce qui doit déclencher)
    * [ ] Exemples négatifs (ce qui ne doit PAS déclencher)
  </Step>

  <Step title="Instructions complètes">
    * [ ] Chaque étape commence par un verbe
    * [ ] Les conditions si/sinon sont explicites
    * [ ] Le ton et le style sont précisés
    * [ ] Les cas d'erreur sont gérés
  </Step>

  <Step title="Tests validés">
    * [ ] Au moins 5 scénarios testés
    * [ ] Cas courants couverts
    * [ ] Cas limites couverts
    * [ ] Tous les tests passent
  </Step>

  <Step title="Escalade prévue">
    * [ ] Conditions d'escalade définies
    * [ ] L'IA sait quand elle ne peut pas résoudre
  </Step>

  <Step title="Déploiement progressif">
    * [ ] Commencer en mode brouillon
    * [ ] Objectif de taux d'approbation défini (90%+)
    * [ ] Plan de monitoring en place
  </Step>
</Steps>

## Prochaines étapes

<CardGroup cols={2}>
  <Card title="Créer votre workflow" icon="wand-magic-sparkles" href="/workflows/setup">
    Guide pas à pas pour créer et configurer
  </Card>

  <Card title="Tester votre workflow" icon="flask" href="/workflows/testing">
    Validez avant de déployer
  </Card>
</CardGroup>
