Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Firebase Studio: creazione di un backend in Python

Sfruttiamo gli strumenti AI di Firebase Studio e il vibe coding per la creazione di un backend in linguaggio Python
Sfruttiamo gli strumenti AI di Firebase Studio e il vibe coding per la creazione di un backend in linguaggio Python
Link copiato negli appunti

A titolo di esempio, dopo l'introduzione della lezione precedente, procediamo alla creazione di backend in linguaggio Python con Firebase Studio. Il caso sarà utile per vedere come si può realizzare velocemente un motore server in uno dei linguaggi più apprezzati ed usati del web ma anche per sperimentare con mano quanto il vibe coding possa essere impiegato anche in questo settore. Il nostro scopo sarà ancora non tanto la creazione del backend in sé stesso, quanto saggiare la maturità del dispositivo di Firebase Studio per la traduzione di comandi in linguaggio naturale in codice passando per il prompt.

Impostazione del progetto

Partiamo dall'home page di Firebase Studio e clicchiamo sull'immagine riportante il logo del linguaggio Python e l'etichetta Python Flask:

Figura 1. Avviare un'applicazione Python Flask

Avviare un'applicazione Python Flask

Alla richiesta delle caratteristiche di base del progetto richiediamo un template per server API, con pip come package manager e nome FirstAPIServer:

Impostazioni del progetto

Impostazioni del progetto

La struttura del progetto che viene approntata riguarda le parti principali di un progetto Flask:

  • una pagina main.py che contiene un codice di base per l'avvio del server e l'esecuzione di un metodo di test hello world:
    import os
    from flask import Flask
    app = Flask(__name__)
    @app.route("/")
    def hello_world():
      """Example Hello World route."""
      name = os.environ.get("NAME", "World")
      return f"Hello {name}!"
    if __name__ == "__main__":
      app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 3000)))
  • una cartella .idx per l'organizzazione del progetto;
  • un virtual environment Python per la gestione isolata delle dipendenze nonché il file requirements.txt per la gestione delle stesse;
  • un file devserver.sh finalizzato all'avvio di un server di test. Contiene essenzialmente due righe che consistono nell'attivazione dell'ambiente virtuale e nell'avvio di un server flask in locale.

Creazione di metodi con l'Intelligenza Artificiale

Arriviamo al punto di maggior novità: facciamoci aiutare da Gemini, l'AI di Google, a creare un nuovo metodo che permetta di ottenere l'ora esatta di uno specifico fuso orario..

La nostra richiesta nel prompt a supporto è la seguente: aggiungi un metodo al server che fornisca l'ora esatta relativa al fuso orario che indico.

Subito Firebase Studio si mette al lavoro e attua delle azioni proponendo la modifica e chiedendo la nostra approvazione. Proporrà infatti il permesso di aggiungere tra le dipendenze la libreria pytz con cui ha deciso di gestire le timezone e di modificare il programma per l'apparizione di un metodo che, nel nostro caso, sarà:

@app.route("/time")
def get_time():
  """Returns the current time in a specified timezone."""
  timezone_name = request.args.get('tz')
  if not timezone_name:
    return "'tz' parameter is required", 400
  try:
    tz = pytz.timezone(timezone_name)
    now = datetime.now(tz)
    return now.strftime("%Y-%m-%d %H:%M:%S %Z")
  except pytz.UnknownTimeZoneError:
    return "Invalid timezone", 400

Ha scelto di creare un metodo collegato all'URL /time che ottiene mediante l'argomento in querystring tz il fuso orario di riferimento (scelta saggia in quanto questo contiene uno slash che verrebbe confuso con una porzione di URL stesso).

Il server sarà lanciato anche in esecuzione e potremo sfruttare il prompt di Gemini anche per farci aiutare nella prova del codice. Ad esempio, chiedendo forniscimi una riga di test per richiedere l'ora attuale a New York otterremo come risposta il comando:

curl "http://localhost:5000/time?tz=America/New_York"

con, in sovrimpressione, dei pulsanti per la copia del comando (da provare nel terminale che appare al di sotto del codice) o la diretta esecuzione da parte di Firebase Studio.

Incaricando direttamente il nostro ambiente di eseguire il comando ne otterremo i risultati direttamente nel terminale senza digitare nulla. Nel caso dell'esempio che abbiamo svolto ci ha indicato l'ora corrente nella città di New York.

Come comportarci con il prompt?

Anche in questo caso il test ci ha dimostrato che il prompt è in grado di eseguire correttamente i comandi che inviamo ma ha messo anche in evidenza punti salienti che devono essere attuati nel vibe coding. Innanzitutto, non temiamo di "disturbare" il motore AI che abbiamo a disposizione. Teniamo sempre presente che esso è messo lì per darci il massimo supporto. Ad esempio, in prima battuta ci ha proposto comandi curl sulla porta 3000 mentre il nostro server era in esecuzione sulla 5000.

Si sarebbe semplicemente trattato di copiarli e modificarli ma non è necessario: basta ricordare a Gemini da ora fornisci tutti i comandi di test come chiamate alla porta 5000 e da lì in poi verranno aggiornati tutti gli esempi proposti per poter essere così direttamente eseguiti con un click. Non si tratta di pigrizia nostra ma di accompagnare correttamente l'assistente nel suo lavoro di supporto al nostro progetto: non stiamo facendo altro che aiutarlo a lavorare meglio.

Qualora, a seguito delle modifiche, fosse necessario arrestare, riavviare o aggiornare l'ambiente possiamo anche in questo caso fare riferimento a Gemini che, da come abbiamo sperimentato, non solo ci offre i comandi da eseguire ma ci supporta anche nella gestione di eventuali errori.

Anche l'output stesso, che viene prodotto sia con errori sia corretto, può essere nuovamente passato al prompt che sarà sempre in grado di interpretarlo ed illustrarcelo. Il suo primo "istinto", come ogni assistente AI, sarà quello di fornirci spiegazioni sul contenuto che gli abbiamo passato.

Se vuoi aggiornamenti su Firebase Studio: creazione di un backend in Python inserisci la tua email nel box qui sotto:

Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.

Ti consigliamo anche