Exporter le code
Du bouton au fichier
Le bouton Get code d'AI Studio affiche le code qui rejoue exactement votre prototype (modèle, prompt système, exemples, réglages, schéma), en plusieurs langages : Python, JavaScript, REST (curl)…
flowchart LR A["Prototype AI Studio"] -->|"Get code"| B["Extrait Python brut"] B --> C["Nettoyage : clé lue dans .env, modèle en variable"] C --> D["Fonctions testables : build_config, build_contents"] D --> E["fiche_produit.py + tests"]
L'extrait généré est un bon point de départ, mais pas un programme fini : tout est dans une seule fonction, le texte de la description est en dur, et il n'y a ni test ni gestion d'erreurs. Le lab fiche_produit.py est cet extrait réorganisé :
| Dans AI Studio | Dans le code exporté | Dans le lab |
|---|---|---|
| choix du modèle | model="..." en dur | MODEL = os.environ.get("MODEL", "gemini-3.5-flash") |
| System instructions | system_instruction=[...] | constante SYSTEM_INSTRUCTION |
| tours d'exemple | liste contents | EXEMPLES + build_contents() |
| Run settings | GenerateContentConfig(...) | build_config() |
| Structured output | schéma genai.types.Schema(...) | classe Pydantic FicheProduit |
Installer et configurer
python3 -m venv .venv && source .venv/bin/activate # un environnement isolé
pip install -r requirements.txt # google-genai, pydantic, python-dotenv, pytest
cp .env.example .env # puis collez votre clé dans .envLe fichier .env ne contient qu'une ligne utile (les fichiers dont le nom commence par un point peuvent manquer dans certains téléchargements : créez-le alors à la main) :
GEMINI_API_KEY=votre-cle-ai-studio-iciUn environnement virtuel (venv) est un dossier qui contient les bibliothèques d'un seul projet, pour ne pas mélanger les versions entre projets. Le paquet google-genai est le SDK officiel (Software Development Kit, la bibliothèque cliente) de l'API Gemini.
Le cœur du script
def rediger_fiche(client, description: str, essais: int = 4) -> FicheProduit:
"""Appelle Gemini et renvoie une fiche validée. Réessaie sur 429 / 5xx."""
description = description.strip()
if not description:
raise ValueError("Description vide")
for essai in range(essais):
try:
response = client.models.generate_content(
model=MODEL, contents=build_contents(description), config=build_config())
return FicheProduit.model_validate_json(response.text)
except errors.APIError as e:
if e.code not in (429, 500, 503) or essai == essais - 1:
raise
time.sleep(2 ** essai * 5) # 5 s, 10 s, 20 sEt dans main() : load_dotenv() charge le fichier .env, puis genai.Client() trouve tout seul la variable GEMINI_API_KEY. Aucune clé n'apparaît dans le code.
Que fait genai.Client() sans argument ?
Le SDK cherche la clé dans l'environnement. load_dotenv() y a copié le contenu du fichier .env juste avant.
Pourquoi le nom du modèle vient-il d'une variable d'environnement MODEL ?
Les modèles évoluent vite. Un paramètre externe permet de comparer ou de migrer en changeant une ligne du .env, avec un défaut raisonnable dans le code.
Résultat obtenu
Exécution réelle du lab le 2026-10-15 sur une description (extrait) :
python fiche_produit.py "Gourde isotherme 500 ml, inox, garde le froid 24 h et le chaud 12 h, bouchon anti-fuite"[
{
"titre": "Gourde isotherme en inox 500 ml avec bouchon anti-fuite",
"accroche": "Emportez vos boissons chaudes ou froides partout avec vous en toute sérénité.",
"description": "Fabriquée en inox, cette gourde isotherme de 500 ml conserve vos boissons au chaud pendant 12 heures et au froid pendant 24 heures. Son bouchon anti-fuite vous assure un transport sans risque au quotidien.",
...
}
]Exercice
Ajoutez une option --modele à la ligne de commande, qui remplace MODEL pour cette exécution seulement. Quelles lignes modifier ?
Voir la solution
parser.add_argument("--modele", help="nom du modèle, remplace MODEL")
args = parser.parse_args(argv)
if args.modele:
global MODEL
MODEL = args.modeleLa déclaration global MODEL doit être la première instruction de main() qui mentionne MODEL (placez-la en tête de fonction). Plus propre encore : passer model en paramètre de rediger_fiche. Pour un script de cette taille, la variable d'environnement (MODEL=gemini-3.5-flash-lite python fiche_produit.py ...) suffit souvent.
Je sais faire
- Récupérer le code d'un prototype avec Get code
- Créer un environnement virtuel et installer
google-genai - Faire lire la clé depuis
.envsans l'écrire dans le code - Réorganiser l'extrait en fonctions testables