Gemini 2.5 â Introduction (dev web)
Survole et clique une rubrique pour ouvrir le guide détaillé.
1) Quâest-ce que Gemini 2.5 ?
Gemini 2.5 est un LLM multimodal natif opĂ©rĂ© via Vertex AI (texte, image, audio, parfois vidĂ©o). ModĂšle probabiliste de type Transformer : il prĂ©dit des tokens (pas de âcomprĂ©hensionâ humaine).
Ce que ça change pour un dev
- Familles :
gemini-2.5-pro(qualitĂ©),âŠ-flash(latence/coĂ»t), variantes multi-rĂ©gions. - Multimodal en E/S ; tools (function calling), RAG/Grounding natifs Vertex.
- Sortie typée :
response_mime_type=application/json+response_schema. - ContrĂŽles :
generation_config(température, top-p, max tokens, stop),safety_settings. - Gouvernance : IAM, régions, journaux, Secret Manager, moindre privilÚge.
SDK Python (init + JSON structuré)
import os, vertexai
from vertexai.generative_models import GenerativeModel, GenerationConfig, ResponseSchema
vertexai.init(project=os.getenv("GCP_PROJECT"), location=os.getenv("GCP_REGION","us-central1"))
model = GenerativeModel(os.getenv("GEMINI_MODEL","gemini-2.5-pro"))
schema = ResponseSchema(type="object", properties={
"bullets":{"type":"array","items":{"type":"string"}},
"risks":{"type":"array","items":{"type":"string"}}
}, required=["bullets"])
cfg = GenerationConfig(temperature=0.2, top_p=0.9, max_output_tokens=800,
response_mime_type="application/json", response_schema=schema)
res = model.generate_content("Donne 3 atouts + 3 risques pour un projet web.", generation_config=cfg)
print(res.text)SDK JS (Node minimal)
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: process.env.GEMINI_MODEL || "gemini-2.5-pro" });
const { response } = await model.generateContent([{text:"3 cas d'usage dev web avec valeur business"}]);
console.log(response.text());Astuce : logge prompt, paramÚtres et sortie pour audit/coût.
MĂ©mo : la mĂ©moire âlong termeâ se reconstruit cĂŽtĂ© app (DB + vector store + RAG).
2) Pourquoi dans le dev web ?
10 tĂąches Ă fort ROI pour un dev web
- Scaffold Django/React (modĂšles, vues, routes, tests, CI).
- CRUD + formulaires + validations réutilisables.
- Ăcriture de tests (unitaires/feature) Ă partir de specs.
- Migration SQL â ORM (modĂšles, migrations, fixtures).
- Refactor sécurisé (diff unifié + plan de tests).
- Parsing/Transformation (CSV/JSON/HTML) + schémas.
- Doc technique / ADR automatisés.
- GĂ©nĂ©ration dâAPI clients (Python/TS) depuis OpenAPI.
- RĂ©daction de jobs (cron/scheduler) et scripts dâops.
- Exploration dâerreurs : stack traces + patch minimal.
Patron âScaffold Djangoâ
RĂLE: Architecte Vertex AI
OBJECTIF: App "blog" (Model Article + Admin + ListView + CreateView + URLs + Templates)
CONTRAINTES:
- Chemins & noms exacts
- TOUTE modif existante = diff unifié
- †120 lignes par bloc (sinon STOP + "CONTINUER ?")
SORTIE: étapes + code + commandes manage.py + testsSortie structurée (le back applique)
from vertexai.generative_models import GenerationConfig, ResponseSchema
schema = ResponseSchema(type="object", properties={
"files":{"type":"array","items":{"type":"object","properties":{
"path":{"type":"string"}, "action":{"type":"string","enum":["create","patch"]},
"content":{"type":"string"}}}}, "commands":{"type":"array","items":{"type":"string"}}
}, required=["files"])
cfg = GenerationConfig(response_mime_type="application/json", response_schema=schema)Le backend parse et applique (sécurisé + traçable + idempotent).
3) Limites & contournements
Limites typiques
- Hallucinations (faits inventés, code non testable).
- Contexte (fenĂȘtre finie, dĂ©rive de conversation).
- Coût/latence (contexte verbeux, décodage long).
- Confidentialité (prompts/logs), quotas (429/5xx).
Mitigations concrĂštes
- Exiger preuves : tests, commandes, diff unifié, chemins exacts.
- RAG + Grounding (Vertex AI Search) avec citations requises.
- Sortie JSON validée par schema (cf. M2), refuser si invalide.
- RĂ©sumĂ© dâĂ©tat + âresetâ rĂ©gulier du fil (mĂ©moire cĂŽtĂ© DB).
Fiabilité & opérations
- Retries à backoff exponentiel, idempotence cÎté serveur.
- Budget tokens par requĂȘte,
max_output_tokens, cache de rĂ©ponses stables. - ObservabilitĂ© : latence p95, tokens in/out, coĂ»t, taux âincertainâ.
- RGPD : Secret Manager, masquage logs, choix de région, IAM minimal.
4) Prompting (patrons)
Patrons prĂȘts Ă lâemploi
A) ONE-FILE PATCH (diff)
RĂLE: IngĂ©nieur Python senior
OBJECTIF: Corriger la fonction X
CONTRAINTES: Donne un DIFF UNIFIĂ + tests unitaires
SORTIE: diff, nouveaux tests, commande pytestB) MIGRATION SQL â ORM
RĂLE: DBA Django
ENTRĂE: DDL SQL + contraintes
SORTIE: models.py, migration, tests, commandes manage.pyC) BUG â REPRO + FIX
RĂLE: DĂ©v Full-stack
ENTRĂE: trace + snippet
SORTIE: étapes de repro, cause racine, patch (diff), testParamÚtres & garde-fous
temperature0â0.3 (code) ; 0.7 (idĂ©ation).system_instruction= charte (format, ton, refus si incertain).- Limiter Ă 120 lignes/bloc ; pause + validation au-delĂ .
- Imposer chemins de fichiers + âsi modif â diff unifiĂ©â.
Sortie fortement typée (schema)
from vertexai.generative_models import GenerationConfig, ResponseSchema
schema = ResponseSchema(type="object", properties={
"summary":{"type":"string"},
"todos":{"type":"array","items":{"type":"string"}},
"patch":{"type":"string","description":"Diff unifié si modif"}}, required=["todos"])
cfg = GenerationConfig(response_mime_type="application/json", response_schema=schema)5) Exemples concrets (SDK, streaming, tools)
Streaming (Python)
from vertexai.generative_models import GenerativeModel
model = GenerativeModel("gemini-2.5-pro")
for chunk in model.generate_content("Explique le pattern Repository en Django.", stream=True):
print(chunk.text or "", end="")Function Calling (tools)
from vertexai.generative_models import GenerativeModel, Tool, FunctionDeclaration
tool = Tool(function_declarations=[FunctionDeclaration(
name="lookup_doc",
description="Recherche interne",
parameters={"type":"object","properties":{"query":{"type":"string"}},"required":["query"]}
)])
model = GenerativeModel("gemini-2.5-pro")
resp = model.generate_content("Trouve la politique RGPD résumée.", tools=[tool])
# Parcours des tool_calls â exĂ©cuter lookup_doc cĂŽtĂ© back â renvoyer la rĂ©ponse au modĂšle si nĂ©cessaireJavaScript (gĂ©nĂ©ration simple)
const model = genAI.getGenerativeModel({ model: "gemini-2.5-pro" });
const { response } = await model.generateContent([{text:"Donne un exemple de route Express."}]);
console.log(response.text());Robustesse
- Timeouts â retry + backoff exponentiel.
- Journaliser prompt, params, latence, tokens, coût.
- Limiter output (stop_sequences) pour éviter les dérives.
6) Architecture dâassistant (Vertex AI)
RĂ©fĂ©rence dâarchitecture
Client (Web/CLI)
â Backend (FastAPI/Django) : orchestrateur, validation, IAM
â Gemini 2.5 (Vertex AI) : prompts + tools
â Tools managĂ©s : code-interpreter, web, retrieval
â RAG : Vertex AI Search & Grounding (BigQuery, GCS, sites)
â Stores : Cloud SQL / Firestore / GCS / Matching Engine (vecteurs)
â ObservabilitĂ© : Cloud Logging, Error Reporting, MetricsOps
- Cloud Run/Functions, CI Cloud Build, jobs Scheduler.
- Service Accounts dédiés, rÎles IAM minimaux.
- Secrets via GCP Secret Manager (clés API/DSN DB).
RAG & Grounding
- Indexer docs/code â Data Store (Search).
- Rechercher top-k + citations.
- Injecter contexte au prompt + demander sources.
Qualité & métriques
- Latence p95, tokens, coĂ»t, % rĂ©ponses âincertainesâ.
- Jeux dâĂ©valuation (coverage/groundedness/consistency).
- Alertes : 5xx, over-quota, dérive de coût.
7) Check-list projets longs
Discipline projet
- 1 issue = 1 conversation, rĂ©sumĂ© dâĂ©tat au dĂ©but.
- Charte de sortie (JSON/diff), preuves (tests/grep).
- Revue humaine obligatoire avant merge (jamais auto-merge).
Mémoire & contexte
- Journal DB des décisions (ADR), versions, env.
- Segmenter en âchapitresâ + reset rĂ©gulier.
Coûts & perfs
- Choisir Pro vs Flash selon qualité/latence.
- Limiter tokens, factoriser prompts communs, cache.
- Mesurer la valeur : temps gagné, défauts évités, coût.
Risques majeurs
- Vendor lock-in â couche dâabstraction + tests cross-models.
- RGPD â anonymisation, minimisation, journalisation.
8) Prochaines briques
- Pages dédiées : SDK Python/JS, Agents & Tools, RAG & Search/Grounding, Ops (Run/Build/Functions).
- Basculer cette page en contenu DB (mĂȘme modĂšle que ChatGPT) + import JSON (cron).
- Matrice dâĂ©valuation (groundedness/coverage/latence/coĂ»ts) pilotĂ©e par tests.
- Starter Cloud Run : FastAPI + Vertex AI + RAG + CI Cloud Build.
Mémo GCP
gcloud config set project <ID_PROJET>
gcloud auth application-default login
gcloud run deploy gemini-app --source . --region=us-central1 --allow-unauthenticated