Aller au contenu principal

Agents avec raisonnement (o3-pro, o4-mini)

Agents avec raisonnement (o3-pro, o4-mini)

Les modèles de raisonnement d’OpenAI (o3-pro, o4-mini) ne se contentent pas de prédire le prochain token. Ils réfléchissent avant de répondre, en explorant plusieurs pistes de raisonnement. Intégrés dans vos agents, ils ouvrent la porte à des tâches qui demandent une véritable réflexion.

Quand utiliser un modèle de raisonnement

Les modèles de raisonnement brillent dans des situations précises :

  • Planification complexe : décomposer une tâche en étapes optimales
  • Analyse mathématique : calculs, statistiques, optimisation
  • Debugging : identifier la cause racine d’un problème
  • Prise de décision : évaluer plusieurs options et choisir la meilleure
  • Code review : analyser du code pour trouver des bugs subtils

Pour les tâches simples (répondre à une question, formater du texte), GPT-5.3 est plus rapide et moins cher.

o3-pro : le raisonnement profond

o3-pro est le modèle de raisonnement le plus avancé. Il prend plus de temps mais produit des analyses plus profondes :

from agents import Agent, Runner

agent_strategique = Agent(
    name="Conseiller stratégique",
    instructions="""Vous êtes un conseiller en stratégie d'entreprise.
    Analysez en profondeur avant de recommander.
    Considérez toujours : les risques, les opportunités,
    les coûts et les alternatives.""",
    model="o3-pro",
)

result = Runner.run_sync(
    agent_strategique,
    """Notre startup SaaS a 500 clients, 2M€ de MRR, et croît de 15% par mois.
    Nous hésitons entre :
    A) Lever des fonds Serie B (20M€) et accélérer aux US
    B) Rester bootstrappé et consolider l'Europe
    C) Chercher un acquéreur stratégique
    Quelle stratégie recommandez-vous et pourquoi ?"""
)
print(result.final_output)

o4-mini : le raisonnement rapide

o4-mini offre un bon compromis entre capacité de raisonnement et vitesse. Idéal pour les agents qui doivent raisonner vite :

from agents import Agent, Runner, function_tool

@function_tool
def obtenir_metriques_serveur(serveur: str) -> str:
    """Récupère les métriques d'un serveur."""
    import json
    metriques = {
        "cpu": 87.5,
        "ram": 92.1,
        "disque": 65.3,
        "requetes_par_seconde": 1250,
        "temps_reponse_p99": 450,
        "erreurs_5xx": 23,
    }
    return json.dumps(metriques)

agent_diagnostic = Agent(
    name="Agent diagnostic",
    instructions="""Vous diagnostiquez des problèmes d'infrastructure.
    Analysez les métriques et identifiez la cause probable.
    Proposez des actions correctives immédiates et à long terme.""",
    model="o4-mini",  # Raisonnement rapide pour le diagnostic
    tools=[obtenir_metriques_serveur],
)

result = Runner.run_sync(
    agent_diagnostic,
    "Le site est lent depuis 30 minutes. Diagnostiquez le serveur web-prod-01."
)

Pattern : routeur de modèles

Utilisez o4-mini pour le routage et le modèle approprié pour l’exécution :

from pydantic import BaseModel
from typing import Literal

class DecisionModele(BaseModel):
    modele: Literal["gpt-5.3", "o3-pro", "o4-mini"]
    raison: str

agent_routeur = Agent(
    name="Routeur intelligent",
    instructions="""Analysez la tâche et décidez quel modèle utiliser :
    - gpt-5.3 : tâches simples (résumés, reformulation, réponses factuelles)
    - o4-mini : tâches nécessitant un raisonnement rapide (classification, diagnostic)
    - o3-pro : tâches complexes (planification stratégique, analyse approfondie, maths)""",
    model="o4-mini",
    output_type=DecisionModele,
)

async def traiter_avec_modele_optimal(tache: str):
    # Étape 1 : choisir le modèle
    decision = await Runner.run(agent_routeur, tache)
    modele_choisi = decision.final_output.modele
    print(f"Modèle sélectionné : {modele_choisi} ({decision.final_output.raison})")

    # Étape 2 : exécuter avec le bon modèle
    agent_execution = Agent(
        name="Agent exécution",
        instructions="Accomplissez la tâche demandée avec précision.",
        model=modele_choisi,
    )
    result = await Runner.run(agent_execution, tache)
    return result.final_output

Différences de comportement avec les modèles de raisonnement

Les modèles de raisonnement ont des spécificités dans le SDK :

# Les modèles de raisonnement ne supportent pas le system prompt classique
# Le SDK gère cela automatiquement via le paramètre instructions
agent = Agent(
    name="Analyste",
    instructions="Analysez les données en profondeur.",
    model="o3-pro",
    # Le SDK convertit les instructions en format compatible
)

# Le streaming fonctionne différemment : le raisonnement est masqué
result = Runner.run_streamed(agent, "Analysez ce problème complexe.")
async for event in result.stream_events():
    # Vous recevez la réponse finale, pas le raisonnement intermédiaire
    if event.type == "raw_response_event":
        if hasattr(event.data, "delta") and event.data.delta:
            print(event.data.delta, end="", flush=True)

Optimiser les coûts

Les modèles de raisonnement consomment plus de tokens (le raisonnement interne compte) :

# Pattern : raisonnement hybride
# o4-mini pour la décision rapide, gpt-5.3 pour l'exécution

agent_decideur = Agent(
    name="Décideur",
    instructions="Décidez de l'approche optimale.",
    model="o4-mini",
)

agent_executeur = Agent(
    name="Exécuteur",
    instructions="Exécutez le plan décidé.",
    model="gpt-5.3",  # Moins cher pour l'exécution
    tools=[rechercher_dans_crm, generer_rapport],
)

async def workflow_hybride(tache: str):
    plan = await Runner.run(agent_decideur, f"Comment traiter : {tache}")
    result = await Runner.run(agent_executeur, plan.final_output)
    return result.final_output

Points clés à retenir

  • o3-pro excelle en planification stratégique, analyse complexe et mathématiques
  • o4-mini offre un raisonnement rapide pour le diagnostic et le routage
  • GPT-5.3 reste le meilleur choix pour les tâches simples (coût et vitesse)
  • Le pattern routeur de modèles optimise automatiquement les coûts
  • Le SDK gère les différences de format entre modèles GPT et modèles o-series
  • Utilisez o4-mini pour décider, gpt-5.3 pour exécuter : le meilleur rapport qualité-prix