# shivamagrahari055/aitraining architecture

> Architecture diagram of the GitHub repository shivamagrahari055/aitraining, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/shivamagrahari055/aitraining
- Repository: https://github.com/shivamagrahari055/aitraining

## Overview

The repository contains two chat paths: the documented lightweight OpenAI client/streaming agent, and a provider-neutral runtime with OpenAI and Gemini adapters and tool execution. The README establishes the simple user workflow; sampled source and the SOURCE INDEX support the framework relationships. The direct client implementation and CLI are not excerpted, so their internal links are limited to documented behavior.

Main entry points: [`src/llm/agent.py`](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/agent.py) (AgentRuntime), [`src/llm/openai/provider.py`](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/openai/provider.py) (OpenAI provider), [`src/llm/gemini/provider.py`](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/gemini/provider.py) (Gemini provider), [`src/llm/response.py`](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/response.py) (Stream events)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_simple["Simple chat"]
  node_simple_agent["Streaming Agent<br/>[agent.py]"]
  node_client["LLMClient<br/>[llmclient.py]"]
end

subgraph group_runtime["Agent runtime"]
  node_runtime_agent["AgentRuntime<br/>[agent.py]"]
  node_factory["Provider factory<br/>[factory.py]"]
  node_shared_base["Chat and tool models<br/>[base.py]"]
end

subgraph group_providers["Provider adapters"]
  node_openai_provider["OpenAI provider<br/>[provider.py]"]
  node_gemini_provider["Gemini provider<br/>[provider.py]"]
  node_openai_parser["OpenAI parser<br/>[parser.py]"]
  node_gemini_parser["Gemini parser<br/>[parser.py]"]
end

subgraph group_events["Events and messages"]
  node_stream_events["Stream events<br/>[response.py]"]
  node_agent_events["Agent events<br/>[event.py]"]
end

node_user(("Chat user"))
node_api{{"OpenAI API"}}
node_tool_executor["Tool executor"]
node_openai_api{{"OpenAI service"}}
node_gemini_api{{"Gemini service"}}

node_user -->|"sends prompt"| node_simple_agent
node_simple_agent -->|"requests stream"| node_client
node_client -->|"requests completions"| node_api
node_simple_agent -->|"emits events"| node_agent_events
node_agent_events -->|"uses usage type"| node_stream_events
node_user -->|"submits prompt"| node_runtime_agent
node_runtime_agent -->|"builds history"| node_shared_base
node_runtime_agent -->|"consumes events"| node_stream_events
node_runtime_agent -->|"executes calls"| node_tool_executor
node_factory -->|"creates provider"| node_openai_provider
node_factory -->|"creates provider"| node_gemini_provider
node_runtime_agent -.->|"requests generation"| node_openai_provider
node_runtime_agent -.->|"requests generation"| node_gemini_provider
node_openai_provider -->|"parses responses"| node_openai_parser
node_gemini_provider -->|"parses responses"| node_gemini_parser
node_openai_parser -->|"normalizes to"| node_stream_events
node_gemini_parser -->|"normalizes to"| node_stream_events
node_openai_provider -->|"converts messages"| node_shared_base
node_gemini_provider -->|"uses message models"| node_shared_base
node_openai_provider -->|"calls completion API"| node_openai_api
node_gemini_provider -->|"calls generate API"| node_gemini_api
node_user -->|"selects provider"| node_factory

click node_simple_agent "https://github.com/shivamagrahari055/aitraining/blob/master/src/agent/agent.py"
click node_client "https://github.com/shivamagrahari055/aitraining/blob/master/src/client/llmclient.py"
click node_runtime_agent "https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/agent.py"
click node_factory "https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/factory.py"
click node_shared_base "https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/base.py"
click node_openai_provider "https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/openai/provider.py"
click node_gemini_provider "https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/gemini/provider.py"
click node_openai_parser "https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/openai/parser.py"
click node_gemini_parser "https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/gemini/parser.py"
click node_stream_events "https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/response.py"
click node_agent_events "https://github.com/shivamagrahari055/aitraining/blob/master/src/agent/event.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_simple_agent,node_client,node_user toneBlue
class node_runtime_agent,node_factory,node_shared_base toneAmber
class node_openai_provider,node_gemini_provider,node_openai_parser,node_gemini_parser,node_api toneMint
class node_stream_events,node_agent_events toneRose
class node_tool_executor,node_openai_api,node_gemini_api toneIndigo
```

## Components

### Simple chat

- [Streaming Agent](https://github.com/shivamagrahari055/aitraining/blob/master/src/agent/agent.py): `src/agent/agent.py`
- [LLMClient](https://github.com/shivamagrahari055/aitraining/blob/master/src/client/llmclient.py): `src/client/llmclient.py`

### Agent runtime

- [AgentRuntime](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/agent.py): `src/llm/agent.py`
- [Provider factory](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/factory.py): `src/llm/factory.py`
- [Chat and tool models](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/base.py): `src/llm/base.py`

### Provider adapters

- [OpenAI provider](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/openai/provider.py): `src/llm/openai/provider.py`
- [Gemini provider](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/gemini/provider.py): `src/llm/gemini/provider.py`
- [OpenAI parser](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/openai/parser.py): `src/llm/openai/parser.py`
- [Gemini parser](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/gemini/parser.py): `src/llm/gemini/parser.py`

### Events and messages

- [Stream events](https://github.com/shivamagrahari055/aitraining/blob/master/src/llm/response.py): `src/llm/response.py`
- [Agent events](https://github.com/shivamagrahari055/aitraining/blob/master/src/agent/event.py): `src/agent/event.py`

### Other components

- **Chat user**
- **OpenAI API**
- **Tool executor**
- **OpenAI service**
- **Gemini service**

## Connections

- Chat user → Streaming Agent: sends prompt (evidence: `README.md`)
- Streaming Agent → LLMClient: requests stream (evidence: `src/agent/agent.py`)
- LLMClient → OpenAI API: requests completions (evidence: `README.md`)
- Streaming Agent → Agent events: emits events (evidence: `src/agent/agent.py`)
- Agent events → Stream events: uses usage type (evidence: `src/agent/event.py`)
- Chat user → AgentRuntime: submits prompt
- AgentRuntime → Chat and tool models: builds history (evidence: `src/llm/agent.py`)
- AgentRuntime → Stream events: consumes events (evidence: `src/llm/agent.py`)
- AgentRuntime → Tool executor: executes calls (evidence: `src/llm/agent.py`)
- Provider factory → OpenAI provider: creates provider (evidence: `src/llm/factory.py`)
- Provider factory → Gemini provider: creates provider (evidence: `src/llm/factory.py`)
- AgentRuntime → OpenAI provider: requests generation
- AgentRuntime → Gemini provider: requests generation
- OpenAI provider → OpenAI parser: parses responses (evidence: `src/llm/openai/provider.py`)
- Gemini provider → Gemini parser: parses responses (evidence: `src/llm/gemini/provider.py`)
- OpenAI parser → Stream events: normalizes to (evidence: `src/llm/openai/parser.py`)
- Gemini parser → Stream events: normalizes to (evidence: `src/llm/gemini/parser.py`)
- OpenAI provider → Chat and tool models: converts messages (evidence: `src/llm/openai/provider.py`)
- Gemini provider → Chat and tool models: uses message models (evidence: `src/llm/gemini/provider.py`)
- OpenAI provider → OpenAI service: calls completion API (evidence: `src/llm/openai/provider.py`)
- Gemini provider → Gemini service: calls generate API (evidence: `src/llm/gemini/provider.py`)
- Chat user → Provider factory: selects provider
