De Zéro à Vertex AI Invoke Gemini en utilisant les Principes de l’IA Responsable
Ce tutoriel présente la procédure de déploiement d’une application FastAPI sur Google Cloud Run qui invoque les modèles Gemini via Vertex AI, tout en mettant en œuvre des principes d’IA responsable.
Introduction
Dans cet article, nous allons explorer comment configurer des filtres de sécurité pour quatre catégories de préjudices : contenu dangereux, harcèlement, discours de haine et contenu sexuellement explicite, avec des seuils de blocage stricts. Nous utiliserons Vellox comme adaptateur pour exécuter des applications ASGI dans Google Cloud Functions, et nous mettrons en place une authentification par jeton Bearer pour la sécurité. Le processus complet, y compris l’activation des services nécessaires de Google Cloud, la configuration des rôles IAM, et le déploiement de la fonction avec des variables d’environnement, sera détaillé.
Ce tutoriel met l’accent sur des mises en œuvre de sécurité pratiques en montrant comment Vertex AI filtre à la fois les entrées et les sorties, renvoyant une raison de « SAFETY » avec des évaluations de sécurité détaillées lorsque du contenu nuisible est détecté. Cela le rend particulièrement utile pour les développeurs souhaitant créer des applications d’IA avec modération de contenu intégrée et sécurité dès le départ.
Technologies Utilisées
Fonctions Cloud Run :
Les fonctions Cloud Run sont idéales lorsque vous devez réagir à des événements ou des déclencheurs HTTP rapidement, avec une configuration minimale — toute l’infrastructure est gérée pour vous. Vous travaillez avec des fonctions concises plutôt qu’avec des services complets.
Vellox :
Vellox est un adaptateur pour exécuter des applications ASGI dans GCP Cloud Functions.
HTTPBearer :
HTTPBearer dans FastAPI est un utilitaire de sécurité qui gère l’authentification par jeton Bearer, une méthode courante pour sécuriser les points de terminaison d’API. Il s’occupe de la présence et de l’extraction du jeton Bearer.
Étapes de Mise en Place
Configuration de l’Environnement de Développement
Utilisez devcontainer pour installer tout ce qui est nécessaire. Mettez en place Docker et DevContainer, et une fois le code récupéré, vous êtes prêt à démarrer.
Activer les Services
Pour la première utilisation, exécutez les commandes suivantes :
gcloud init
gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com run.googleapis.com logging.googleapis.com aiplatform.googleapis.com
Permissions IAM
Dans IAM, donnez le rôle de projet ‘roles/aiplatform.user’ au projet en cours.
Déploiement avec Variables d’Environnement
Utilisez la commande suivante pour déployer :
gcloud run deploy fastapi-func --source . --function handler --base-image python313 --region asia-south1 --set-env-vars API_TOKEN="damn-long-token",GOOGLE_GENAI_USE_VERTEXAI=True,GOOGLE_CLOUD_LOCATION=global --allow-unauthenticated
Cette commande déploie une fonction FastAPI nommée handler depuis votre dossier local, fonctionne sur Python 3.13, dans la région Mumbai (asia-south1), avec des variables d’environnement définies pour les jetons API et l’utilisation de Google Vertex AI. Elle est accessible au public (aucune authentification requise sauf celle définie pour Bearer).
Examen de main.py
Voici un exemple de code d’une application FastAPI GCP intégrant Google Gemini AI avec des filtres de contenu de sécurité :
import httpx, os, uuid
from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from vellox import Vellox
from pydantic import BaseModel
from typing import Optional
from google import genai
from pathlib import Path
from google.genai.types import (
GenerateContentConfig,
HarmCategory,
HarmBlockThreshold,
HttpOptions,
SafetySetting,
)
safety_settings = [
SafetySetting(
category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
),
SafetySetting(
category=HarmCategory.HARM_CATEGORY_HARASSMENT,
threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
),
SafetySetting(
category=HarmCategory.HARM_CATEGORY_HATE_SPEECH,
threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
),
SafetySetting(
category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
),
]
Dans cet exemple, safety_settings est défini comme une liste d’objets SafetySetting — chacun déclare une catégorie de préjudice et un seuil de blocage, couvrant le contenu dangereux, le harcèlement, le discours de haine et le contenu sexuellement explicite, avec un blocage strict pour tous. Ces catégories et seuils sont les mêmes que ceux documentés pour l’API Gemini ; les catégories non listées reviennent aux valeurs par défaut.
Pratiquement, ces paramètres filtrent à la fois les entrées et les sorties. Si le modèle juge que le contenu atteint ou dépasse le seuil, l’appel est bloqué (aucun texte renvoyé). Par défaut, Gemini utilise une méthode de blocage des préjudices sensible à la gravité dans Vertex AI; ce comportement peut être ajusté si nécessaire.
Pour plus de détails, consultez le code sur GitHub.