stanfordnlp /dspy
DSPy: The framework for programming—not prompting—language models
★ 38,991⑂ 3,496👁 209⑃ 3,249● 1,752▤ 114◈ 95
38,991
stars
+10+102+504
3,496
forks
209
watchers
3,249
prs
1,752
issues
114
releases
95
discussions
README
DSPy: _Programming_—not prompting—Foundation Models
Documentation: DSPy Docs
----
DSPy is the framework for _programming—rather than prompting—language models_. It allows you to iterate fast on building modular AI systems and offers algorithms for optimizing their prompts and weights, whether you're building simple classifiers, sophisticated RAG pipelines, or Agent loops.
DSPy stands for Declarative Self-improving Python. Instead of brittle prompts, you write compositional _Python code_ and use DSPy to teach your LM to deliver high-quality outputs. Learn more via our official documentation site or meet the community, seek help, or start contributing via this GitHub repo and our Discord server.
Documentation: dspy.ai
Please go to the DSPy Docs at dspy.ai
Installation
bash
pip install dspy
To install the very latest from main:
bash
pip install git+https://github.com/stanfordnlp/dspy.git
The current LM integration uses bundled native lm15 engines, without a LiteLLM
runtime dependency or fallback. See the LM migration guide
for breaking changes to provider options, custom LMs, text completions, and embeddings.
📜 Citation & Reading More
If you're looking to understand the framework, please go to the DSPy Docs at dspy.ai.
If you're looking to understand the underlying research, this is a set of our papers:
[Jul'25] GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning
[Jun'24] Optimizing Instructions and Demonstrations for Multi-Stage Language Model Programs
[Oct'23] DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines
[Jul'24] Fine-Tuning and Prompt Optimization: Two Great Steps that Work Better Together
[Jun'24] Prompts as Auto-Optimized Training Hyperparameters
[Feb'24] Assisting in Writing Wikipedia-like Articles From Scratch with Large Language Models
[Jan'24] In-Context Learning for Extreme Multi-Label Classification
[Dec'23] DSPy Assertions: Computational Constraints for Self-Refining Language Model Pipelines
[Dec'22] Demonstrate-Search-Predict: Composing Retrieval & Language Models for Knowledge-Intensive NLP
To stay up to date or learn more, follow @DSPyOSS on Twitter or the DSPy page on LinkedIn.
The DSPy logo is designed by Chuyi Zhang.
If you use DSPy or DSP in a research paper, please cite our work as follows:
@inproceedings{khattab2024dspy,
title={DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines},
author={Khattab, Omar and Singhvi, Arnav and Maheshwari, Paridhi and Zhang, Zhiyuan and Santhanam, Keshav and Vardhamanan, Sri and Haq, Saiful and Sharma, Ashutosh and Joshi, Thomas T. and Moazam, Hanna and Miller, Heather and Zaharia, Matei and Potts, Christopher},
journal={The Twelfth International Conference on Learning Representations},
year={2024}
}
@article{khattab2022demonstrate,
title={Demonstrate-Search-Predict: Composing Retrieval and Language Models for Knowledge-IntensiveTop issues
#1539ValueError: Expected dict_keys(['answer']) but got dict_keys([])35 comments · 2024-09-25#1719How do I load huggingface models?20 comments · 2024-10-29#1570Use of LiteLLM Router for load balancing and fallbacks19 comments · 2024-10-01#9034[Feature] Coding agent CLIs with DSPy - a client that proxies DSPy calls through arbitrary CLI commands16 comments · 2025-11-08#8946[Bug] ColBERT is down16 comments · 2025-10-15#8067[Bug] Ollama requests fail when including an Image13 comments · 2025-04-13#9097[Feature] Maybe we need DSPy Cookbook?11 comments · 2025-11-28#7830[Feature] Print the final prompt of a DSPy program11 comments · 2025-02-20
Discussions
#10734Can We "Train" MCP Tools and Agent Skills Through Expert Demonstrations and Iterative Feedback?0 comments · 2026-10-28#10507Optimisers absorb format non-compliance and the cost is invisible in the final score0 comments · 2026-09-26#10450Proposal: Latent Space (Vector) Communication Protocol for Multi-Agent & Intra-Model Systems1 comments · 2026-09-18#10439Show and Tell: A package with `StructuredOutputAdapter` for getting better structured output from smaller models2 comments · 2026-09-17#10394Show and Tell: Zero-Daemon Crash Recovery for Long-Running DSPy Optimizers (MIPROv2 / Teleprompters)0 comments · 2026-09-13#103863.4.0b10 comments · 2026-09-11#10365Byte-exact replay of DSPy LM traffic — re-running a program with the model server switched off0 comments · 2026-09-10#10343Where should we share an invitation for an agent-and-media hackathon?0 comments · 2026-09-06
Latest release
3.4.1 3.4.1 2026-10-12DSPy 3.4.1 DSPy 3.4.1 makes GEPA's structured InstructionProposer the default instruction proposer and lets dspy.RLM build DSPy sub-agents from inside its REPL. It also adds Python 3.15 support, fixes a 3.4.0 import crash, and includes streaming, adapter, and interpreter fixes. bash pip install --upgrade "dspy==3.4.1" Upgrade notices. GEPA's default reflection request changes shape, so optimization results can differ from 3.4.0 even with the same seed. The reflection LM must now be a dspy.LM that can return JSON. Every RLM prompt now includes a sub-agent section, and max_llm_calls