Accueil / Articles / Notes pratiques : Ce que j’ai appris sur l’envoi d’un agent IA de production via Google

Notes pratiques : Ce que j’ai appris sur l’envoi d’un agent IA de production via Google

Guide pratique pas à pas : Ce que j’ai appris sur l’envoi d’un agent IA de production avec Google, y compris les contrats, les vérifications et les emplacements prévus pour le code destinés aux équipes utilisant ce modèle.

1976 mots

Utilisez ceci comme une version révisée destinée aux opérateurs des idées présentées dans « Ce que j’ai appris en expédiant un agent IA de production avec l’appel de fonction Gemini de Google » : étapes claires, emplacements de code ordonnés et notes de récupération permettant de surmonter les transferts de tâches. L’étape « Aperçu » fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un enregistrement exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Nommez les artefacts, définez des vérifications de succès et refusez toute complétion partielle silencieuse.

1. Déclarations de fonction : considérez-les comme un contrat API avec le modèle

Pour l’étape de déclaration des fonctions, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des jetons ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce du coût évite les factures inattendues lorsque le parcours passe d’un environnement de démonstration à des environnements partagés. Séparez la construction du client de la boucle de messages afin que les fournisseurs puissent être remplacés sans avoir à réécrire la machine à états de la conversation.

// ❌ Vague — model won’t know when to use it
{ name: ‘get_data’, description: ‘Gets data about a location.’ }
// ✅ Trigger-specific — model knows exactly when this is relevant
{
 name: ‘find_backup_spots’,
 description: ‘Finds nearby indoor/covered alternatives within walking distance ‘
 + ‘if the venue is crowded or weather turns.’,
}
{
 name: ‘calculate_transit_route’,
 description: ‘Calculates precise walking/driving/transit travel times to the venue.’,
 parameters: {
 type: ‘OBJECT’,
 properties: {}, // No parameters — dispatcher injects from context
 },
}

2. La boucle d’outil à plusieurs tours : une machine à états, pas une seule appel

Pour l’étape « The Multi-Turn Tool », définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Séparez la construction du client du cycle de messages afin que les fournisseurs puissent être remplacés sans avoir à réécrire la machine à états de la conversation.

Turn 0: [user prompt + system instructions]
 → Model returns: functionCall { name: “tool_a”, args: {…} }
Turn 1: [user prompt, model’s functionCall, your functionResponse for tool_a]
 → Model returns: text response (synthesized from tool_a’s output)
Turn 0: [user prompt]
 → Model returns: functionCall { name: “tool_a”, args: {…} }
Turn 1: [user prompt, functionCall_a, functionResponse_a]
 → Model returns: functionCall { name: “tool_b”, args: {…} }
Turn 2: [user prompt, functionCall_a, functionResponse_a, functionCall_b, functionResponse_b]
 → Model returns: final text (synthesized from both tools)

3. Cascade des modèles : Évitez de vous limiter à un seul modèle

Pour l’étape 3 Model Cascading Don, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez ensemble le parcours normal et les scénarios de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie intégrante du produit, et non d’améliorations ultérieures. Séparez la construction du client du cycle de messages afin que les fournisseurs puissent être remplacés sans avoir à réécrire la machine d’états de la conversation. Pour l’étape 3 Model Cascading Don, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définites des vérifications de succès et refusez les terminations partielles silencieuses.

Primary: gemini-3.5-flash-lite (fastest, cheapest, zero-thinking overhead)
Secondary: gemini-3.1-flash-lite (slightly older, same tier)
Tertiary: gemini-2.5-flash (thinking-capable, higher quality)

4. Architecture des clés API : le modèle de proxy

Lorsque vous travaillez sur les quatre étapes de l’architecture des clés API, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de maintenir l’honnêteté des modifications ultérieures du code. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le système passe d’un environnement de démonstration à des environnements partagés. Journalisez l’ID de la requête, l’ID du modèle et le temps de latence pour chaque appel. Sans ce suivi, les erreurs intermittentes du fournisseur sont perçues comme des bugs de l’application.

La solution : un proxy du côté serveur

Lorsque vous travaillez sur l’étape « The Solution A Server-Side », notez d’abord le contrat : les entrées requises, le signal de succès, ainsi que ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du système. Enregistrez l’ID de la requête, l’ID du modèle et le temps de latence pour chaque appel. Sans ces traces, les erreurs intermittentes du fournisseur sont perçues comme des bugs de l’application.

const res = await Promise.race([
 proxyCallable({ model: modelName, body: requestBody }),
 new Promise((_, reject) =>
 setTimeout(() => reject(new Error(‘AI proxy timeout’)), 15000)
 ),
]);

5. Compression du contexte : ce que vous fournissez au modèle est plus important que le modèle lui-même

Lorsque vous travaillez sur les 5 étapes de la compression de contexte, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’intégrité des modifications ultérieures du code. Documentez ensemble le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’améliorations apportées ultérieurement. Enregistrez l’ID de la demande, l’ID du modèle et le temps de réponse pour chaque appel. Sans ce suivi, les erreurs intermittentes du fournisseur sont perçues comme des bugs de l’application. Lorsque vous travaillez sur les 5 étapes de la compression de contexte, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’intégrité des modifications ultérieures du code. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définez des vérifications de succès et refusez les terminations partielles silencieuses.

