DSPy 3.4.1 makes GEPA's InstructionProposer the default
Updated DSPy
Summary
DSPy 3.4.1, released October 12, 2026, makes GEPA's structured InstructionProposer the default and lets dspy.RLM build DSPy sub-agents.
- Tool
- DSPy
- Category
- Frameworks
- Date
- Open source
- Yes
- License
- MIT
- Pricing
- Not stated in the sources we cited.
DSPy 3.4.1 was published on GitHub on October 12, 2026 by the stanfordnlp/dspy project. According to the release notes, it 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 and fixes a 3.4.0 import crash.
Release facts
| Fact | Detail |
|---|---|
| Product | DSPy |
| Version | 3.4.1 (tag 3.4.1) |
| Release date | October 12, 2026 |
| License | MIT, as reported by the GitHub API |
| Where to get it | pip install --upgrade "dspy==3.4.1" or the GitHub release |
What changed
- New default GEPA proposer.
dspy.GEPAnow buildsInstructionProposer()wheninstruction_proposer=is not passed. The release notes say it calls the reflection LM throughdspy.Predictwith aJSONAdapter, so history inputs, tool trajectories and image types reach the reflection LM as structured content. - Proposer options.
InstructionProposeracceptsskills,additional_instructions,base_instructions,max_chars,truncate_history_outputsandadapter. - RLM sub-agents. Code written by
dspy.RLMcan now builddspy.Predict,dspy.ChainOfThought,dspy.ReActV2or nesteddspy.RLMsub-agents. The notes say sub-agents run on the host and only JSON crosses the interpreter boundary. - One call budget.
max_llm_callsnow coversllm_query,llm_query_batchedand every sub-agent LM call. Sandboxed code can only set generation parameters, notmodel,api_base,api_keyor headers. - Upgrade notices. Optimization results can differ from 3.4.0 even with the same seed, and the reflection LM must be a
dspy.LMthat returns JSON. Programs saved on 3.4.0 with a nullScorelevel no longer load.
Questions
Will GEPA results match 3.4.0 after upgrading? Not necessarily. The release notes say the default reflection request changes shape, so results can differ even with the same seed.
What happens if the reflection model does not return JSON? The notes say the proposal fails, GEPA logs the failure and keeps the current candidate, so a run can finish with the seed program unchanged.
Is the 3.5 LM-interface cutoff still on?
Yes. The notes say legacy forward()/aforward() custom LMs, legacy-engine wrappers, complete_legacy() shortcuts and OpenAI-style messages= calls will be removed in 3.5, while lm("hello") stays supported.
See the DSPy hub, the frameworks category and the related adk-python 2.12.0 launch for more.
Alternatives
| Tool | License | Pricing note |
|---|---|---|
DSPyThis launchDSPy is a framework for programming, not prompting, language models, maintained in stanfordnlp/dspy. | MIT | Not stated |
Pydantic AIPydantic AI is a model-agnostic Python framework for building typed AI agents and applications. | MIT | Not stated |
LangGraphLangGraph is an open-source orchestration runtime for building stateful, resilient agents. | MIT | Not stated |
MastraTypeScript agent framework. Mastra Code is the terminal agent; AgentController is the extracted loop, in @mastra/core 1.47.0 or later. | Open source | Mastra Code and AgentController are announced as open source. No license fee is stated in the posts we cited. |
AgnoAgno is an orchestration and service layer for agents, exposing them through a REST API and an MCP server. | Apache-2.0 | Not stated |
Questions
What is DSPy?
The GitHub repository describes DSPy as the framework for programming, not prompting, language models.
Is DSPy open source?
The GitHub API reports an MIT license for the stanfordnlp/dspy repository.
What is the latest launch covered?
DSPy 3.4.1, published on GitHub on October 12, 2026, makes GEPA's InstructionProposer the default and lets dspy.RLM build sub-agents.
Filed on Agent Radar. Claims in this note are limited to the sources above.