Releases: stanfordnlp/dspy
3.0.4b1
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
3.0.3
What's Changed
New Functionality
- Introduce
rollout_id
for bypassing LM cache in a namespaced way by @okhat in #8745 - Raise temperature when doing multiple rollouts (and warn otherwise) by @okhat in #8748
Optimizers
- Bump gepa version - Fix dependencies, Add progress bar, Ensure failing metrics do not continue running by @LakshyAAAgrawal in #8701
- Fix call to forward in dspy.GEPA tutorial by @LakshyAAAgrawal in #8719
Maintenance
- Replace ujson by orjson by @chenmoneygithub in #8655
- Change how
forward
is patched to avoid warning on explicitforward
call by @chenmoneygithub in #8700 - Add type hints and fix doc string of SIMBA by @TomeHirata in #8707
- Remove deprecated LiteLLM caching from LM by @okhat in #8742
- Fix Predict config merging and document rollout_id usage by @okhat in #8746
- Lower max_tokens requirement for reasoning LMs by @okhat in #8750
Full Changelog: 3.0.2...3.0.3
3.0.2
What's Changed
Optimizers
- Validate GEPA metric signature by @okhat in #8697
- MIPROv2: Warn on deprecated requires_permission_to_run by @TomeHirata in #8635
- Fix mlflow<>gepa by @LakshyAAAgrawal @chenmoneygithub in #8691, #8696
LMs & Adapters
- Allow custom chunk type in stream by @chenmoneygithub in #8679
- Support OpenAI response api in LM by @TomeHirata in #8692
- Fix issues in BAMLAdapter by @chenmoneygithub in #8654
- Handle gpt-5-nano as reasoning model by @okhat in #8693
Maintenance
- Add test to ensure saving/loading backward compatibility by @chenmoneygithub in #8680
- Add type hints for Module.call and Module.acall to return Prediction by @jsummerfield in #8681
- chore: fix error message: gpt-5o -> gpt-5 by @Shangyint in #8686
New Contributors
- @RevanthGundala made their first contribution in #8669
- @jsummerfield made their first contribution in #8681
- @bikash119 made their first contribution in #8684
Full Changelog: 3.0.1...3.0.2
3.0.1
What's Changed
Optimizers
- Fix Evaluate call bug in GEPA by @LakshyAAAgrawal in #8647
- Lazy import of gepa package by @TomeHirata in #8638
LMs & Adapters
- Use pydantic's
ConfigDict
for config; filter litellm warnings by @kurtmckee in #8659 - Remove hardcoded model list from OpenAIProvider file by @chenmoneygithub in #8649
- Raise explicit error on not meeting reasoning model's requirement by @chenmoneygithub in #8650
- Flexible handling of
dspy.ToolCalls
parsing by @chenmoneygithub in #8563
Maintenance
- fix(evaluate): Raise TypeError on return_outputs in evaluate kwargs by @isaacbmiller in #8644
- Add type hints for UsageTracker by @TomeHirata in #8636
New Contributors
- @bogireddytejareddy made their first contribution in #8646
Full Changelog: 3.0.0...3.0.1
3.0.0
DSPy 3.0.0
The work in the run up to DSPy 3.0 has focused on new powerful optimizers (RL: dspy.GRPO via our new Arbor library; and reflective prompt evolution: dspy.GEPA and dspy.SIMBA), extensibility (dspy.Adapter & dspy.Type), reliability/observability for production (tight integration with MLflow 3.0), and more. Much of this work incubated during late 2.6 and matured in 3.0.
✨ Highlights across 2.6 → 3.0
Adapters & Types (extensibility without prompt plumbing)
- Adapters: built-in
dspy.ChatAdapter
,dspy.JSONAdapter
,dspy.XMLAdapter
,dspy.BAMLAdapter
, token/status streaming, async paths, and intelligent fallback to native LLM structured outputs. - Types: multi-modal I/O via
dspy.Image
anddspy.Audio
; composite types (e.g.,list[dspy.Image]
, Pydantic models); higher-level I/O likedspy.History
anddspy.ToolCalls
. Custom types now “just work” with adapters (dspy.Type
). - Tooling integrations: MCP servers and LangChain tools supported out-of-the-box.
Modules, Runtime & DX
- Better scalability:
Module.batch
with thread-safe DSPy settings; native DSPy async; high-concurrency, configurable caches. - Smoother DX: intermediate status streaming, output streaming from any layer, usage tracking, per-module history, rich callbacks.
- Deployment/portability: stable save/load (including the program), and you can export the prompt management layer via Adapters.
- New/updated modules:
dspy.CodeAct
,dspy.Refine
, improvedReAct
, a more reliablePythonInterpreter
.
Observability & MLOps
- Native observability with MLflow 3.0: tracing, optimizer tracking, and improved deployment flows (plus docs/tutorials).
Optimizers
- MIPROv2: substantially more reliable with automatic hyperparameter selection and many fixes.
- GRPO (RL on DSPy programs): our new Arbor library for RL training of compound AI systems.
- SIMBA: powerful prompt optimizer that learns from custom feedback (great for agentic/long-horizon tasks).
- GEPA (Genetic-Pareto): a new optimizer that builds a Pareto tree of prompts, uses NL reflection to extract/validate lessons, and can produce shorter prompts while improving downstream performance. Early results show wins over MIPROv2 on several tasks and promising inference-time search behavior (see paper announcement for details).
Some of the above first landed in late 2.6 (e.g., early streaming, initial adapters/types improvements), and were consolidated/matured in 3.0.
💥 Breaking changes / notable removals
- Remove community retrievers (#8073). If you relied on unmaintained retriever integrations, migrate to custom code (or use Tool/MCP integrations).
- Drop Python 3.9 support. 3.10–3.13 are supported.
- Alias removed:
dspy.Program
→ remove/replace (was cleaned up in 3.0 work). - Various deprecations promised in 2.5 were applied during the 2.6.0 release candidates (e.g., old
functional/
,dsp/
clients, legacy caches/examples/tests).
🆚 Changes since 3.0.0b4
Optimizers
- Add GEPA (Genetic-Pareto) optimizer (@LakshyAAAgrawal, #8624, #8628, #8633).
Maintenance
- Migrate GitHub Actions from
set-output
to$GITHUB_OUTPUT
(@kurtmckee, #8557).
New contributor
- @LakshyAAAgrawal (first contribution in #8624).
Full Changelog: 3.0.0b4...3.0.0
📚 3.0.0 beta highlights (rollup)
- b4: MIPRO reliability fixes; updated Arbor GRPO integration; streaming end-marker; faster image JSON parsing; BAMLAdapter; mark gpt-5 as reasoning model; vendor a lighter internal hasher.
New contributors: @weklund, @vakinapalli, @tvdaptible, @jmhb0, @olesyash, @kurtmckee, @prrao87, @danielsparing, @apieum. - b3:
dspy.Code
; PEP 604 unions in signatures; token streaming for XMLAdapter;dspy.syncify
for running optimizers on async DSPy programs; Windows support for MIPROv2 confirm; real-LLM unit tests.
New contributors: @LukasMurdock, @ken-dwyer, @grisaitis, @vacmar01, @fswair, @nillwyc, @asad-aali, @niklovescoding, @MaximeRivest, @brenorb. - b2: Stream listener reuse; async paths for Chat/JSON adapters; error-message/QoL updates; drop Python 3.9; docs/tutorials; rename
BaseType
→Type
; removedspy.Program
alias; many cleanups.
New contributors: @codingDuan, @Hangzhi, @poudro. - b1: 3.0 “heads-up” + remove unmaintained retrievers (#8073); XML adapter; standardize/style improvements; async settings merge; MLflow tracing guide.
New contributors: @brishin, @dmavrommatis.
👏 Contributors since 2.6
Thank you to everyone who contributed code, docs, reviews, issues, and testing!
🎉 = first-time contributor since 2.6.15
@AkeemMcLennon, @aliirz, @amas0, @apieum 🎉, @arnavsinghvi11, @asad-aali 🎉, @asparagus, @assadyousuf 🎉, @BenMcH 🎉, @bjsi, @brenorb 🎉, @brishin 🎉, @BTripp1986 🎉, @carsonkahn-external 🎉, @cezarc1, @chakravarthik27, @charviupreti 🎉, @chenmoneygithub, @codingDuan 🎉, @CyrusNuevoDia, @danielsparing 🎉, @dbczumar, @dilarasoylu, @dimroc, @Dyadd, @emmanuel-ferdman 🎉, @erandeutsch, @estsauver, @fswair 🎉, @GabeDottl, @glesperance, @grisaitis 🎉, @hmoazam, @Harryllh, @Hangzhi, @hung-phan, @isaacbmiller, @itay1542, @Jdogtherock, @JHMuir, @jjjjw, @jinnovation, @jmho, @jmhb0 🎉, @kanjurer, @kalanyuz, @ken-dwyer 🎉, keyuchen21, @klopsahlong, @koptagel 🎉, @kurtmckee 🎉, @LukasMurdock 🎉, @laitifranz, @LakshyAAAgrawal 🎉, @lxdlam, @MaximeRivest 🎉, @MaxwellSalmon, @Miyamura80 🎉, @myz96, @neilbhutada, @niklovescoding 🎉, @nillwyc 🎉, @okhat, @olesyash 🎉, @poudro 🎉, @prrao87 🎉, @patcher9, @rcanand, @rifolio 🎉, @Samoed, @SanjanShiv 🎉, @srowen 🎉, @Shangyint, @stevapple, @tvdaptible 🎉, @TomeHirata, @tikoehle 🎉, @Timtech4u, @thomasahle, @ulgens, @vakinapalli 🎉, @vacmar01 🎉, @veronicalyu320, @vincentkoc, @weklund 🎉, @willsmithDB, @xinyij-goo 🎉, @yuruofeifei, @Ziems, @zbambergerNLP, @gkorland, @yanmxa, @mikeedjones, @b-d055, @mikeweltevredem, @ItzAmirreza, @GangGreenTemperTatum, @shermansiu, @dmavrommatis, @iPersona, @Krishn1412, @Y-1huadb, @B-Step62, @tkellogg
First-time contributors called out since 2.6.15 (rollup):
@rifolio, @charviupreti, @BenMcH, @GangGreenTemperTatum, @koptagel, @Miyamura80, @tikoehle, @srowen, @assadyousuf, @xinyij-goo, @SanjanShiv, @emmanuel-ferdman, @Y-1huadb, @Krishn1412, @BTripp1986, @vincentkoc, @estsauver, @jmho, @JHMuir, @neilbhutada, @carsonkahn-external, @dimroc, @erandeutsch, @willsmithDB, @iPersona, @brishin, @dmavrommatis, @codingDuan, @Hangzhi, @poudro, @LukasMurdock, @ken-dwyer, @grisaitis, @vacmar01, @fswair, @nillwyc, @asad-aali, @niklovescoding, @MaximeRivest, @brenorb, @weklund, @vakinapalli, @tvdaptible, @jmhb0, @olesyash, @kurtmckee, @prrao87, @danielsparing, @apieum, @LakshyAAAgrawal.
🔗 Compare
- Full changes:
2.6.27...3.0.0b1
,3.0.0b1...3.0.0b2
,3.0.0b2...3.0.0b3
,3.0.0b3...3.0.0b4
,3.0.0b4...3.0.0
.
3.0.0b4
What's Changed
Optimizers
- Fixes for MIPRO: Don't fail silently on bootstrapping! by @okhat in #8548
- skip unhashable module histories for mipro program proposer by @arnavsinghvi11 in #8572
- Update Arbor GRPO Integration by @Ziems in #8609
- Remove user confirmation from MiproV2 by @TomeHirata in #8552
Adapters & Tools
- fix(dspy): Fix MCP tool conversion when schema has no input params by @tvdaptible in #8566
- Explicitly mark the end of streaming by @chenmoneygithub in #8587
- faster json parsing for images in chatadapter by @jmhb0 in #8596
- Use json mode for serialization by @TomeHirata in #8605
- Custom BAMLAdapter to improve structured outputs by @prrao87 in #8614
LMs & Modules
- Mark gpt-5 as reasoning model by @olesyash in #8620
- Fix infinite growing trace and add tests by @chenmoneygithub in #8607
- Litellm logging management by @chenmoneygithub in #8619
- nit: fix "poorly-design" by @danielsparing in #8622
- remove history and callbacks from module saving by @arnavsinghvi11 in #8599
- update deduplicate by @apieum in #8623
Maintenance
- Increment python version for pre-commit by @TomeHirata in #8602
- Run the
typos
tool against the codebase by @kurtmckee in #8560 - Fix incorrect
build-system
requirements by @kurtmckee in #8558 - Vendor Hasher class from datasets library in order to remove larger dependency by @BenMcH in #8621
New Contributors
- @weklund made their first contribution in #8554
- @vakinapalli made their first contribution in #8569
- @tvdaptible made their first contribution in #8566
- @jmhb0 made their first contribution in #8596
- @olesyash made their first contribution in #8620
- @kurtmckee made their first contribution in #8560
- @prrao87 made their first contribution in #8614
- @danielsparing made their first contribution in #8622
- @apieum made their first contribution in #8623
Full Changelog: 3.0.0b3...3.0.0b4
3.0.0b3
What's Changed
Key bugfix: The removal of datasets
from the default dependencies in 3.0.0b1 meant that if the user didn't have datasets
installed, the bootstrapping of MIPROv2 would fail silently, leading to worse optimization. Added datasets
back in commit 8aa065945.
Signatures, Adapters, & Types
- add dspy.Code by @chenmoneygithub in #8511
- Provide language to dspy.Code by @chenmoneygithub in #8519
- Use collections for type hints by @TomeHirata in #8513
- Add testing for PEP604 union types by @erandeutsch in #8475
- Fix type annotation for ensure_signature by @grisaitis in #8496
- Use model_dump instead of dict by @TomeHirata in #8493
- Fix native function calling in adapters by @chenmoneygithub in #8479
- Rename dspy.BaseType to dspy.Type by @chenmoneygithub in #8510
- Resolve "$def" for nested tool arg type by @chenmoneygithub in #8534
- Add token streaming support for XMLAdapter by @chenmoneygithub in #8478
Modules
- Update python_interpreter.py by @nillwyc in #8501
- unwrap pyodide object correctly by @arnavsinghvi11 in #8466
- Provide a
dspy.syncify
so that users can run optimizer on async dspy programs by @chenmoneygithub in #8509 - fix UnicodeDecodeError: 'gbk' codec can't decode by @nillwyc in #8522
Other
- Support MIPROv2 user confirmation in windows by @TomeHirata in #8485
- Run unit tests with real LLM calls by @TomeHirata in #8486
New Contributors
- @LukasMurdock made their first contribution in #8477
- @ken-dwyer made their first contribution in #8474
- @grisaitis made their first contribution in #8496
- @vacmar01 made their first contribution in #8499
- @fswair made their first contribution in #8498
- @nillwyc made their first contribution in #8501
- @asad-aali made their first contribution in #8512
- @niklovescoding made their first contribution in #8515
- @MaximeRivest made their first contribution in #8527
- @brenorb made their first contribution in #8542
Full Changelog: 3.0.0b2...3.0.0b3
3.0.0b2
What's Changed
Modules & Adapters
- Remove dspy.Program alias by @TomeHirata in #8392
- Clean up ChainOfThoughtWithHint in DSPy 3.0 by @Hangzhi in #8395
- Change the output interface of evaluate by @TomeHirata in #8003
- Add format to ToolCalls by @TomeHirata in #8455
- Allow reusing the stream listener by @chenmoneygithub in #8461
Bug Fixes
- Fix the issue that StreamListener strip out space after the start identifier by @chenmoneygithub in #8360
- Fix the streaming test by @chenmoneygithub in #8367
- fix bedrock streaming token tracking by @BTripp1986 in #8431
- Allow exception to pass through in JSONAdapter by @chenmoneygithub in #8445
- Support async path for ChatAdapter and JSONAdapter by @chenmoneygithub in #8419
- Fix PEP 604 union types when using Class Signatures for ChainOfThought by @erandeutsch in #8465
QoL
- Improve error message on invalid lm setup by @chenmoneygithub in #8378
- Show warning if forward is directly called by @TomeHirata in #8380
Style
- Small style fix on forward call warning by @chenmoneygithub in #8381
- Add quote rule to the lint rules by @TomeHirata in #8383
- Refactor root init file by @TomeHirata in #8385
- Add missing rule comment by @chenmoneygithub in #8398
- Consistently use double quotes in DSPy docsite landing page by @chenmoneygithub in #8447
Maintenance
- Remove pandas and datasets from core dependencies by @TomeHirata in #8274
- Update dspy version in uv lock by @TomeHirata in #8384
- Remove Hyperparameter class by @TomeHirata in #8386
- Remove unused multi-hop state files by @TomeHirata in #8389
- Remove unused postprocess of param name by @TomeHirata in #8387
- Remove experimental module by @TomeHirata in #8391
- Remove commented out assertions file by @TomeHirata in #8388
- Clean up unnecessary ruff exclude by @chenmoneygithub in #8399
- Remove commented out old dotdict by @TomeHirata in #8401
- Remove branch installation instruction by @TomeHirata in #8404
- Remove dspy.settings related to dspy.Assertion by @chenmoneygithub in #8397
- Remove unnecessary pre-commit exclusion by @chenmoneygithub in #8405
- Rename modules to module by @TomeHirata in #8407
- Move internal_dspy outside dspy module by @TomeHirata in #8400
- Remove aws extra dep group by @TomeHirata in #8412
- Move dsp/metrics into evaluate/metrics by @TomeHirata in #8402
- Fix signature input type by @TomeHirata in #8413
- Disable doc-push on forked repo by @chenmoneygithub in #8415
- compute cache key once by @poudro in #8394
- Add CLAUDE.local.md to .gitignore by @TomeHirata in #8420
- Remove datasets installation from the Getting Started I by @chenmoneygithub in #8418
- Add gemini to LM provider by @chenmoneygithub in #8417
- change the default model to llama-4 for databricks provider by @chenmoneygithub in #8414
- Move litellm cache testing under tests/client and remove unnecessary tests by @chenmoneygithub in #8396
- Fix the error that status message streaming was blocking by @chenmoneygithub in #8432
- Add real world tutorial for email extraction by @TomeHirata in #8426
- Document comparison operations of dspy.Prediction by @TomeHirata in #8437
- Drop Python 3.9 support by @TomeHirata in #8456
- Add support for PEP 604 union types in inline signatures by @erandeutsch in #8449
- Fix Lint by @TomeHirata in #8458
- Update lockfile by @TomeHirata in #8459
- Typo fix by @chenmoneygithub in #8462
Documentation
- [update docs] init gsm8k = GSM8K() by @codingDuan in #8363
- Add missing hooks to the tutorial of observability by @chenmoneygithub in #8368
- Add a tutorial on customizing modules by @chenmoneygithub in #8370
- Update the version to 3.0.0 in model saving doc by @TomeHirata in #8409
- Automatic doc update by @chenmoneygithub in #8476
- Fix mkdoc warnings by @TomeHirata in #8410
- Expand sidenav items by default by @TomeHirata in #8411
- Add real world example with yahoo finance Langchain tool by @TomeHirata in #8428
- Add memory agent tutorial by @TomeHirata in #8427
- Add real-world example overview page by @TomeHirata in #8442
- Remove unsupported options of Plugin 'material/search' by @TomeHirata in #8423
- Relax configure allowance in async tasks by @chenmoneygithub in #8444
- Add tutorial for text based game by @TomeHirata in #8451
- Add a tutorial for generating a code example from doc by @TomeHirata in #8450
- Add llms.txt generation tutorial by @TomeHirata in #8421
New Contributors
- @codingDuan made their first contribution in #8363
- @Hangzhi made their first contribution in #8395
- @poudro made their first contribution in #8394
Full Changelog: 3.0.0b1...3.0.0b2
3.0.0b1
What's Changed
A cleaner release note to follow. The only breaking change to be aware of in 3.0 is just #8073 for unmaintained retriever integration (should affect almost no one, and easy to migrate to custom code for those affected).
- Fix Pydantic v2 deprecation warning in json_adapter by @brishin in #8263
- Enable CI testing for all supported python versions by @chenmoneygithub in #8321
- Fix the custom type extraction in dspy.BaseType by @chenmoneygithub in #8320
- Add global max_errors setting by @okhat in #8319
- Wrap langchain tool code example by asyncio runner by @chenmoneygithub in #8322
- add more permission capabilities to PythonInterpreter by @arnavsinghvi11 in #8296
- Fix logging configuration to prevent OpenTelemetry handler conflicts by @dmavrommatis in #8269
- restore audio inspect_history by @arnavsinghvi11 in #8336
- Standardize coding style in DSPy by @chenmoneygithub in #7885
- Fix lint failures by @chenmoneygithub in #8337
- Prompt users to run pre-commit when detecting ruff failures by @chenmoneygithub in #8338
- refactoring audio_format completely by @arnavsinghvi11 in #8349
- Add docstring for dspy.ReAct by @chenmoneygithub in #8334
- Allow tool async to sync conversion by @chenmoneygithub in #8332
- Fix missing [[ ## completed ## ]] in history and fewshot example by @chenmoneygithub in #8340
- Fix usage tracking when None exists as value by @chenmoneygithub in #8339
- Remove unused GRPO endpoint by @Ziems in #8354
- update the MLflow tracing guide by @chenmoneygithub in #8353
- Add xml adapter by @chenmoneygithub in #8358
- Merge async settings change into main by @chenmoneygithub in #8361
- Remove community retrievers by @TomeHirata in #8073
New Contributors
- @brishin made their first contribution in #8263
- @dmavrommatis made their first contribution in #8269
Full Changelog: 2.6.27...3.0.0b1