What's Changed
GEPA + Other Optimizers
- Fix GEPA usage tracking with tuple outputs by @smec-cgint in #8739
- Add custom instruction_proposer support to GEPA with multimodal (dspy.Image) handling by @andressrg in #8737
- Enhance logging for valset usage in GEPA by @LakshyAAAgrawal in #8770
- [Feature] GEPA: Add custom component selection logic support by @andressrg in #8765
- Add MLFLow <> GEPA support by @TomeHirata in #8763
- Update optimization overview with data split guidance by @LakshyAAAgrawal in #8792
- docs: Add comprehensive instruction_proposer documentation and examples for GEPA by @andressrg in #8775
- Introduce gepa_kwargs for passing custom kwargs to gepa.optimize by @LakshyAAAgrawal in #8850
- Propagate callback metadata during GEPA minibatch eval by @TomeHirata in #8835
- Fix typo in GEPA warning by @TomeHirata in #8840
- Update gepa[dspy] dependency version to 0.0.17; Potential fix for load from state not working in GEPA by @LakshyAAAgrawal in #8859
- SIMBA Improvements by @klopsahlong in #8766
Custom Type
- Add Anthropic Citation API support by @TomeHirata in #8721
- Add api reference for citations and document by @TomeHirata in #8801
- Allow custom type to be streamed and use native response by @TomeHirata in #8778
- Fix example code for Citations by @TomeHirata in #8868
Image & Multimodal Support
- Deprecate Image from_* helpers in favor of flexible constructor by @isaacbmiller in #8771
- Cache Image.format for better throughput by @TomeHirata in #8842
- test(dspy.Image): Adds a test with ReAct that has an Image tool by @isaacbmiller in #8855
Bug Fixes & Type Handling
- Fix #8703 - fixing module and feedback mismatch by @Lucas-Fernandes-Martins in #8777
- Fix value parsing and add tests by @chenmoneygithub in #8774
- Parse doubly-encoded base type in json.parse by @TomeHirata in #8814
- Fix unexpected parsing of Optional[str] fields when string has brackets or braces by @sontanon in #8805
- Use mcp.ClientSession for type hint by @TomeHirata in #8826
- Fix type hint for callpreprocess by @TomeHirata in #8827
- fix: Allow DummyLM answers dict values to be of any type to work with a wider range of signatures by @BenMcH in #8803
- Fix the crash when usage tracker is enabled with non-prediction output by @TomeHirata in #8831
- Fallback to memory cache when disk is not available by @TomeHirata in #8718
- bug(lm): Avoid unnecessary cache key computation by @isaacbmiller in #8862
- Display metric=0 in eval table by @TomeHirata in #8817
- Add save/load to Embeddings by @TomeHirata in #8818
Documentation & Tutorials
- Minor document changes by @Navanit-git in #8722
- Add doc page to learn tool usage in DSPy by @TomeHirata in #8709
- Style fix for tool page by @TomeHirata in #8781
- Add tracing banner in new tutorials by @B-Step62 in #8772
- docs: fix link to the sglang installation/getting started page by @tomsanbear in #8776
- Guide on using native tool calling by @chenmoneygithub in #8788
- fix: removed duplicate cell from GEPA information extraction tutorial by @vacmar01 in #8806
- Remove EmailInsight class from email extraction tutorial by @TomeHirata in #8790
- Update documentation to include responses api by @chenmoneygithub in #8780
- [Feature] Add automatic llms.txt generation via mkdocs-llmstxt plugin by @aberoham in #8562
- Guide on using native tool calling by @chenmoneygithub in #8788
- Update HotPotQA in light of #8591 by @okhat in #8751
Minor Fixes & Maintenance
- Use developer role in response API by @TomeHirata in #8727
- 8688 csv output by @crawftv in #8725
- Add header link by @TomeHirata in #8773
- Add experimental annotation by @TomeHirata in #8712
- Update LICENSE error by @TomeHirata in #8783
- Fixed Spelling error in DatasetDescriptor Prompt by @PoeAudits in #8812
- Update API reference by @TomeHirata in #8844
- Expose EvaluationResult as dspy.evaluate.EvaluationResult by @TomeHirata in #8843
- Include built-in types in DSPy api references by @chenmoneygithub in #8810
- Change DummyLM to take an adapter at init by @isaacbmiller in #8802
- Infinitus AI agents by @suman-subash-infinitusai in #8708
- [WIP] Arbor Interface Update by @Ziems in #8837
New Contributors
- @crawftv made their first contribution in #8725
- @Navanit-git made their first contribution in #8722
- @smec-cgint made their first contribution in #8739
- @suman-subash-infinitusai made their first contribution in #8708
- @andressrg made their first contribution in #8737
- @tomsanbear made their first contribution in #8776
- @Lucas-Fernandes-Martins made their first contribution in #8777
- @aberoham made their first contribution in #8562
- @PoeAudits made their first contribution in #8812
- @sontanon made their first contribution in #8805
Full Changelog: 3.0.3...3.0.4b1