DSPy sépare le contrat du programme, son module d’exécution et l’optimisation des instructions. Au lieu de modifier manuellement un long prompt, vous définissez entrées, sorties, exemples et métrique.
Installer et configurer
~~~bash pip install -U dspy ~~~
~~~python import dspy
lm = dspy.LM('openai/votre-modele-actif', api_key='depuis-environnement') dspy.configure(lm=lm) ~~~
Utilisez une variable d’environnement pour la clé et un identifiant de modèle actuellement disponible.
Définir une signature
~~~python class ClassifyTicket(dspy.Signature): """Classe un ticket dans billing, technical ou other.""" ticket: str = dspy.InputField() category: str = dspy.OutputField() reason: str = dspy.OutputField()
classifier = dspy.Predict(ClassifyTicket) result = classifier(ticket='Ma carte est débitée deux fois') print(result.category, result.reason) ~~~
La signature décrit le contrat. Le module Predict choisit une stratégie d’appel. ChainOfThought peut aider une tâche de raisonnement, mais n’est pas automatiquement meilleur.
Créer les exemples
~~~python trainset = [ dspy.Example(ticket='Paiement refusé', category='billing').with_inputs('ticket'), dspy.Example(ticket='Erreur 500 à la connexion', category='technical').with_inputs('ticket'), ]
def metric(example, prediction, trace=None): return prediction.category == example.category ~~~
Séparez train et test. La métrique doit refléter le besoin métier et refuser toute catégorie hors liste.
Optimiser et évaluer
Utilisez un téléprompteur ou optimiseur recommandé par la version DSPy installée, avec le trainset et la métrique, puis compilez le module. Évaluez le programme compilé sur un testset jamais utilisé pendant l’optimisation.
Sauvegardez programme, modèle, exemples, métrique et seed. Une amélioration sur dix exemples n’est pas une preuve de robustesse.
Production
Ajoutez validation Pydantic autour de la sortie, limites de tokens et traces. Comparez exactitude, latence et coût au prompt manuel. Réoptimisez seulement après une modification de données, modèle ou contrat.
FAQ
DSPy entraîne-t-il le modèle ?
Le plus souvent, il optimise le programme et ses démonstrations, pas les poids du LLM.
La métrique peut-elle être un LLM ?
Oui, mais combinez-la à des règles déterministes et calibrez-la sur des jugements humains.