Skip to content

[FEATURE] Add ability to disable parallel tool calling #614

@kaleko

Description

@kaleko

Problem Statement

I would like there to e.g. be an argument in the Agent constructor like sequential_tool_execution=True (default) with the ability to set it to false. Parallel tool calling causes problems when one tool available to an agent depends on the output of another tool available to the agent.

Proposed Solution

When setting sequential_tool_execution=False it would replace the concurrent execution within /src/strands/tools/executor.py with a sequential loop.

Use Case

When a single agent has two tools, and the input of tool B is dependent on the output of tool A. For example tool A runs an sql query and saves the result to a csv, tool B executes python code which reads the csv and analyzes the contents.

Alternatives Solutions

Alternatives are to separate the tools into different sub agents, then orchestrate the agents in a workflow. In my situation I need one agent to have access to two interdependent tools.
Another workaround is to rely on prompt engineering, instructing the LLM to never call two tools at the same time. But, this is unreliable and model dependent.

Additional Context

No response

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions