درس 3 — Maîtriser l'appel

Configurer l'appel : instructions, température, tokens

4 دقائق قراءة

هذا المحتوى غير مترجم بعد. تُعرض النسخة الأصلية.

Configurer l'appel : instructions, température, tokens

Un objet pour tous les réglages

Tous les réglages passent par un seul paramètre, config, de type types.GenerateContentConfig :

flowchart LR
  C["GenerateContentConfig"] --> S["system_instruction : rôle et règles"]
  C --> T["temperature / top_p : échantillonnage"]
  C --> M["max_output_tokens : plafond de sortie"]
  C --> K["thinking_config : effort de réflexion"]
  C --> J["response_mime_type + response_schema : JSON"]
RéglageRôleValeur dans l'assistant de réunion
system_instructionrôle, ton, interdits, envoyé à chaque requête« Tu n'inventes ni décision, ni responsable, ni date »
temperaturepart de hasard du tiragenon envoyée par défaut (voir l'avertissement)
max_output_tokensplafond de tokens produits, pensée comprise4096
thinking_configeffort de réflexion (low, medium, high…)défaut du modèle
response_schemaformat JSON imposéCompteRendu (leçon projet)
files/reunion.py
SYSTEM_INSTRUCTION = """Tu es l'assistant de réunion d'une équipe.
On te donne la transcription d'une réunion. Tu réponds en français, de façon factuelle.
Tu n'inventes ni décision, ni responsable, ni date : si l'information n'est pas dans
la transcription, écris « non précisé »."""

def config(**extra) -> types.GenerateContentConfig:
    if os.environ.get("TEMPERATURE"):
        extra["temperature"] = float(os.environ["TEMPERATURE"])
    return types.GenerateContentConfig(
        system_instruction=SYSTEM_INSTRUCTION,
        max_output_tokens=4096,   # plafond de la réponse (pensée comprise)
        **extra,
    )

**extra permet à chaque commande d'ajouter ses propres réglages (le schéma JSON pour resume) sans dupliquer le reste.

max_output_tokens et la réflexion

Les modèles récents réfléchissent avant d'écrire, et ces tokens de pensée comptent dans max_output_tokens. Un plafond trop bas peut donc être épuisé avant le premier mot.

essai.py
r = client.models.generate_content(
    model="gemini-3.5-flash", contents="Explique la photosynthèse.",
    config=types.GenerateContentConfig(max_output_tokens=20))
print(r.candidates[0].finish_reason, r.text)

Pour réduire la réflexion (et le coût) sur une tâche simple, on règle thinking_level :

essai.py
config = types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(thinking_level="low"))

Avec max_output_tokens=20, la réponse est vide et finish_reason vaut MAX_TOKENS. Pourquoi ?

Où mettre la règle « n'invente aucune date » ?

Résultat obtenu

Trois essais réels du 2026-10-15 avec gemini-3.5-flash :

sortie
max_output_tokens=20                    -> finish=MAX_TOKENS text=None
max_output_tokens=300, thinking=low     -> finish=MAX_TOKENS, 11 tokens de texte, 285 de pensée
                                           'La **photosynthèse** est le processus biologique qui'
résumé d'une phrase, thinking par défaut -> pensée=535 tokens, réponse=22 tokens
résumé d'une phrase, thinking=low        -> pensée=364 tokens, réponse=20 tokens

Même en low, la réflexion reste dominante sur une petite tâche, et elle varie d'un appel à l'autre. Le niveau de réflexion est un levier de coût réel, à mesurer sur vos propres requêtes (leçon suivante).

Exercice

Ajoutez à l'assistant une variable d'environnement THINKING (par exemple low) qui, si elle est définie, règle le niveau de réflexion dans config().

Voir la solution
files/reunion.py (dans config)
    if os.environ.get("THINKING"):
        extra["thinking_config"] = types.ThinkingConfig(
            thinking_level=os.environ["THINKING"])

Même logique que TEMPERATURE : rien n'est envoyé par défaut, le modèle garde son comportement standard. Attention, thinking_level concerne les modèles Gemini 3 ; les modèles 2.5 utilisent thinking_budget (un nombre de tokens).

Je sais faire

  • Construire un GenerateContentConfig avec instruction système et plafond de tokens
  • Savoir quand ne pas envoyer temperature
  • Expliquer pourquoi la pensée peut vider max_output_tokens
  • Régler thinking_level pour réduire la réflexion
التالي