v0.9: All Together Now
ControlFlow v0.9 is here and it's HUGE:
- New event-based backend that allows agent actions to be "compiled" on demand for different LLMs, workflow visibility, and more
- New lightweight DX, including the workhorse
cf.run()
function - New
Orchestrator
for managing workflow execution - New
TurnStrategy
objects for managing agent collaboration - Completely rewritten documentation
- Custom result validation
- Full Prefect 3.0 support
What's Changed
New Features 🎉
- Add new compiler backend by @jlowin in #199
- Add new compiler backend (#199) by @jlowin in #200
- Add new compiler backend by @jlowin in #203
- Add diagnostic CLI by @jlowin in #205
- Support max iterations by @jlowin in #211
- support private tasks by @jlowin in #212
- Continue building out compilation pipeline by @jlowin in #221
- Update prompt customization by @jlowin in #226
- Improve basic round robin by @jlowin in #231
- Add stable ID for task/agent/team by @jlowin in #232
- Add configurable history visibility by @jlowin in #233
- Add async run and deprecate run_once by @jlowin in #234
- Don't create team of one agent by @jlowin in #243
- Clean up new backend by @jlowin in #246
- Give end-turn tool to the default team by @jlowin in #247
- expand support for lists of agents by @jlowin in #248
- Better support for complex options by @jlowin in #249
- Add support for Annotated result types on tasks by @jlowin in #262
- Add most busy turn strategy by @jlowin in #265
- Add support for custom result validators by @jlowin in #266
- Allow task decorator to return a value that becomes part of the objective by @jlowin in #267
- Update decorator to have proper method for returning a task by @jlowin in #268
- Improve handling of max turns / max turns per call and enforce task.max_turns by @jlowin in #271
- Update prefect pin for 3.0 🎉 by @jlowin in #273
- Allow configurable completion agents by @jlowin in #275
- Add top level
run
fns and support orchestrators with no agent by @jlowin in #280 - Improve debugging options by @jlowin in #281
- Reset task parent tracking when nested flows are created by @jlowin in #286
- @jlowin Remove infer_parent by improving attribute defaults by @jlowin in #287
- Update planning module by @jlowin in #285
- Huge orchestration overhaul by @jlowin in #290
- Add builtin validators and docs by @jlowin in #294
- Flow updates: prevent args from becoming part of context by @jlowin in #300
- Update prefect integration by @jlowin in #301
Fixes 🐞
- Fix bugs with parsing dependent tasks by @jlowin in #201
- Fix error when serializing bad tool args by @jlowin in #204
- fix kwarg by @zzstoatzz in #218
- fix tests by @jlowin in #227
- Add context tests; fix issue loading upstream task events by @jlowin in #229
- Ensure LC tools work by @jlowin in #230
- fix flow thread kwarg by @zzstoatzz in #250
- Add tests to ensure run limits are respected by @jlowin in #264
- Fix issue with classifying complex labels by @jlowin in #276
- Fix issue with special type aliases by @jlowin in #295
Breaking Changes 🛫
- move defaults out of root by @jlowin in #210
- Change run_once to steps by @jlowin in #214
- Remove .agents property by @jlowin in #242
- rename user_access → interactive by @jlowin in #259
- Remove error property and reuse result by @jlowin in #261
- Name is not required for agents; instructions can be provided as a positional arg by @jlowin in #270
- Remove unused settings by @jlowin in #272
Docs 📚
- Add event log docs by @jlowin in #208
- add groq to providers by @jlowin in #209
- Update installation.mdx by @jlowin in #215
- Add example of using a LangChain tool and fetching data, summarizing, and doing NER and sentiment analysis by @discdiver in #225
- Giant docs update by @jlowin in #277
- Icons update by @jlowin in #278
- New flow docs; clean up by @jlowin in #282
- Consolidate concept docs by @jlowin in #289
- Update dependency docs by @jlowin in #291
- Lots of new examples by @jlowin in #297
- Add history doc by @jlowin in #298
- Add feature examples by @jlowin in #299
- Add new agentic examples by @jlowin in #302
- Update readme by @jlowin in #303
Other Changes 🦾
- Update Prefect by @jlowin in #202
- Update README.md header image so displays in PyPI by @discdiver in #224
- Add history tests by @jlowin in #235
- Handle long tool descriptions by @jlowin in #237
- chore: update agent.py by @eltociear in #236
- Make agent name required by @jlowin in #238
- Remove unused events by @jlowin in #245
- Basetool support by @jlowin in #256
- v0.9 foundation by @jlowin in #255
- Fix flow context when using @flow by @jlowin in #257
- Update welcome.mdx by @jlowin in #258
- fix indentation by @jlowin in #260
- Remove max turns from task by @jlowin in #274
- Add dev CLI by @jlowin in #292
- 2 small things by @zzstoatzz in #293
- Update README.md by @jlowin in #304
New Contributors
- @eltociear made their first contribution in #236
Full Changelog: v0.8.2...v0.9