Aller au contenu principal

Analyse et Prise de Décision

Le raisonnement au service de la décision

Les décisions complexes requièrent une analyse multi-critères, la prise en compte de perspectives différentes, et la capacité à évaluer des compromis. Ce sont des tâches où le raisonnement structuré apporte une valeur considérable par rapport à une réponse intuitive.

Analyse comparative structurée

Le raisonnement permet de construire des comparaisons méthodiques :

from mistralai import Mistral

client = Mistral(api_key="VOTRE_CLE_API")

comparaison = """Mon équipe doit choisir entre PostgreSQL et MongoDB pour une nouvelle application.

Contexte :
- Application SaaS B2B de gestion de projets
- 500 utilisateurs initiaux, objectif 10 000 en 2 ans
- Données structurées (utilisateurs, projets, tâches) + commentaires libres
- Équipe de 4 développeurs, tous expérimentés en SQL
- Budget serveur limité (startup)

Analysez les deux options et recommandez la meilleure."""

response = client.chat.complete(
    model="magistral-medium-latest",
    messages=[
        {"role": "system", "content": """Consultant technique senior.

MÉTHODE D'ANALYSE :
1. Identifiez les critères de décision pertinents
2. Évaluez chaque option sur chaque critère
3. Pondérez les critères selon le contexte
4. Identifiez les risques de chaque option
5. Formulez une recommandation argumentée

RÉFLEXION :
Explorez les compromis. Considérez les implications à court et long terme.

RÉPONSE :
Recommandation claire avec justification, plan de mitigation des risques."""},
        {"role": "user", "content": comparaison}
    ],
    prompt_mode=None
)

Analyse de scénarios

Le raisonnement est particulièrement efficace pour explorer les conséquences de différents choix :

scenario = """Notre startup (15 employés, 2M ARR) a reçu deux offres :
1. Levée de fonds Série A de 5M auprès d'un VC avec dilution de 25%
2. Offre de rachat de 12M par un grand groupe (earn-out sur 3 ans)

Analysez les deux scénarios et leurs implications."""

response = client.chat.complete(
    model="magistral-medium-latest",
    messages=[
        {"role": "system", "content": """Analyste stratégique.
Pour chaque scénario, évaluez :
- Impact financier à 1 an, 3 ans, 5 ans
- Impact sur l'autonomie de décision
- Risques et probabilité de réalisation
- Impact sur l'équipe et la culture"""},
        {"role": "user", "content": scenario}
    ],
    prompt_mode=None
)

Pattern : matrice de décision automatisée

Vous pouvez automatiser la construction de matrices de décision :

def decision_matrix(client, options, criteria, context):
    """Génère une matrice de décision structurée."""

    options_text = "\n".join(f"- {opt}" for opt in options)
    criteria_text = "\n".join(f"- {crit}" for crit in criteria)

    prompt = f"""Contexte : {context}

Options à évaluer :
{options_text}

Critères d'évaluation :
{criteria_text}

Pour chaque option, évaluez chaque critère sur une échelle de 1 à 5.
Justifiez chaque note.
Calculez le score total pondéré.
Recommandez l'option optimale."""

    response = client.chat.complete(
        model="magistral-medium-latest",
        messages=[
            {"role": "system", "content": "Expert en analyse décisionnelle. Soyez objectif et rigoureux dans vos évaluations."},
            {"role": "user", "content": prompt}
        ],
        prompt_mode=None
    )

    return response.choices[0].message.content

# Exemple : choix de framework
result = decision_matrix(
    client,
    options=["React + Next.js", "Vue + Nuxt", "Svelte + SvelteKit"],
    criteria=[
        "Courbe d'apprentissage",
        "Écosystème et communauté",
        "Performance",
        "Recrutement de développeurs",
        "Maintenabilité long terme"
    ],
    context="Refonte d'un site e-commerce B2C, équipe de 3 devs juniors"
)

Analyse de risques

Le raisonnement structuré est idéal pour l’identification et l’évaluation des risques :

analyse_risque = """Nous prévoyons de migrer notre base de données de production
(50 Go, 200 tables, 15 applications connectées) de MySQL 5.7 vers PostgreSQL 16.

Identifiez tous les risques de cette migration et proposez un plan de mitigation."""

response = client.chat.complete(
    model="magistral-medium-latest",
    messages=[
        {"role": "system", "content": """DBA senior et architecte système.

ANALYSE DE RISQUES :
Pour chaque risque identifié, spécifiez :
- Probabilité (faible/moyenne/haute)
- Impact (faible/moyen/critique)
- Plan de mitigation
- Plan de rollback"""},
        {"role": "user", "content": analyse_risque}
    ],
    prompt_mode=None
)

Évaluation de compromis (trade-offs)

Les décisions techniques impliquent souvent des compromis. Le raisonnement aide à les expliciter :

tradeoff = """Architecture microservices vs monolithique pour notre application :

Notre situation :
- Équipe de 6 développeurs
- Application de gestion RH
- 3 modules : recrutement, paie, congés
- Déploiement sur Kubernetes
- Besoin de mise à jour indépendante des modules

Analysez les trade-offs de chaque approche."""

response = client.chat.complete(
    model="magistral-medium-latest",
    messages=[{"role": "user", "content": tradeoff}]
)

Pattern : avocat du diable

Exploitez le raisonnement pour challenger vos propres décisions :

def challenge_decision(client, decision, context):
    """Joue l'avocat du diable sur une décision."""

    prompt = f"""Une équipe a pris la décision suivante :
DÉCISION : {decision}

CONTEXTE : {context}

Jouez l'avocat du diable :
1. Identifiez les 5 principaux arguments CONTRE cette décision
2. Pour chaque argument, évaluez sa gravité (1-5)
3. Proposez des conditions sous lesquelles cette décision serait catastrophique
4. Suggérez les mesures de sauvegarde nécessaires
5. Concluez : la décision est-elle solide malgré les contre-arguments ?"""

    return client.chat.complete(
        model="magistral-medium-latest",
        messages=[
            {"role": "system", "content": "Analyste critique. Soyez incisif mais constructif."},
            {"role": "user", "content": prompt}
        ],
        prompt_mode=None
    )

Quand utiliser Small vs Magistral pour l’analyse

  • Small + raisonnement ajustable : comparaisons simples (2 options, critères clairs), évaluations rapides, décisions réversibles
  • Magistral : analyses multi-critères complexes, décisions stratégiques irréversibles, évaluation de risques critiques, scénarios avec incertitude

Points clés à retenir

  • Le raisonnement transforme l’analyse décisionnelle en un processus structuré et reproductible
  • Utilisez un system prompt qui impose une méthode d’analyse (critères, pondération, risques)
  • Les matrices de décision et l’analyse de scénarios bénéficient énormément du raisonnement
  • Le pattern avocat du diable exploite le raisonnement pour challenger vos décisions
  • Adaptez le modèle à la criticité de la décision : Small pour le quotidien, Magistral pour le stratégique