[CONTEXT]
Category: Coffee
Date: Saturday, Aug 30, 2026
Time: 10:00 AM — 11:30 AM (90 mins)
Group Size: 4/8 participants
User Role: Attendee
Country: AU
Currency: AUD
[END CONTEXT]

6. Conception d’agent priorisant le mode hors ligne : solution de secours déterministe

La phase 6 de conception d’agent priorisant le mode hors ligne fonctionne au mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un enregistrement exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût en tokens ou requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de la démonstration à des environnements partagés. Fixez l’interpréteur et le fichier de verrouillage des dépendances avant d’enseigner la boucle. Les différences entre l’ordinateur portable et les environnements CI constituent la cause la plus fréquente de dysfonctionnement silencieux dans les démonstrations API.

7. Ajustement de generationConfig

La phase de réglage de generationConfig 7 fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de rollback avant d’élargir le périmètre. Gardez la configuration en dehors du code de l’application. Les fichiers d’environnement, les stocks de secrets et les flags fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du graphique. Fixez l’interpréteur ainsi que le fichier de verrouillage des dépendances avant d’enseigner la boucle. Les écarts entre l’ordinateur portable et les environnements CI sont la cause la plus fréquente de dysfonctionnement silencieux dans les démos API.

{
 “responseMimeType”: “application/json”,
 “temperature”: 0.4,
 “maxOutputTokens”: 600
}
{
 “temperature”: 0.7,
 “maxOutputTokens”: 700
}

8. Ingénierie des prompts système pour l’utilisation des outils

Les 8 étapes de l’ingénierie des prompts système fonctionnent le mieux lorsqu’elles sont considérées comme une surface mesurable. Capturez un enregistrement idéal, un cas d’échec et une note de réversion avant d’élargir le périmètre. Documentez ensemble le parcours réussi et celui de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non traités font partie intégrante du produit, et non d’une mise en forme ultérieure. Fixez l’interpréteur ainsi que le fichier de verrouillage des dépendances avant d’enseigner la boucle. Les écarts entre l’ordinateur portable et les environnements de test automatisés constituent la cause la plus fréquente d’échecs silencieux lors des démonstrations API. Les 8 étapes de l’ingénierie des prompts système fonctionnent le mieux lorsqu’elles sont considérées comme une surface mesurable. Capturez un enregistrement idéal, un cas d’échec et une note de réversion avant d’élargir le périmètre. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Nommez les artefacts, définites des critères de succès et refusez toute complétion partielle silencieuse.

You have access to autonomous action tools. When users ask for rides,
ALWAYS call request_rideshare. When users ask to book a table,
ALWAYS call reserve_table. When users ask about cultural norms,
ALWAYS call get_cultural_etiquette.
NO RAW MARKDOWN HEADINGS: Never use ‘#’. Use **Bold Text** for headers.
NO ASTERISKS FOR BULLETS: Use clean unicode bullet points (• ).
CONCISE: Jump straight to the answer. No filler introductions.

9. Leçons apprises

Pendant l’étape des 9 leçons apprises, définissez les entrées, le responsable de l’étape et les critères d’achèvement avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des jetons ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe d’un environnement de démonstration à des environnements partagés. Séparez la construction du client du cycle de messages afin que les fournisseurs puissent être remplacés sans avoir à réécrire la machine d’état de la conversation.

Liste de contrôle opérationnelle

Lorsque vous travaillez sur l’étape de la liste de contrôle opérationnelle, notez d’abord les exigences : entrées requises, signal de succès et conséquences en cas d’échec partiel. Cette liste garantit que les modifications ultérieures du code restent transparentes.

Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’erreur doit indiquer une seule responsabilité et non un processus embrouillé.

Enregistrez l’ID de la requête, l’ID du modèle et le temps de latence à chaque appel. Sans ces traces, les erreurs intermittentes du fournisseur ressemblent à des bugs de l’application.

Gardez l’état du graphe simple et typé. Les blocs imbriqués cachent le fait que tel nœud a modifié tel champ et empêchent la reprise après interruption.

Ajoutez un test de base qui exécute le chemin critique dans les processus d’intégration continue en utilisant des fixtures, et non des API payantes en temps réel, chaque fois que le budget le permet.

Gardez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du graphe.

Au préalable de promouvoir le stack, figez les versions, conservez une transcription « or » pour le chemin critique, et confirmez les étapes de rollback. Les environnements partagés nécessitent des limites de débit, des vérifications de location, ainsi qu’un responsable clair pour la rotation des secrets. Préférez une fiabilité sans faille à de brillantes démonstrations ponctuelles.

Note pour le lot 0ead08720324 : gardez les clés du fournisseur hors du répertoire, fixez un plafond pour les tokens par session, et stockez les transcriptions à côté des fichiers de configuration d’évaluation afin que les remplacements ultérieurs de modèles restent comparables.