A comprehensive AI assistant for the API Conference Lagos 2025 community, built with Google ADK and FastAPI. This agent helps conference attendees with navigation, speaker information, schedule management, and general support for the event taking place on July 18th & 19th, 2025 at The Zone in Gbagada, Lagos.
- Personal AI Guide: Meet Ndu (short for Ndumodu, meaning "guide" in Igbo), your expressive Nigerian AI assistant
- Nigerian Flair: Speaks with local slang and cultural context while remaining professional
- Smart Conversations: Powered by Google ADK with Gemini 2.5 Flash model
- Session Management: Maintains conversation context across interactions
- Route Planning: Get directions to the conference venue using Google Maps
- Transportation Options: Find nearby bus stops, train stations, and transport options
- Venue Access: Information about parking, accessibility, and venue facilities
- Real-time Updates: Traffic and transport information
- Speaker Profiles: Detailed information about conference speakers
- Session Details: Find sessions by speaker, topic, or time
- Expertise Search: Search speakers by their areas of expertise
- Speaker Sessions: Get all sessions for a specific speaker
- Full Schedule: Complete conference schedule with session details
- Day-by-Day View: Filter sessions by specific days
- Session Search: Find sessions by title, topic, or speaker
- Personalized Recommendations: Get schedule recommendations based on interests and experience level
- Real-time Data: Fetch latest information from apiconf.net
- Dynamic Updates: Get current speaker information and schedule changes
- Content Extraction: Parse and format web content for easy consumption
- FAQ Support: Answer common conference questions
- Venue Information: Details about facilities and services
- Registration Help: Assistance with registration and ticketing
- Emergency Contacts: Quick access to support information
- Human Contact: Always provides support phone number when AI can't help
- Graceful Degradation: Handles errors gracefully with helpful fallback options
apiconf-agent/
βββ app/
β βββ agents/
β β βββ apiconf_agent.py # Main agent implementation (Ndu)
β β βββ tools/
β β βββ navigation_tools.py # Maps, directions, transportation
β β βββ speaker_tools.py # Speaker information
β β βββ schedule_tools.py # Event scheduling
β β βββ web_scraping_tools.py # Data extraction from apiconf.net
β βββ config/
β β βββ settings.py # Environment configuration
β β βββ logger.py # Logging setup
β βββ schemas/
β β βββ base.py # Base response schemas
β β βββ agents.py # Agent request/response models
β βββ services/
β β βββ web_scraping_service.py # Web scraping functionality
β βββ api/
β βββ v1/
β βββ agents_router.py # FastAPI endpoints
βββ frontend/
β βββ src/
β β βββ components/
β β β βββ Chat.tsx # Chat interface
β β β βββ Sidebar.tsx # Navigation sidebar
β β β βββ TypingIndicator.tsx # Loading animations
β β βββ App.tsx # Main React app
β β βββ main.tsx # React entry point
β βββ package.json # Frontend dependencies
β βββ vite.config.ts # Vite configuration
βββ data/
β βββ speakers.json # Speaker information
β βββ schedule.json # Event schedule
βββ docker/
β βββ backend/
β β βββ Dockerfile # Backend container
β βββ nginx/
β βββ Dockerfile # Nginx container
β βββ nginx.conf # Nginx configuration
βββ pyproject.toml # Python dependencies
βββ docker-compose.yml # Container orchestration
βββ env.example # Environment variables template
βββ main.py # FastAPI application entry
βββ README.md # This file
- Python 3.13 or higher
- Node.js 18+ (for frontend)
- Poetry (for Python dependency management)
- Docker & Docker Compose (recommended)
- Google API Key (for Google ADK and Maps)
This is the easiest way to get started:
-
Clone the repository
git clone <repository-url> cd apiconf-agent
-
Set up environment variables
cp env.example .env # Edit .env with your API keys and configuration
-
Build and run with Docker
docker-compose up --build
-
Access the application
- Frontend: http://localhost
- API Docs: http://localhost/docs
- Health Check: http://localhost/api/v1/agents/health
-
Clone and set up backend
git clone <repository-url> cd apiconf-agent cp env.example .env poetry install
-
Set up frontend
cd frontend npm install
-
Configure your API keys
# In your .env file: GOOGLE_API_KEY=your_google_api_key_here GOOGLE_MAPS_API_KEY=your_google_maps_api_key_here DATABASE_URL=postgresql://user:password@localhost/apiconf_agent SECRET_KEY=your-secret-key-here
-
Run the applications
# Terminal 1 - Backend poetry run python main.py # Terminal 2 - Frontend cd frontend npm run dev
POST /api/v1/agents/chat
Request Body:
{
"message": "How do I get to The Zone from Ikeja?",
"user_id": "user123",
"session_id": "session456"
}
Response:
{
"success": true,
"response": "Omo, that's a good question! To get to The Zone from Ikeja...",
"user_id": "user123",
"session_id": "session456",
"confidence": 0.9,
"metadata": {
"user_id": "user123",
"session_id": "session456",
"timestamp": 1703123456.789,
"tools_used": []
}
}
GET /api/v1/agents/status
GET /api/v1/agents/health
Once the server is running, visit:
- Swagger UI: http://localhost/docs
- ReDoc: http://localhost/redoc
The project follows a modular architecture:
app/agents/
: AI agent implementation (Ndu) and toolsapp/config/
: Configuration and settings managementapp/schemas/
: Pydantic models for API requests/responsesapp/api/
: FastAPI routes and endpointsapp/services/
: Business logic and external service integrationsfrontend/
: React application with TypeScriptdata/
: Static data files (speakers, schedule)
- Create a new tool file in
app/agents/tools/
- Implement your tool functions following Google ADK conventions
- Register the tool in
app/agents/apiconf_agent.py
- Update the agent instructions if needed
Example tool:
# app/agents/tools/my_tool.py
from google.adk.tools import FunctionTool
def my_tool_function(param: str, **kwargs) -> Dict[str, Any]:
"""My custom tool function."""
return {
"success": True,
"result": f"Processed: {param}"
}
def get_my_tools() -> List[FunctionTool]:
"""Get my custom tools."""
return [
FunctionTool(
name="my_tool",
description="A custom tool for processing data",
function=my_tool_function
)
]
Variable | Description | Required | Default |
---|---|---|---|
GOOGLE_API_KEY |
Google ADK API key | Yes | - |
GOOGLE_MODEL_NAME |
Google model to use | No | gemini-2.5-flash |
GOOGLE_MAPS_API_KEY |
Google Maps API key | Yes | - |
DATABASE_URL |
PostgreSQL database URL | Yes | - |
REDIS_URL |
Redis connection URL | No | redis://localhost:6379/0 |
CONFERENCE_VENUE_NAME |
Conference venue name | Yes | - |
CONFERENCE_VENUE_ADDRESS |
Venue address | Yes | - |
CONFERENCE_VENUE_COORDINATES |
Venue coordinates (lat,lng) | Yes | - |
CONFERENCE_DATES |
Conference dates | Yes | - |
SUPPORT_PHONE |
Support phone number | Yes | - |
SUPPORT_EMAIL |
Support email | Yes | - |
SECRET_KEY |
Application secret key | Yes | - |
CORS_ORIGINS |
Allowed CORS origins | No | ["http://localhost:3000"] |
poetry run pytest
poetry run pytest --cov=app
cd frontend
npm run lint
-
Build production images
docker-compose -f docker-compose.yml build
-
Run in production mode
docker-compose -f docker-compose.yml up -d
For production deployment, ensure you have:
- Database: PostgreSQL instance
- Redis: Redis instance for caching
- API Keys: Valid Google ADK and Maps API keys
- SSL: HTTPS certificates for production
- Domain: Configured domain name
The application includes comprehensive logging and monitoring:
- Structured Logging: All operations are logged with context
- Health Checks: Built-in health check endpoints
- Performance Metrics: Request processing time headers
- Error Handling: Graceful error handling with fallback options
- Session Management: Conversation context tracking
DEBUG
: Detailed debug informationINFO
: General information (default)WARNING
: Warning messagesERROR
: Error messages
Configure allowed origins in your .env
file:
CORS_ORIGINS=["http://localhost:3000", "https://apiconf.net"]
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes following Google ADK conventions
- Add tests for new functionality
- Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Submit a pull request
- Python: Follow PEP 8, use Black for formatting
- TypeScript: Use ESLint and Prettier
- Google ADK: Follow Google ADK conventions for agent development
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Phone: Check your
.env
file for the support phone number - Email: Check your
.env
file for the support email - Documentation: Visit
/docs
when the server is running - AI Assistant: Chat with Ndu directly through the application
- Real-time session updates via WebSockets
- Integration with conference registration system
- Multi-language support (Yoruba, Hausa, Igbo)
- Mobile app integration
- Advanced analytics and insights
- Integration with social media platforms
- Voice interface for Ndu
- Offline mode for basic functionality
Built with β€οΈ for the API Conference community in Nigeria
Meet Ndu - Your AI guide for API Conference Lagos 2025! π€β¨