- Publié le
Du Prompting à la Programmation : Maîtriser les LLMs avec DSPy

Quand LangChain a introduit le chaînage d'appels aux grands modèles de langage (LLM), cela a ouvert de nouvelles possibilités en IA. Mais une limite est vite apparue : la fragilité des prompts artisanaux. DSPy réinvente la programmation des LLM comme un processus systématique et modulaire, semblable à l'approche de PyTorch pour les réseaux de neurones.
DSPy n'est pas un simple outil d'appels API. C'est un langage de programmation complet pour les LLM, combinant une syntaxe déclarative et une optimisation automatisée. Imaginez définir la logique de votre pipeline LLM tandis que le framework ajuste automatiquement les instructions, les exemples et même le fine-tuning des modèles. C'est la promesse de DSPy : programmer, non pas prompt engineer.
Des chaînes aux graphes : l'évolution de l'orchestration des LLM
Les limites de l'ingénierie de prompts traditionnelle
Les premières applications utilisaient des prompts rigides. Une légère reformulation—"réécris ce document" vs "corrige ce texte"—pouvait tout changer. Pire, ces prompts fonctionnaient mal d'un modèle à l'autre (GPT-4 vs Gemini vs Llama 3).
Pourquoi DSPy change la donne
DSPy introduit trois innovations :
- Signatures : Spécifications déclaratives des entrées/sorties (ex:
contexte, question -> réponse). - Modules : Composants réutilisables comme
ChainOfThoughtouRetrieve. - Téléprompteurs : Moteurs d'optimisation ajustant automatiquement les prompts.
Cette triade transforme les programmes LLM en pipelines auto-améliorants.
Construire des programmes LLM avec DSPy
La syntaxe des signatures : plus claire que les docstrings
class FactoidQA(dspy.Signature):
"""Answer questions with short, factual answers."""
context = dspy.InputField(desc="May contain relevant facts")
question = dspy.InputField()
answer = dspy.OutputField(desc="Often 1-5 words")
Ici, le docstring devient l'instruction du prompt. DSPy peut optimiser cette signature sans intervention manuelle.
Un pipeline de QA multi-étapes
Exemple d'un système répondant à des questions complexes via des sous-requêtes :
class MultiHopQA(dspy.Module):
def __init__(self):
self.query_gen = dspy.ChainOfThought("context, question -> query")
self.retriever = dspy.Retrieve(k=3)
self.answer_gen = dspy.ChainOfThought("context, question -> answer")
def forward(self, question):
context = []
for _ in range(2): # Max hops
query = self.query_gen(context=context, question=question).query
passages = self.retriever(query)
context += passages
return self.answer_gen(context=context, question=question)
Ce programme ajuste dynamiquement ses requêtes—une tâche complexe avec les méthodes traditionnelles.
L'optimisation : l'ingrédient secret
Apprentissage few-shot automatisé
Le téléprompteur BootstrapFewShot sélectionne automatiquement les exemples d'entraînement. Pour 20 exemples, il pourrait n'en retenir que 3 pour maximiser la précision :
Example 1:
Question: "Who provided the assist in the 2014 World Cup final?"
Answer: "André Schürrle"
Example 2:
Question: "What’s the capital of André Schürrle’s birth state?"
Answer: "Mainz"
Fine-tuning avec données synthétiques
DSPy génère des raisonnements synthétiques pour le Chain-of-Thought :
# Avant optimisation
Q: "Why is the sky blue?"
A: "Rayleigh scattering."
# Après optimisation
Q: "Why is the sky blue?"
Thought: "Light scatters more in shorter wavelengths; blue dominates."
A: "Rayleigh scattering."
Ces données entraînent ensuite des modèles plus petits (comme T5) à imiter GPT-4.
Impact réel : au-delà du monde académique
Étude de cas : Pipeline de production d'Algorithm
Jonathan Anderson, CTO d'Algorithm, souligne :
"DSPy a réduit notre temps de réglage de prompts de 70%. Nous prototypons des systèmes RAG en heures, avec des modules standardisés garantissant la cohérence."
Résultats de benchmarks
| Task | Handcrafted Prompts | DSPy-Optimized | Amélioration |
|---|---|---|---|
| HotPotQA (EM) | 42% | 58% | +16% |
| GSM8K (Accuracy) | 63% | 89% | +26% |
Un avenir modulaire
DSPy annonce une ère de développement IA centré sur les pipelines. Les tendances clés :
- LLMs locaux : Exécution de programmes DSPy via Ollama sur hardware grand public.
- Systèmes multi-agents : Composition de modules en workflows avec mémoire partagée.
- Auto-débogage : Assertions comme
dspy.Suggest(len(query) < 100)guidant l'optimisation.
Andrej Karpathy l'a dit : "Ma peau est plus claire depuis que j'utilise DSPy." Hyperbole mise à part, l'élégance du framework est indéniable. Plus qu'un outil—c'est la fondation de la prochaine ère des LLMs.
Sources
- DSPy Explained!
- Complete DSPy Tutorial
- Stanford DSPy for Reasoning
- CTO Perspective on DSPy
- AI Evolution with DSPy
Vous avez apprécié cet article ? Trouvé cela instructif ? N'hésitez pas à laisser un commentaire ci-dessous pour partager vos réflexions ou poser des questions. Un compte GitHub est requis pour participer à la discussion.
Continuer la lecture
Articles similaires