Section 12.3.4 : Cloud Functions Python et scheduling
🎯 Objectif pédagogique
Déployer des Cloud Functions Python (Google Cloud) pour exécuter du code à la demande ou sur un schedule : ETL custom, enrichissement IA, alertes automatiques.
Cloud Functions : du Python dans le cloud
Les Cloud Functions sont des morceaux de code qui s'exécutent dans le cloud sans serveur à gérer. Idéal pour :
- →Traitement de données planifié (chaque matin à 8h)
- →Webhooks (répondre à un événement)
- →ETL custom (extraction/transformation de données)
- →Enrichissement IA (appeler GPT sur un dataset)
Exemple : enrichissement IA planifié
import functions_framework
from google.cloud import bigquery
from openai import OpenAI
import os
client_bq = bigquery.Client()
client_ai = OpenAI(api_key=os.environ['OPENAI_API_KEY'])
@functions_framework.http
def enrich_leads(request):
"""Enrichit les leads non qualifiés avec GPT."""
# 1. Récupérer les leads non enrichis
query = """
SELECT id, company, industry, website
FROM analytics.leads
WHERE ai_summary IS NULL
LIMIT 50
"""
leads = list(client_bq.query(query))
# 2. Enrichir chaque lead avec GPT
for lead in leads:
prompt = f"""
Analyse cette entreprise et produis un résumé de 2 lignes
sur son potentiel comme client pour une solution IA B2B.
Entreprise: {lead.company}
Secteur: {lead.industry}
Site: {lead.website}
"""
response = client_ai.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
max_tokens=100
)
summary = response.choices[0].message.content
# 3. Mettre à jour BigQuery
update = f"""
UPDATE analytics.leads
SET ai_summary = '{summary.replace("'", "''")}'
WHERE id = {lead.id}
"""
client_bq.query(update)
return f"Enriched {len(leads)} leads"
Déploiement et scheduling
# Déployer la Cloud Function
gcloud functions deploy enrich_leads \
--runtime python312 \
--trigger-http \
--set-env-vars OPENAI_API_KEY=sk-xxx
# Planifier l'exécution quotidienne (Cloud Scheduler)
gcloud scheduler jobs create http enrich-daily \
--schedule "0 8 * * *" \
--uri "https://REGION-PROJECT.cloudfunctions.net/enrich_leads" \
--http-method GET
Quel est l'avantage principal des Cloud Functions pour le traitement de données ?
Apprendre l’IA, du premier prompt aux agents