Metadata-Version: 2.4
Name: fastadk
Version: 0.1.0
Summary: A developer-friendly framework for building AI agents with Google ADK
Project-URL: Homepage, https://github.com/fastadk/fastadk
Project-URL: Documentation, https://docs.fastadk.dev
Project-URL: Repository, https://github.com/fastadk/fastadk
Project-URL: Bug Tracker, https://github.com/fastadk/fastadk/issues
Project-URL: Discussions, https://github.com/fastadk/fastadk/discussions
Project-URL: Discord, https://discord.gg/fastadk
Author-email: FastADK Team <team@fastadk.dev>
Maintainer-email: FastADK Team <team@fastadk.dev>
License: MIT
License-File: LICENSE
Keywords: agents,ai,artificial-intelligence,automation,chatbots,framework,google-adk,llm
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: aiofiles>=23.0.0
Requires-Dist: anthropic>=0.56.0
Requires-Dist: asyncio-redis>=0.16.0
Requires-Dist: fastapi>=0.104.0
Requires-Dist: google-generativeai>=0.8.5
Requires-Dist: httpx>=0.25.0
Requires-Dist: loguru>=0.7.0
Requires-Dist: mkdocs-material>=9.6.15
Requires-Dist: mkdocstrings-python>=1.16.12
Requires-Dist: openai>=1.93.0
Requires-Dist: pydantic-settings>=2.0.0
Requires-Dist: pydantic>=2.5.0
Requires-Dist: pylint>=3.3.7
Requires-Dist: python-dotenv>=1.1.1
Requires-Dist: pyyaml>=6.0
Requires-Dist: reddis>=1.0.1
Requires-Dist: rich>=14.0.0
Requires-Dist: tomli>=2.0.1
Requires-Dist: typer>=0.9.0
Requires-Dist: types-pyyaml>=6.0.12.20250516
Requires-Dist: types-requests>=2.32.4.20250611
Requires-Dist: uvicorn[standard]>=0.24.0
Provides-Extra: all
Requires-Dist: aioredis>=2.0.0; extra == 'all'
Requires-Dist: anthropic>=0.5.0; extra == 'all'
Requires-Dist: authlib>=1.2.0; extra == 'all'
Requires-Dist: black>=23.7.0; extra == 'all'
Requires-Dist: chromadb>=0.4.0; extra == 'all'
Requires-Dist: cryptography>=41.0.0; extra == 'all'
Requires-Dist: google-cloud-firestore>=2.13.0; extra == 'all'
Requires-Dist: google-cloud-logging>=3.8.0; extra == 'all'
Requires-Dist: google-cloud-storage>=2.10.0; extra == 'all'
Requires-Dist: httpx>=0.25.0; extra == 'all'
Requires-Dist: mypy>=1.5.0; extra == 'all'
Requires-Dist: openai>=1.0.0; extra == 'all'
Requires-Dist: opentelemetry-api>=1.20.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.41b0; extra == 'all'
Requires-Dist: opentelemetry-sdk>=1.20.0; extra == 'all'
Requires-Dist: pinecone-client>=2.2.0; extra == 'all'
Requires-Dist: pre-commit>=3.4.0; extra == 'all'
Requires-Dist: prometheus-client>=0.17.0; extra == 'all'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'all'
Requires-Dist: pytest-cov>=4.1.0; extra == 'all'
Requires-Dist: pytest>=7.4.0; extra == 'all'
Requires-Dist: python-jose[cryptography]>=3.3.0; extra == 'all'
Requires-Dist: redis[hiredis]>=5.0.0; extra == 'all'
Requires-Dist: ruff>=0.0.287; extra == 'all'
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.5.0; extra == 'anthropic'
Provides-Extra: cloud
Requires-Dist: google-cloud-logging>=3.8.0; extra == 'cloud'
Requires-Dist: google-cloud-storage>=2.10.0; extra == 'cloud'
Provides-Extra: dev
Requires-Dist: black>=23.7.0; extra == 'dev'
Requires-Dist: httpx>=0.25.0; extra == 'dev'
Requires-Dist: mypy>=1.5.0; extra == 'dev'
Requires-Dist: pre-commit>=3.4.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
Requires-Dist: pytest>=7.4.0; extra == 'dev'
Requires-Dist: ruff>=0.0.287; extra == 'dev'
Provides-Extra: enterprise
Requires-Dist: authlib>=1.2.0; extra == 'enterprise'
Requires-Dist: cryptography>=41.0.0; extra == 'enterprise'
Requires-Dist: python-jose[cryptography]>=3.3.0; extra == 'enterprise'
Provides-Extra: firestore
Requires-Dist: google-cloud-firestore>=2.13.0; extra == 'firestore'
Provides-Extra: observability
Requires-Dist: opentelemetry-api>=1.20.0; extra == 'observability'
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.41b0; extra == 'observability'
Requires-Dist: opentelemetry-sdk>=1.20.0; extra == 'observability'
Requires-Dist: prometheus-client>=0.17.0; extra == 'observability'
Provides-Extra: openai
Requires-Dist: openai>=1.0.0; extra == 'openai'
Provides-Extra: redis
Requires-Dist: aioredis>=2.0.0; extra == 'redis'
Requires-Dist: redis[hiredis]>=5.0.0; extra == 'redis'
Provides-Extra: vector
Requires-Dist: chromadb>=0.4.0; extra == 'vector'
Requires-Dist: pinecone-client>=2.2.0; extra == 'vector'
Description-Content-Type: text/markdown

