Skip to content

anespo/genai-template

Repository files navigation

πŸ€– GenAI Template

License: MIT Python 3.11+ Cookiecutter

Un template completo e production-ready per progetti di Generative AI con supporto multi-provider (AWS Bedrock, OpenAI, Google Gemini).

GenAI Template Architecture

πŸš€ Caratteristiche

πŸ”— Multi-Provider Support

  • AWS Bedrock - Claude, Titan, Jurassic models
  • OpenAI - GPT-4, GPT-3.5-turbo, e altri
  • Google Gemini - Gemini Pro, Gemini Pro Vision

πŸ—οΈ Architettura Completa

  • FastAPI backend con API REST async
  • Streamlit dashboard interattiva
  • CLI per automazione e batch processing
  • Docker per deployment containerizzato

πŸ› οΈ FunzionalitΓ  Avanzate

  • βœ… 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

πŸ“‹ Prerequisiti

  • Python 3.11+
  • Cookiecutter
  • API keys per i provider che vuoi utilizzare:
    • OpenAI API key
    • Google Gemini API key
    • AWS credentials configurate (per Bedrock)

πŸš€ Quick Start

1. Genera il progetto

# 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

2. Setup dell'ambiente

# 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

3. Configurazione

# Copia il file di configurazione
cp .env.example .env

# Modifica .env con le tue API keys
nano .env

Esempio 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

4. Test rapido

# 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

πŸ“– Documentazione Completa

πŸ–₯️ Command Line Interface (CLI)

# 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

🌐 API REST (FastAPI)

# Avvia il server
uvicorn your_project.api.main:app --host 0.0.0.0 --port 8000

# Documentazione interattiva disponibile su:
# http://localhost:8000/docs

Esempi 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"
     }'

🎨 Dashboard Streamlit

# Avvia la dashboard
streamlit run your_project/ui/dashboard.py

# Accedi a http://localhost:8501

FunzionalitΓ  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

🐳 Docker Deployment

# 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 up

Il docker-compose.yml include:

  • API server (FastAPI)
  • Dashboard UI (Streamlit)
  • Prometheus (metriche)
  • Grafana (monitoring)

πŸ§ͺ Testing

# 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/

πŸ—οΈ Architettura del Progetto

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

πŸ”§ Personalizzazione

Aggiungere un nuovo provider LLM

  1. 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
  1. Registra il provider in client.py
  2. Aggiungi la configurazione in config.py
  3. Aggiorna i test

Estendere l'API

Aggiungi nuovi endpoint in api/main.py:

@app.post("/custom-endpoint")
async def custom_endpoint(request: CustomRequest):
    # Implementa la logica
    pass

πŸ“Š Monitoring e Logging

Il 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)

🀝 Contributing

  1. Fork il repository
  2. Crea un feature branch (git checkout -b feature/amazing-feature)
  3. Commit le modifiche (git commit -m 'Add amazing feature')
  4. Push al branch (git push origin feature/amazing-feature)
  5. Apri una Pull Request

πŸ“„ License

Questo progetto Γ¨ rilasciato sotto licenza MIT. Vedi il file LICENSE per i dettagli.

πŸ†˜ Support

🌟 Use Cases

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Γ 

πŸ™ Acknowledgments

  • 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! ⭐

About

No description or website provided.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 2

  •  
  •