# ayushsharma-1234/ibm-agent-20 architecture

> Architecture diagram of the GitHub repository ayushsharma-1234/ibm-agent-20, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ayushsharma-1234/ibm-agent-20
- Repository: https://github.com/ayushsharma-1234/ibm-agent-20

## Overview

EduAI is a teacher-facing education assistant for Gujarat schools. Teachers use either the Streamlit interface or the CLI to request personalized learning plans, teaching materials, student assessment and analytics, or classroom support. The orchestrator dispatches requests to specialist agents; agents use shared prompt and result handling before generating responses through IBM WatsonX. The README documents the five principal agent areas; the tree also includes a test-paper agent. Source excerpts are partial, so links for that agent and some UI workflows are limited to documented structure.

Main entry points: [`orchestrator.py`](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/orchestrator.py) (Orchestrator), [`agents/base_agent.py`](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/base_agent.py) (Shared Agent Core), [`watsonx_client.py`](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/watsonx_client.py) (WatsonX Client), [`app.py`](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/app.py) (Streamlit App)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User Interfaces"]
  node_streamlit["Streamlit App<br/>[app.py]"]
  node_cli["CLI<br/>[main.py]"]
end

subgraph group_routing["Request Routing"]
  node_orchestrator["Orchestrator<br/>[orchestrator.py]"]
end

subgraph group_education["Education Agents"]
  node_learning["Learning Recommendations"]
  node_lesson["Lesson Planning"]
  node_analytics["Performance Analytics"]
  node_assessment["Assessment Feedback"]
  node_teacher_support["Teacher Support"]
  node_test_paper["Test Paper"]
end

subgraph group_llm["AI Generation"]
  node_base["Shared Agent Core<br/>[base_agent.py]"]
  node_client["WatsonX Client<br/>[watsonx_client.py]"]
  node_config["Model Configuration<br/>[config.py]"]
end

node_teacher(("Teacher"))
node_iam{{"IBM IAM"}}
node_watsonx{{"WatsonX Generation"}}

node_teacher -->|"requests support"| node_streamlit
node_teacher -->|"requests demo"| node_cli
node_streamlit -->|"submits requests"| node_orchestrator
node_cli -->|"submits requests"| node_orchestrator
node_orchestrator -->|"dispatches"| node_learning
node_orchestrator -->|"dispatches"| node_lesson
node_orchestrator -->|"dispatches"| node_analytics
node_orchestrator -->|"dispatches"| node_assessment
node_orchestrator -->|"dispatches"| node_teacher_support
node_orchestrator -->|"dispatches"| node_test_paper
node_learning -->|"uses prompt helpers"| node_base
node_lesson -->|"uses prompt helpers"| node_base
node_analytics -->|"uses prompt helpers"| node_base
node_assessment -->|"uses prompt helpers"| node_base
node_teacher_support -->|"uses prompt helpers"| node_base
node_test_paper -->|"uses prompt helpers"| node_base
node_base -->|"requests generation"| node_client
node_orchestrator -->|"classifies intent"| node_client
node_client -->|"reads settings"| node_config
node_client -->|"gets token"| node_iam
node_client -->|"sends generation request"| node_watsonx

click node_streamlit "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/app.py"
click node_cli "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/main.py"
click node_orchestrator "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/orchestrator.py"
click node_learning "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/learning_recommendation_agent.py"
click node_lesson "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/lesson_plan_agent.py"
click node_analytics "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/performance_analytics_agent.py"
click node_assessment "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/assessment_feedback_agent.py"
click node_teacher_support "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/teacher_assistant_agent.py"
click node_test_paper "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/test_paper_agent.py"
click node_base "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/base_agent.py"
click node_client "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/watsonx_client.py"
click node_config "https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/config.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_streamlit,node_cli toneBlue
class node_orchestrator toneAmber
class node_learning,node_lesson,node_analytics,node_assessment,node_teacher_support,node_test_paper toneMint
class node_base,node_client,node_config toneRose
class node_teacher,node_iam,node_watsonx toneIndigo
```

## Components

### User Interfaces

- [Streamlit App](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/app.py): `app.py`
- [CLI](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/main.py): `main.py`

### Request Routing

- [Orchestrator](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/orchestrator.py): `orchestrator.py`

### Education Agents

- [Learning Recommendations](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/learning_recommendation_agent.py): `agents/learning_recommendation_agent.py`
- [Lesson Planning](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/lesson_plan_agent.py): `agents/lesson_plan_agent.py`
- [Performance Analytics](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/performance_analytics_agent.py): `agents/performance_analytics_agent.py`
- [Assessment Feedback](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/assessment_feedback_agent.py): `agents/assessment_feedback_agent.py`
- [Teacher Support](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/teacher_assistant_agent.py): `agents/teacher_assistant_agent.py`
- [Test Paper](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/test_paper_agent.py): `agents/test_paper_agent.py`

### AI Generation

- [Shared Agent Core](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/agents/base_agent.py): `agents/base_agent.py`
- [WatsonX Client](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/watsonx_client.py): `watsonx_client.py`
- [Model Configuration](https://github.com/ayushsharma-1234/ibm-agent-20/blob/main/config.py): `config.py`

### Other components

- **Teacher**
- **IBM IAM**
- **WatsonX Generation**

## Connections

- Teacher → Streamlit App: requests support
- Teacher → CLI: requests demo
- Streamlit App → Orchestrator: submits requests
- CLI → Orchestrator: submits requests
- Orchestrator → Learning Recommendations: dispatches
- Orchestrator → Lesson Planning: dispatches
- Orchestrator → Performance Analytics: dispatches
- Orchestrator → Assessment Feedback: dispatches
- Orchestrator → Teacher Support: dispatches
- Orchestrator → Test Paper: dispatches
- Learning Recommendations → Shared Agent Core: uses prompt helpers
- Lesson Planning → Shared Agent Core: uses prompt helpers
- Performance Analytics → Shared Agent Core: uses prompt helpers
- Assessment Feedback → Shared Agent Core: uses prompt helpers
- Teacher Support → Shared Agent Core: uses prompt helpers
- Test Paper → Shared Agent Core: uses prompt helpers
- Shared Agent Core → WatsonX Client: requests generation
- Orchestrator → WatsonX Client: classifies intent
- WatsonX Client → Model Configuration: reads settings
- WatsonX Client → IBM IAM: gets token
- WatsonX Client → WatsonX Generation: sends generation request
