DSPy propose de décrire une tâche par son contrat plutôt que par une longue chaîne de prompt. Une signature définit les entrées et sorties attendues ; un module choisit comment le modèle produit ces sorties. Le même contrat peut ainsi passer d’une prédiction directe à une stratégie avec raisonnement sans réécrire toute l’application.
Installer et configurer DSPy
python -m venv .venv
source .venv/bin/activate
pip install -U dspy
export OPENAI_API_KEY="votre-cle"Configurez ensuite le modèle. Adaptez son identifiant au fournisseur réellement utilisé et verrouillez la version de DSPy dans votre projet.
import dspy
dspy.configure(lm=dspy.LM("openai/gpt-5-mini"))Définir une signature
La signature exprime le résultat attendu avec des champs typés :
from typing import Literal
import dspy
class TriageTicket(dspy.Signature):
"Classe un ticket de support."
ticket: str = dspy.InputField()
urgence: Literal["faible", "haute"] = dspy.OutputField()
equipe: str = dspy.OutputField()
triage = dspy.Predict(TriageTicket)
resultat = triage(ticket="Le paiement est débité deux fois.")
print(resultat.urgence, resultat.equipe)Le docstring fournit l’intention générale. Les noms, types et descriptions des champs forment le contrat. Validez néanmoins la sortie côté application avant de déclencher une action métier.
Changer de stratégie
Pour demander une démarche de raisonnement plus riche, remplacez Predict par ChainOfThought :
triage = dspy.ChainOfThought(TriageTicket)Le reste de l’application conserve la même interface. DSPy fournit également des modules pour les outils, la récupération et la composition de plusieurs étapes.
Évaluer avant d’optimiser
Préparez des tickets anonymisés avec les réponses attendues. Mesurez séparément l’urgence et l’équipe attribuée, ainsi que le taux de sorties invalides. Cette base permet ensuite d’utiliser un optimiseur DSPy.
Ne confondez pas typage et garantie métier : un modèle peut toujours produire une réponse incorrecte. Ajoutez des règles déterministes pour les situations critiques, journalisez la version du programme et testez tout changement de modèle sur le même jeu d’évaluation.