3.0.4b1
Breaking Changes📦 dspyView on GitHub →
⚠ 4 breaking✨ 18 features🐛 28 fixes⚡ 1 deprecations🔧 12 symbols
Summary
DSPy 3.0.4b1 adds extensive GEPA enhancements, multimodal support, and new documentation, while introducing breaking changes to DummyLM, EvaluationResult location, and deprecating Image.from_* helpers.
⚠️ Breaking Changes
- DummyLM constructor now requires an adapter argument; update code to pass an adapter when instantiating DummyLM.
- EvaluationResult class moved to dspy.evaluate.EvaluationResult; update imports accordingly.
- EmailInsight class removed from the email extraction tutorial; replace usage with an alternative approach or remove imports.
- gepa[dspy] dependency updated to version 0.0.17 may affect load‑from‑state functionality; verify compatibility after upgrade.
Migration Steps
- Update DummyLM instantiation to provide an adapter argument.
- Change imports from dspy.EvaluationResult to dspy.evaluate.EvaluationResult.
- Replace any usage of Image.from_* helpers with the Image constructor.
- Remove imports or references to the EmailInsight class.
- Review custom GEPA component selection logic to align with the new gepa_kwargs support.
✨ New Features
- GEPA now supports custom instruction_proposer with multimodal (dspy.Image) handling.
- GEPA added custom component selection logic support.
- Integration added between MLFlow and GEPA.
- gepa_kwargs introduced to pass custom kwargs to gepa.optimize.
- Callback metadata is now propagated during GEPA minibatch evaluation.
- SIMBA optimizer improvements.
- Anthropic Citation API support added to custom type.
- Custom type can now be streamed and use native response.
- Image.format caching for improved throughput.
- Added test for dspy.Image tool with ReAct.
- Save/load functionality added to Embeddings.
- Automatic llms.txt generation via mkdocs-llmstxt plugin.
- EvaluationResult exposed as dspy.evaluate.EvaluationResult.
- Built‑in types included in DSPy API references.
- Experimental annotation support added.
- Header link added to documentation.
- Infinitus AI agents support added.
- Arbor Interface update (WIP).
🐛 Bug Fixes
- Fixed GEPA usage tracking with tuple outputs.
- Fixed typo in GEPA warning.
- Fixed module and feedback mismatch (#8703).
- Fixed value parsing and added tests.
- Fixed parsing of doubly‑encoded base type in json.parse.
- Fixed unexpected parsing of Optional[str] fields when string has brackets or braces.
- Used mcp.ClientSession for type hint.
- Fixed type hint for callpreprocess.
- Allowed DummyLM answers dict values to be of any type.
- Fixed crash when usage tracker enabled with non‑prediction output.
- Fallback to memory cache when disk is not available.
- Avoided unnecessary cache key computation in lm.
- Displayed metric=0 correctly in eval table.
- Fixed example code for Citations.
- Fixed link to the sglang installation/getting started page.
- Removed duplicate cell from GEPA information extraction tutorial.
- Fixed spelling error in DatasetDescriptor Prompt.
- Updated API reference.
- Changed DummyLM to take an adapter at init (also a breaking change).
- Added header link.
- Added experimental annotation.
- Updated LICENSE error.
- Added test with ReAct for Image tool.
- Cache Image.format for better throughput.
- Updated optimization overview with data split guidance.
- Added comprehensive instruction_proposer documentation and examples for GEPA.
- Updated documentation to include responses API.
- Added tracing banner in new tutorials.
🔧 Affected Symbols
gepa.optimizeDummyLMEvaluationResultdspy.evaluate.EvaluationResultImage.from_*ImageEmailInsightEmbeddingsgepa_kwargsmlflowCitationAPIArbor⚡ Deprecations
- Image.from_* helper functions are deprecated in favor of the flexible Image constructor.