Project Overview

Project Purpose and Objectives

This project provides a comprehensive Agent Development Kit (ADK) framework for building, running, and integrating AI agents powered by large language models (LLMs). The primary objectives are to enable the creation of sophisticated AI agents that:

The system is designed for modularity and composability, allowing agents to call tools, invoke sub-agents, transfer control, and manage multi-turn conversations with memory and artifact support.

Key functionalities and implementations include:

Example Workflows and Use Cases

Example: Loading and Using Artifacts in an Agent

  1. The agent uses the LoadArtifactsTool to load artifacts (e.g., images, text files) into the session.

  2. The tool appends instructions to the LLM request listing available artifacts.

  3. When the LLM issues a function call to load_artifacts, the tool concurrently loads requested artifact contents from the artifact service.

  4. The contents are appended to the LLM request, enabling the model to access them during generation.

  5. The agent can then answer queries about the artifacts or perform actions based on their contents.

Example: Parallel Agent Execution

Example: Agent-To-Agent Communication (A2A)

Example: Running an Agent via REST API

Stack and Technologies

Key libraries and frameworks:

High-Level Architecture

The system is composed of the following major components and their interactions:

Component Diagram

graph TB
User -->|Input Message| Runner
Runner --> Agent
Agent --> LLM["LLM Model (Gemini)"]
Agent --> Toolset
Toolset --> LoadArtifacts[LoadArtifactsTool]
Toolset --> GoogleSearch[GoogleSearchTool]
Toolset --> MCPTools[MCP ToolSet]
Agent --> SessionService["(Session Service)"]
Agent --> MemoryService["(Memory Service)"]
Agent --> ArtifactService["(Artifact Service)"]
Agent --> RemoteAgent[A2A Remote Agent]
Runner --> SessionService
Runner --> ArtifactService
RESTAPI[REST API Server] --> Runner
CLI --> Runner
WebUI --> RESTAPI
Telemetry --> LLM
Telemetry --> Toolset

Developer Navigation

For Frontend Developers

For Backend Developers

For Tool Developers

For Session and Artifact Storage Developers

For Agent Workflow Developers

Visual Diagrams

Component Diagram (See above)

Key Workflow: Agent Request Handling Flow

flowchart TD
UserInput[User Input Message]
AppendSession[Append message to Session]
DetermineAgent[Determine Agent to Run]
RunAgent[Run Agent]
AgentCallsLLM[Agent calls LLM Model]
LLMFunctionCall[LLM Function Call Detected?]
CallTool[Call Tool]
ToolResponse[Tool Response]
UpdateSession[Update Session with Events and State]
ReturnResponse[Return Response Events]
UserInput --> AppendSession --> DetermineAgent --> RunAgent --> AgentCallsLLM
AgentCallsLLM --> LLMFunctionCall
LLMFunctionCall -->|Yes| CallTool --> ToolResponse --> AgentCallsLLM
LLMFunctionCall -->|No| UpdateSession --> ReturnResponse

This flow illustrates the core step of user input processing, session appending, agent selection, LLM invocation, tool calls on function calls, session updates, and response emission.


This overview provides the essential technical structure, key components, and workflows of the project, enabling developers of varying experience levels to understand the system purpose, architecture, and contribution pathways efficiently.