Un template completo e production-ready per progetti di Generative AI con supporto multi-provider (AWS Bedrock, OpenAI, Google Gemini).
- AWS Bedrock - Claude, Titan, Jurassic models
- OpenAI - GPT-4, GPT-3.5-turbo, e altri
- Google Gemini - Gemini Pro, Gemini Pro Vision
- FastAPI backend con API REST async
- Streamlit dashboard interattiva
- CLI per automazione e batch processing
- Docker per deployment containerizzato
- β Interfaccia unificata per tutti i provider
- β Batch processing asincrono
- β Monitoring e logging strutturato
- β Test completi (unit + integration)
- β Configurazione basata su environment
- β Health checks e metriche
- β Gestione errori robusta
- Python 3.11+
- Cookiecutter
- API keys per i provider che vuoi utilizzare:
- OpenAI API key
- Google Gemini API key
- AWS credentials configurate (per Bedrock)
# Installa cookiecutter se non ce l'hai
pip install cookiecutter
# Genera il progetto dal template
cookiecutter https://github.com/your-username/genai-template
# Rispondi alle domande del template# Naviga nella directory del progetto
cd your-project-name
# Crea ambiente virtuale
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Installa dipendenze
pip install -r requirements.txt# Copia il file di configurazione
cp .env.example .env
# Modifica .env con le tue API keys
nano .envEsempio di configurazione .env:
# OpenAI Configuration
OPENAI_API_KEY=sk-your-openai-key-here
# Google Gemini Configuration
GEMINI_API_KEY=your-gemini-key-here
# AWS Configuration (usa ~/.aws/credentials)
AWS_REGION=us-east-1
AWS_PROFILE=default
# Application Settings
LOG_LEVEL=INFO
MAX_TOKENS=1000
TEMPERATURE=0.7# Verifica i provider disponibili
python -m your_project.cli providers
# Genera testo con OpenAI
python -m your_project.cli generate \
--provider openai \
--prompt "Spiega l'intelligenza artificiale in 100 parole"
# Avvia l'API server
uvicorn your_project.api.main:app --reload
# Avvia la dashboard Streamlit
streamlit run your_project/ui/dashboard.py# Lista tutti i comandi disponibili
your-project --help
# Visualizza provider e modelli disponibili
your-project providers
your-project models openai
# Generazione testo
your-project generate \
--provider openai \
--model gpt-4 \
--prompt "Your prompt here" \
--max-tokens 500 \
--temperature 0.7
# Chat interattiva
your-project chat --provider gemini --system "You are a helpful assistant"
# Batch processing
your-project batch \
--provider bedrock \
--input prompts.txt \
--output results.json \
--concurrent 5# Avvia il server
uvicorn your_project.api.main:app --host 0.0.0.0 --port 8000
# Documentazione interattiva disponibile su:
# http://localhost:8000/docsEsempi di chiamate API:
# Health check
curl http://localhost:8000/health
# Generazione testo
curl -X POST "http://localhost:8000/generate" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Explain quantum computing",
"provider": "openai",
"model": "gpt-4",
"max_tokens": 200
}'
# Chat completion
curl -X POST "http://localhost:8000/chat" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "Hello!"}
],
"provider": "gemini"
}'# Avvia la dashboard
streamlit run your_project/ui/dashboard.py
# Accedi a http://localhost:8501FunzionalitΓ della dashboard:
- π¬ Chat interattiva con tutti i provider
- π Generazione testi con parametri personalizzabili
- π Batch processing con upload file
- π Analytics e statistiche d'uso
- βοΈ Configurazione provider in tempo reale
# Build dell'immagine
docker build -t your-project .
# Run del container
docker run -p 8000:8000 --env-file .env your-project
# Oppure usa docker-compose per tutti i servizi
docker-compose upIl docker-compose.yml include:
- API server (FastAPI)
- Dashboard UI (Streamlit)
- Prometheus (metriche)
- Grafana (monitoring)
# Installa dipendenze di sviluppo
pip install -r requirements-dev.txt
# Esegui tutti i test
pytest
# Test con coverage
pytest --cov=your_project --cov-report=html
# Test specifici
pytest tests/unit/
pytest tests/integration/your-project/
βββ π your_project/
β βββ π providers/ # Implementazioni LLM
β β βββ base.py # Interfaccia base
β β βββ openai_provider.py
β β βββ bedrock_provider.py
β β βββ gemini_provider.py
β βββ π api/ # FastAPI backend
β β βββ main.py
β βββ π cli/ # Command line interface
β β βββ main.py
β βββ π ui/ # Streamlit dashboard
β β βββ dashboard.py
β βββ client.py # Client unificato
β βββ config.py # Configurazione
β βββ models.py # Modelli Pydantic
βββ π tests/ # Test suite
β βββ unit/
β βββ integration/
βββ π³ Dockerfile
βββ βοΈ docker-compose.yml
βββ π requirements.txt
βββ π README.md
- Crea una nuova classe in
providers/:
from .base import BaseProvider
class MyCustomProvider(BaseProvider):
def __init__(self, api_key: str):
self.api_key = api_key
async def generate(self, prompt: str, **kwargs):
# Implementa la logica del provider
pass- Registra il provider in
client.py - Aggiungi la configurazione in
config.py - Aggiorna i test
Aggiungi nuovi endpoint in api/main.py:
@app.post("/custom-endpoint")
async def custom_endpoint(request: CustomRequest):
# Implementa la logica
passIl template include monitoring integrato:
- Structured Logging con structlog
- Metriche Prometheus per API calls, latenza, errori
- Health Checks per tutti i provider
- Dashboard Grafana (via docker-compose)
- Fork il repository
- Crea un feature branch (
git checkout -b feature/amazing-feature) - Commit le modifiche (
git commit -m 'Add amazing feature') - Push al branch (
git push origin feature/amazing-feature) - Apri una Pull Request
Questo progetto Γ¨ rilasciato sotto licenza MIT. Vedi il file LICENSE per i dettagli.
- π Documentazione completa
- π Segnala un bug
- π‘ Richiedi una feature
- π¬ Discussioni
Questo template Γ¨ perfetto per:
- π€ Chatbot multi-provider con fallback automatico
- π Content generation pipeline per marketing
- π A/B testing tra diversi modelli LLM
- π Batch processing di grandi volumi di testo
- π― Prototipazione rapida di applicazioni GenAI
- π’ Applicazioni enterprise con requisiti di scalabilitΓ
- FastAPI per l'eccellente framework web
- Streamlit per la dashboard interattiva
- Cookiecutter per il sistema di templating
- La community open source per le librerie utilizzate
β Se questo template ti Γ¨ utile, lascia una stella su GitHub! β
