
Strands Decider 2B: Local Setup and Testing
Step-by-step guide to install, configure, and run AWS Strands Decider 2B locally using WSL2, including API testing and Multi-RAG routing examples.
🚀 Running AWS Strands Decider 2B Locally for Multi-RAG and Agentic AI Applications
As GenAI applications evolve, one challenge appears repeatedly:
How do we make reliable decisions before invoking an LLM?
Questions such as:
- Which datasource should answer a request?
- Should I call Jira, PLM, or Confluence?
- Do I have enough context to answer confidently?
- Which tool should my AI agent invoke?
are often delegated to LLMs.
Recently, I explored AWS Strands Decider 2B, a lightweight decision model designed specifically for routing, classification, validation, and workflow orchestration.
Unlike traditional LLMs, Strands Decider doesn't generate arbitrary text. Instead, it chooses from predefined options and returns a confidence score, making it an excellent fit for Agentic AI and Multi-RAG architectures.
In this article, I'll walk through the complete setup, testing, and usage of Strands Decider 2B on Windows using WSL2.
Why Use a Decision Model?
A typical GenAI architecture looks like this:

The LLM is responsible for both:
- Making decisions
- Generating answers
A cleaner architecture separates those responsibilities:

Benefits include:
- Better routing accuracy
- Lower hallucination rates
- Faster decisions
- More observable workflows
- Improved agent governance
Environment
The following environment was used:
- Windows 11
- WSL2
- Ubuntu
- Python Virtual Environment
- AWS Strands Decider 2B
Step 1: Verify WSL2 Installation
Open PowerShell and run:
1
wsl -l -vExpected output:
1
2
NAME STATE VERSION
Ubuntu Running 2Start Ubuntu:
1
wsl -d UbuntuStep 2: Create a Workspace
1
2
3
mkdir -p /mnt/c/GENAI/strands
cd /mnt/c/GENAI/strandsStep 3: Install Required Dependencies
Update Ubuntu:
1
sudo apt updateInstall required packages:
1
2
3
4
5
6
7
8
sudo apt install -y \
python3 \
python3-pip \
python3-venv \
python3-dev \
build-essential \
gcc \
g++Verify installation:
1
2
python3 --version
gcc --versionStep 4: Create a Virtual Environment
Create a Python virtual environment:
1
python3 -m venv .venvActivate it:
1
source .venv/bin/activateUpgrade pip:
1
pip install --upgrade pip setuptools wheelStep 5: Install Strands Decider
Install the package:
1
pip install strands-deciderVerify:
1
strands-decider --helpStep 6: Discover Available Models
Install Hugging Face Hub & Authenticate after installation:
1
2
3
pip install huggingface_hub
hf auth loginList available models:
1
python -c "from huggingface_hub import list_models; [print(m.id) for m in list_models(search='strands')]"Model used in this tutorial:
1
StrandsAgents/strands-decider-2B-hobson-v19Step 7: Start the Local Inference Server
Launch the model:
1
strands-decider serve StrandsAgents/strands-decider-2B-hobson-v19 --device cpuSuccessful startup:
1
2
Application startup complete.
Uvicorn running on http://127.0.0.1:8000The first startup downloads and caches model weights automatically.
Step 8: Verify the API
Open:
1
http://127.0.0.1:8000/docsOr verify using curl:
1
curl http://127.0.0.1:8000/openapi.jsonUnderstanding Question Types
Strands Decider supports three types of decisions.
Choice Question
Used when selecting one option from multiple choices.
1
2
3
4
5
6
7
8
9
10
{
"type": "choice",
"instructions": "Select the best datasource.",
"criteria": {
"PLM": "Engineering data",
"JIRA": "Issue tracking",
"CONFLUENCE": "Documentation",
"UNKNOWN": "No matching source"
}
}Noul Question
Used for binary true/false decisions.
1
2
3
4
{
"type": "noul",
"instructions": "Determine whether this statement is true."
}Score Question
Used for ranking or scoring.
1
2
3
4
5
6
7
8
9
10
11
{
"type": "score",
"instructions": "Rate the sentiment.",
"criteria": [
"Very Negative",
"Negative",
"Neutral",
"Positive",
"Very Positive"
]
}Testing with Python
Create a file named:
decider_demo.pySample Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import requests
import json
payload = {
"state": "User wants ECO information",
"questions": {
"datasource": {
"type": "choice",
"instructions": "Select the most appropriate datasource.",
"criteria": {
"PLM": "Engineering changes and parts",
"JIRA": "Issue tracking system",
"CONFLUENCE": "Documentation repository",
"UNKNOWN": "No suitable source"
}
}
}
}
response = requests.post(
"http://127.0.0.1:8000/v1/systemone",
json=payload
)
print(json.dumps(response.json(), indent=2))Run:
1
python decider_demo.pySample Response
1
2
3
4
5
6
7
8
{
"answers": {
"datasource": {
"choice": "PLM",
"confidence": 0.94
}
}
}The output includes both:
- Selected option
- Confidence score
This makes the model particularly useful for orchestration and routing scenarios.
Multi-RAG Routing Example
A common use case is routing user queries to the correct retrieval system.
1
2
3
4
5
6
7
8
9
10
11
12
13
decision = response["answers"]["datasource"]["choice"]
if decision == "PLM":
plm_rag.search(query)
elif decision == "JIRA":
jira_rag.search(query)
elif decision == "CONFLUENCE":
confluence_rag.search(query)
else:
print("No reliable datasource identified.")Instead of letting the LLM guess where information exists, the decision model chooses the optimal source first.
Real-World Enterprise Use Cases
I see significant value for Strands Decider in:
Agentic AI
- Tool selection
- Workflow orchestration
- Agent handoffs
Multi-RAG Architectures
- Retrieval routing
- Data source selection
- Context validation
Engineering Applications
- PLM assistants
- Engineering change requests
- Part classification
Enterprise Search
- SharePoint routing
- Confluence routing
- Jira ticket search
Governance
- Confidence-based decisions
- Approval workflows
- AI guardrails
Architecture Pattern
1
2
3
4
5
6
7
8
9
10
11
12
13
14
User Query
|
v
Strands Decider
|
+-------------------+
| |
v v
PLM RAG Jira RAG
| |
+--------+----------+
|
v
LLM ResponseThis pattern helps ensure the right knowledge source is selected before retrieval and generation occur.
Final Thoughts
One lesson I've learned while building enterprise GenAI applications is:
Not every problem requires text generation.
Decision making and text generation serve different purposes and often benefit from different models.
By introducing a decision layer before retrieval and generation, organizations can build systems that are:
- More reliable
- Easier to govern
- Easier to debug
- Less prone to hallucinations
For anyone building Agentic AI, Multi-RAG platforms, or enterprise copilots, Strands Decider is worth exploring.
Repository
GitHub Repository: https://github.com/ujjwalbsoni/strands-decider-end-to-end
About the Author
Ujjwalkumar Soni
Passionate about Agentic AI, Enterprise GenAI Platforms, RAG Architectures, and Intelligent Knowledge Systems.
Connect with me to discuss AI Agents, Multi-RAG systems, MCP, AWS, and Enterprise AI solutions.
#AI #AWS #GenAI #RAG #AgenticAI #Python #MachineLearning #LLM #EnterpriseAI #AWSStrands
Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article