Change8

3.0.4b1

Breaking Changes
📦 dspyView on GitHub →
4 breaking18 features🐛 28 fixes1 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

  1. Update DummyLM instantiation to provide an adapter argument.
  2. Change imports from dspy.EvaluationResult to dspy.evaluate.EvaluationResult.
  3. Replace any usage of Image.from_* helpers with the Image constructor.
  4. Remove imports or references to the EmailInsight class.
  5. 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.