Breaking Changes
-
Model Providers:
- OpenAI and LiteLLM model providers no longer accept base64 encoded images. These providers will now handle base64 encoding of image bytes automatically. See issue #252.
- Model providers now implement asynchronous functions. Custom model providers must be updated accordingly. See PR#306.
- The API interface for model providers has been simplified to require only a single stream method implementation. See PR#400.
- Model provider API interfaces have been relocated to the strands.models subpackage for improved organization. See PR#409.
-
Other breaking changes:
- All classes or protocols requiring subclassing or implementation now include an additional kwargs argument for forward compatibility. See PR#413.
- The max_parallel_tools parameter has been removed from the Agent class. Tools are now automatically invoked on thread-pools. See PR#391.
- The load_tools_from_directory parameter of the Agent class now defaults to False meaning. Tools are no longer automatically loaded from the tools directory. To restore the old behavior, explicitly set this parameter to True . See PR#419.
- The event_loop_cycle function is no longer available as a top-level import from strands, reflecting its internal nature. Direct event loop invocation is not recommended. See PR#415.
- Automatic removal of dangling tool messages during Agent lifecycle has been discontinued to support future features. See PR#418.
- AgentTool now implements a stream API instead of invoke and requires asynchronous implementation. See PR#345.
What's Changed
- feat: Implement the core system of typed hooks & callbacks by @zastrowm in #304
- iterative tool handler process by @pgrayy in #340
- remove thread pool wrapper by @pgrayy in #339
- chore: updated scope name, enable setting up meter by @poshinchen in #331
- async model stream interface by @pgrayy in #306
- chore: allow custom agent name by @poshinchen in #347
- Extract hook based tests to a separate file by @zastrowm in #349
- tools - parallel execution - sleep by @pgrayy in #355
- Refactor event loop to use Agent object rather than individual parameters by @zastrowm in #359
- models - openai - async client by @pgrayy in #353
- models - openai - do not accept b64 images by @pgrayy in #368
- iterative tools by @pgrayy in #345
- a2a streaming by @jer96 in #366
- docs(multiagent): Update A2AServer docstrings by @signoredems in #377
- refactor(a2a): move a2a test module by @jer96 in #379
- models - mistral - async by @pgrayy in #375
- models - ollama - async by @pgrayy in #373
- models - anthropic - async by @pgrayy in #371
- feat: Add hooks for before/after tool calls + allow hooks to update values by @zastrowm in #352
- agent tool - remove invoke by @pgrayy in #369
- fix: handle multiple tool calls in Mistral streaming responses by @siddhantwaghjale in #384
- fix: add-threading-instrumentation by @poshinchen in #394
- Add cohere client by @billytrend-cohere in #236
- deps(a2a): upgrade a2a with db support by @jer96 in #395
- Writer model provider by @yanomaly in #228
- Update integ tests to isolate provider-based tests by @zastrowm in #396
- Remove agent.tool_config and update usages to use tool_specs by @zastrowm in #388
- multi modal input by @pgrayy in #367
- Fix: Update mistral tests to avoid shared agents by @zastrowm in #398
- async tools support by @pgrayy in #391
- Add basis for conformance-based tests by @zastrowm in #403
- fix: Allow tool names that start with numbers by @zastrowm in #407
- Add hooks for when new messages are appended to the agent's messages by @zastrowm in #385
- Add Model Invocation Hooks by @zastrowm in #387
- structured output - multi-modal input by @pgrayy in #405
- feat(async): mcp async call tool by @jer96 in #406
- [REFACTOR] Unify Model Interface Around Single Entry Point (model.stream) by @mkmeral in #400
- Rename StartRequestEvent & EndRequestEvent events by @zastrowm in #408
- models - bedrock - threading by @pgrayy in #411
- Mark hooks as non-experimental by @zastrowm in #410
- models - litellm - async by @pgrayy in #414
- models - move abstract class by @pgrayy in #409
- feat(multi-agent): introduce Graph multi-agent orchestrator by @awsarron in #336
- refactor: Remove event_loop_cycle from top level import by @Unshure in #415
- refactor: Remove message processor by @Unshure in #417
- refactor: Update interfaces to include kwargs to enable backwards compatibility by @mkmeral in #413
- refactor: Remove _remove_dangling_messages from SlidingWindowConversationManager by @Unshure in #418
- chore!: set Agent property load_tools_from_directory to default to False by @dbschmigelski in #419
New Contributors
- @signoredems made their first contribution in #377
- @billytrend-cohere made their first contribution in #236
- @yanomaly made their first contribution in #228
- @mkmeral made their first contribution in #400
Full Changelog: v0.2.1...v0.3.0