# FastADK

FastADK is an open‑source Python framework that layers ergonomic abstractions over Google ADK and Vertex AI, enabling developers to design, test, and deploy tool‑using LLM agents with minimal boilerplate. Declarative decorators, auto‑generated FastAPI routes, pluggable memory back‑ends, and built‑in observability let teams prototype locally and scale the same code seamlessly to containerised, serverless environments.

## Quality Assurance

Before submitting any code changes, please run our quality checks locally. See the [Developer Guidelines for Quality Assurance](docs/FastADK_Deep_Dive_Implementation_Blueprint.md#developer-guidelines-for-quality-assurance) for detailed instructions.

## Features

- **Declarative Agent Development**: Create agents with simple `@Agent` and `@tool` decorators
- **Configuration System**: YAML/TOML-based configuration with environment variables support
- **CLI Interface**: Interactive command-line interface for agent development and testing
- **Testing Utilities**: Built-in testing framework for agent validation and simulation
- **Comprehensive Observability**: Logging, metrics, and tracing for monitoring agent behavior

## Quick Start

```python
from fastadk import Agent, BaseAgent, tool

@Agent(model="gemini-1.5-pro", description="Weather assistant")
class WeatherAgent(BaseAgent):
    @tool
    def get_weather(self, city: str) -> dict:
        """Fetch current weather for a city."""
        return {"city": city, "temp": "22°C", "condition": "sunny"}

# Run the agent
if __name__ == "__main__":
    import asyncio
    
    async def main():
        agent = WeatherAgent()
        response = await agent.run("What's the weather in London?")
        print(response)
    
    asyncio.run(main())
```

## Configuration

FastADK supports configuration through YAML or TOML files and environment variables:

```yaml
# fastadk.yaml
environment: dev

model:
  provider: gemini
  model_name: gemini-1.5-pro
  api_key_env_var: GEMINI_API_KEY

memory:
  backend_type: inmemory
  ttl_seconds: 3600

telemetry:
  log_level: debug
```

## Testing

FastADK provides a testing framework for agent validation:

```python
from fastadk.testing import AgentTest, test_scenario

class TestWeatherAgent(AgentTest):
    agent = WeatherAgent()
    
    @test_scenario("sunny_weather")
    async def test_sunny_weather(self):
        response = await self.agent.run("What's the weather in London?")
        assert "sunny" in response.lower()
        assert self.agent.tools_used == ["get_weather"]
```

## Installation

```bash
pip install fastadk
```

## License

FastADK is released under the MIT License.