
La mort du « invite tout » : l’évolution de Google vers une IA structurée
a jeté les bases d’une manière plus structurée de créer des applications interactives et dynamiques basées sur l’IA. L’un des résultats les plus intéressants de cet effort a été la sortie de leur nouveau API d’interactions il y a quelques semaines.
À mesure que les grands modèles de langage (LLM) vont et viennent, il arrive souvent qu’une API développée par un fournisseur LLM devienne un peu obsolète. Après tout, il peut être difficile pour un concepteur d’API d’anticiper tous les changements et ajustements qui pourraient être appliqués au système pour lequel l’API est conçue. Cela est doublement vrai dans le domaine de l’IA, où le rythme du changement est sans précédent dans le monde informatique.
Nous l’avons déjà vu avec OpenAI, par exemple. Leur API initiale pour leurs modèles s’appelait Achèvements API. Au fur et à mesure que leurs modèles avançaient, ils ont dû mettre à niveau et publier une nouvelle API appelée Réponses.
Google adopte une approche légèrement différente avec l’API Interactions. Ce n’est pas un remplacement complet pour leur ancien générer du contenu API, mais plutôt une extension de celle-ci.
Comme le dit Google dans sa propre documentation…
« L’API Interactions (Bêta) est une interface unifiée pour interagir avec les modèles et les agents Gemini. Cela simplifie la gestion de l’état, l’orchestration des outils et les tâches de longue durée.
Le reste de cet article explore la nécessité architecturale de l’API Interactions. Nous commencerons simplement en montrant comment l’API Interactions peut faire tout ce que son prédécesseur pouvait faire, puis terminerons par la façon dont elle permet des opérations avec état, l’intégration explicite des capacités agents Deep Research à haute latence de Google et la gestion des tâches de longue durée. Nous irons au-delà d’un exemple « Hello World » pour construire des systèmes qui nécessitent une réflexion approfondie et l’orchestration d’une recherche asynchrone.
Le fossé architectural : pourquoi le « chat » est insuffisant
Pour comprendre pourquoi l’API Interactions existe, il faut analyser pourquoi la boucle de chat standard LLM est insuffisante.
Dans une application de chat standard, « état » est implicite. Il n’existe que comme une fenêtre glissante de l’historique des jetons. Si un utilisateur se trouve à l’étape 3 d’un assistant d’intégration et pose une question hors sujet, le modèle peut halluciner sur un nouveau chemin, interrompant ainsi l’assistant. Le développeur n’a aucune garantie programmatique que l’utilisateur se trouve là où il est censé être.
Pour le développement de systèmes d’IA plus modernes, cela est insuffisant. Pour contrer cela, la nouvelle API de Google propose des moyens de faire référence au contexte précédent lors des interactions LLM ultérieures. Nous en verrons un exemple plus tard.
Le problème de la recherche profonde
La capacité Deep Research de Google (optimisée par Gemini) est agentique. Il ne se contente pas de récupérer des informations ; il formule un plan, exécute des dizaines de recherches, lit des centaines de pages et synthétise une réponse. Ce processus est asynchrone et à latence élevée.
Vous ne pouvez pas simplement inciter un modèle de chat standard à « effectuer des recherches approfondies » dans une boucle synchrone sans risquer des délais d’attente ou des débordements de fenêtre contextuelle. L’API Interactions vous permet d’encapsuler ce processus agent volatile dans un fichier stable et géré. Étapemettant en pause l’état d’interaction. Dans le même temps, le gros du travail se produit et ne reprend que lorsque les données structurées sont renvoyées. Cependant, si un agent de recherche approfondie met beaucoup de temps à faire ses recherches, la dernière chose que vous voulez faire est de rester là à vous tourner les pouces en attendant qu’elles se terminent. L’API Interactions vous permet d’effectuer des recherches en arrière-plan et d’interroger périodiquement ses résultats, de sorte que vous soyez averti dès que l’agent renvoie ses résultats.
Mise en place d’un environnement de développement
Voyons de plus près l’API Interactions en examinant quelques exemples de codage de son utilisation. Comme pour tout projet de développement, il est préférable d’isoler votre environnement, alors faisons-le maintenant. J’utilise Windows et le UV gestionnaire de paquets pour cela, mais utilisez l’outil avec lequel vous êtes le plus à l’aise. Mon code a été exécuté dans un notebook Jupyter.
uv init interactions_demo --python 3.12
cd interactions_demo
uv add google-genai jupyter
# To run the notebook, type this in
uv run jupyter notebook
Pour exécuter mon exemple de code, vous aurez également besoin d’une clé API Google. Si vous n’en avez pas, allez sur Le studio d’IA de Google site Web et connectez-vous. En bas à gauche de l’écran, vous verrez un Obtenir la clé API lien. Cliquez dessus et suivez les instructions pour obtenir votre clé. Une fois que vous avez une clé, créez une variable d’environnement nommée GOOGLE_API_KEY sur votre système et définissez sa valeur sur votre clé API.
Exemple 1 : un équivalent Hello World
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-2.5-flash",
input="What is the capital of France"
)
print(interaction.outputs[-1].text)
#
# Output
#
The capital of France is **Paris**.
Exemple 2 : Utiliser Nano Banana pour générer une image
Avant d’examiner les capacités spécifiques de gestion d’état et de recherche approfondie qu’offre la nouvelle API Interactions, je souhaite montrer qu’il est aussi un outil multimodal à usage général. Pour cela, nous utiliserons l’API pour créer une image pour nous à l’aide de Nano Banana, officiellement connue sous le nom de Gemini 3 Pro Image Preview.
import base64
import os
from google import genai
# 1. Ensure the directory exists
output_dir = r"c:\temp"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
print(f"Created directory: {output_dir}")
client = genai.Client()
print("Sending request...")
try:
# 2. Correct Syntax: Pass 'response_modalities' directly (not inside config)
interaction = client.interactions.create(
model="gemini-3-pro-image-preview", # Ensure you have access to this model
input="Generate an image of a hippo wearing a top-hat riding a uni-cycle.",
response_modalities=["IMAGE"]
)
found_image = False
# 3. Iterate through outputs and PRINT everything
for i, output in enumerate(interaction.outputs):
# Debug: Print the type so we know what we got
print(f"\n--- Output {i+1} Type: {output.type} ---")
if output.type == "text":
# If the model refused or chatted back, this will print why
print(f"📝 Text Response: {output.text}")
elif output.type == "image":
print(f"Image Response: Mime: {output.mime_type}")
# Construct filename
file_path = os.path.join(output_dir, f"hippo_{i}.png")
# Save the image
with open(file_path, "wb") as f:
# The SDK usually returns base64 bytes or string
if isinstance(output.data, bytes):
f.write(output.data)
else:
f.write(base64.b64decode(output.data))
print(f"Saved to: {file_path}")
found_image = True
if not found_image:
print("\nNo image was returned. Check the 'Text Response' above for the reason.")
except Exception as e:
print(f"\nError: {e}")
C’était ma sortie.

Exemple 3 : Gestion de l’État
La gestion avec état dans l’API Interactions est construite autour de « Interaction » ressource, qui sert d’enregistrement de session contenant l’historique complet d’une tâche, des entrées utilisateur aux résultats de l’outil.
Pour poursuivre une conversation qui mémorise le contexte précédent, vous transmettez un identifiant d’une interaction antérieure dans le previous_interaction_id paramètre d’une nouvelle requête.
Le serveur utilise cet identifiant pour récupérer automatiquement le contexte complet de la session particulière à laquelle il est associé, éliminant ainsi la nécessité pour le développeur de renvoyer l’intégralité de l’historique des discussions. Un effet secondaire est que la mise en cache peut ainsi être utilisée plus efficacement, ce qui entraîne une amélioration des performances et une réduction des coûts des jetons.
Les interactions avec état nécessitent que les données soient stockées sur les serveurs de Google. Par défaut, le paramètre store est défini sur true, ce qui active cette fonctionnalité. Si un développeur définit store=false, il ne peut pas utiliser de fonctionnalités avec état telles que previous_interaction_id.
Le mode avec état permet également de mélanger différents modèles et agents dans un seul thread. Par exemple, vous pouvez utiliser un agent Deep Research pour la collecte de données, puis référencer l’ID de cette interaction pour qu’un modèle Gemini standard (moins cher) résume les résultats.
Voici un exemple rapide dans lequel nous lançons une tâche simple en indiquant notre nom au modèle et en lui posant quelques questions simples. Nous enregistrons l’ID d’interaction produit par la session, puis, plus tard, nous demandons au modèle quel était notre nom et quelle était la deuxième question que nous avons posée.
from google import genai
client = genai.Client()
# 1. First turn
interaction1 = client.interactions.create(
model="gemini-3-flash-preview",
input="""
Hi,It's Tom here, can you tell me the chemical name for water.
Also, which is the smallest recognised country in the world?
And how tall in feet is Mt Everest
"""
)
print(f"Response: {interaction1.outputs[-1].text}")
print(f"ID: {interaction1.id}")
#
# Output
#
Response: Hi Tom! Here are the answers to your questions:
* **Chemical name for water:** The most common chemical name is **dihydrogen monoxide** ($H_2O$), though in formal chemistry circles, its systematic name is **oxidane**.
* **Smallest recognized country:** **Vatican City**. It covers only about 0.17 square miles (0.44 square kilometers) and is an independent city-state enclaved within Rome, Italy.
* **Height of Mt. Everest:** According to the most recent official measurement (confirmed in 2020), Mt. Everest is **29,031.7 feet** (8,848.86 meters) tall.
ID: v1_ChdqamxlYVlQZ01jdmF4czBQbTlmSHlBOBIXampsZWFZUGdNY3ZheHMwUG05Zkh5QTg
Quelques heures plus tard…
from google import genai
client = genai.Client()
# 2. Second turn (passing previous_interaction_id)
interaction2 = client.interactions.create(
model="gemini-3-flash-preview",
input="Can you tell me my name and what was the second question I asked you",
previous_interaction_id='v1_ChdqamxlYVlQZ01jdmF4czBQbTlmSHlBOBIXampsZWFZUGdNY3ZheHMwUG05Zkh5QTg'
)
print(f"Model: {interaction2.outputs[-1].text}")
#
# Output
#
Model: Hi Tom!
Your name is **Tom**, and the second question you asked was:
**"Which is the smallest recognised country in the world?"**
(to which the answer is Vatican City).
Exemple 4 : l’orchestrateur asynchrone de recherche approfondie
Passons maintenant à quelque chose que l’ancienne API de Google ne peut pas faire. L’un des principaux avantages de l’API Interactions est que vous pouvez l’utiliser pour appeler des agents spécialisés, tels que recherche approfondie-pro-preview-12-2025, pour des tâches complexes.
Dans cet exemple, nous allons créer un moteur de veille concurrentielle. L’utilisateur spécifie un concurrent commercial et le système déclenche un agent de recherche approfondie pour parcourir le Web, lire les rapports annuels et créer une analyse des forces, des faiblesses, des opportunités et des menaces (SWOT). Nous divisons cela en deux parties. Tout d’abord, nous pouvons lancer notre demande de recherche en utilisant un code comme celui-ci.
import time
import sys
from google import genai
def competitive_intelligence_engine():
client = genai.Client()
print("--- Deep Research Competitive Intelligence Engine ---")
competitor_name = input("Enter the name of the competitor to analyze (e.g., Nvidia, Coca-Cola): ")
# We craft a specific prompt to force the agent to look for specific document types
prompt = f"""
Conduct a deep research investigation into '{competitor_name}'.
Your specific tasks are:
1. Scour the web for the most recent Annual Report (10-K) and latest Quarterly Earnings transcripts.
2. Search for recent news regarding product launches, strategic partnerships, and legal challenges in the last 12 months.
3. Synthesize all findings into a detailed SWOT Analysis (Strengths, Weaknesses, Opportunities, Threats).
Format the output as a professional executive summary with the SWOT section clearly defined in Markdown.
"""
print(f"\n Deploying Deep Research Agent for: {competitor_name}...")
# 1. Start the Deep Research Agent
# We use the specific agent ID provided in your sample
try:
initial_interaction = client.interactions.create(
input=prompt,
agent="deep-research-pro-preview-12-2025",
background=True
)
except Exception as e:
print(f"Error starting agent: {e}")
return
print(f" Research started. Interaction ID: {initial_interaction.id}")
print("⏳ The agent is now browsing the web and reading reports. This may take several minutes.")
Cela produira le résultat suivant.
--- Deep Research Competitive Intelligence Engine ---
Enter the name of the competitor to analyze (e.g., Nvidia, Coca-Cola): Nvidia
Deploying Deep Research Agent for: Nvidia...
Research started. Interaction ID: v1_ChdDdXhiYWN1NEJLdjd2ZElQb3ZHdTBRdxIXQ3V4YmFjdTRCS3Y3dmRJUG92R3UwUXc
The agent is now browsing the web and reading reports. This may take several minutes.
Ensuite, puisque nous savons que le travail de recherche prendra un certain temps, nous pouvons utiliser l’ID d’interaction imprimé ci-dessus pour le surveiller et vérifier périodiquement s’il est terminé.
Habituellement, cela se ferait dans le cadre d’un processus distinct qui vous enverrait un e-mail ou un SMS une fois le travail de recherche terminé afin que vous puissiez poursuivre d’autres tâches entre-temps.
try:
while True:
# Refresh the interaction status
interaction = client.interactions.get(initial_interaction.id)
# Calculate elapsed time
elapsed = int(time.time() - start_time)
# Print a dynamic status line so we know it's working
sys.stdout.write(f"\r Status: {interaction.status.upper()} | Time Elapsed: {elapsed}s")
sys.stdout.flush()
if interaction.status == "completed":
print("\n\n" + "="*50)
print(f" INTELLIGENCE REPORT: {competitor_name.upper()}")
print("="*50 + "\n")
# Print the content
print(interaction.outputs[-1].text)
break
elif interaction.status in ["failed", "cancelled"]:
print(f"\n\nJob ended with status: {interaction.status}")
# Sometimes error details are in the output text even on failure
if interaction.outputs:
print(f"Error details: {interaction.outputs[-1].text}")
break
# Wait before polling again to respect rate limits
time.sleep(10)
except KeyboardInterrupt:
print("\nUser interrupted. Research may continue in background.")
Je ne montrerai pas l’intégralité des résultats de la recherche, car elle était assez longue, mais en voici juste une partie.
==================================================
📝 INTELLIGENCE REPORT: NVIDIA
==================================================
# Strategic Analysis & Executive Review: Nvidia Corporation (NVDA)
### Key Findings
* **Financial Dominance:** Nvidia reported record Q3 FY2026 revenue of **$57.0 billion** (+62% YoY), driven by a staggering **$51.2 billion** in Data Center revenue. The company has effectively transitioned from a hardware manufacturer to the foundational infrastructure provider for the "AI Industrial Revolution."
* **Strategic Expansion:** Major moves in late 2025 included a **$100 billion investment roadmap with OpenAI** to deploy 10 gigawatts of compute and a **$20 billion acquisition of Groq's assets**, pivoting Nvidia aggressively into the AI inference market.
* **Regulatory Peril:** The company faces intensifying geopolitical headwinds. In September 2025, China's SAMR found Nvidia in violation of antitrust laws regarding its Mellanox acquisition. Simultaneously, the U.S. Supreme Court allowed a class-action lawsuit regarding crypto-revenue disclosures to proceed.
* **Product Roadmap:** The launch of the **GeForce RTX 50-series** (Blackwell architecture) and **Project DIGITS** (personal AI supercomputer) at CES 2025 signals a push to democratize AI compute beyond the data center to the desktop.
---
## 1. Executive Summary
Nvidia Corporation (NASDAQ: NVDA) stands at the apex of the artificial intelligence transformation, having successfully evolved from a graphics processing unit (GPU) vendor into a full-stack computing platform company. As of early 2026, Nvidia is not merely selling chips; it is building "AI Factories"-entire data centers integrated with its proprietary networking, software (CUDA), and hardware.
The fiscal year 2025 and the first three quarters of fiscal 2026 have demonstrated unprecedented financial acceleration. The company's "Blackwell" architecture has seen demand outstrip supply, creating a backlog that extends well into 2026. However, this dominance has invited intense scrutiny. The geopolitical rift between the U.S. and China poses the single greatest threat to Nvidia's long-term growth, evidenced by recent antitrust findings by Chinese regulators and continued smuggling controversies involving restricted chips like the Blackwell B200.
Strategically, Nvidia is hedging against the commoditization of AI training by aggressively entering the **inference** market-the phase where AI models are used rather than built. The acquisition of Groq's technology in December 2025 is a defensive and offensive maneuver to secure low-latency processing capabilities.
---
## 2. Financial Performance Analysis
**Sources:** [cite: 1, 2, 3, 4, 5]
### 2.1. Fiscal Year 2025 Annual Report (10-K) Highlights
Nvidia's Fiscal Year 2025 (ending January 2025) marked a historic inflection point in the technology sector.
* **Total Revenue:** $130.5 billion, a **114% increase** year-over-year.
* **Net Income:** $72.9 billion, soaring **145%**.
* **Data Center Revenue:** $115.2 billion (+142%), confirming the complete shift of the company's gravity away from gaming and toward enterprise AI.
* **Gross Margin:** Expanded to **75.0%** (up from 72.7%), reflecting pricing power and the high value of the Hopper architecture.
...
...
...
## 5. SWOT Analysis
### **Strengths**
* **Technological Monopoly:** Nvidia possesses an estimated 80-90% market share in AI training chips. The **Blackwell** and upcoming **Vera Rubin** architectures maintain a multi-year lead over competitors.
* **Ecosystem Lock-in (CUDA):** The CUDA software platform remains the industry standard. The recent expansion into "AI Factories" and full-stack solutions (networking + hardware + software) makes switching costs prohibitively high for enterprise customers.
* **Financial Fortress:** With gross margins exceeding **73%** and free cash flow in the tens of billions, Nvidia has immense capital to reinvest in R&D ($100B OpenAI commitment) and acquire emerging tech (Groq).
* **Supply Chain Command:** By pre-booking massive capacity at TSMC (CoWoS packaging), Nvidia effectively controls the faucet of global AI compute supply.
### **Weaknesses**
* **Revenue Concentration:** A significant portion of revenue is derived from a handful of "Hyperscalers" (Microsoft, Meta, Google, Amazon). If these clients successfully pivot to their own custom silicon (TPUs, Trainium, Maia), Nvidia's revenue could face a cliff.
* **Pricing Alienation:** The high cost of Nvidia hardware (e.g., $1,999 for consumer GPUs, $30k+ for enterprise chips) is pushing smaller developers and startups toward cheaper alternatives or cloud-based inference solutions.
* **Supply Chain Single Point of Failure:** Total reliance on **TSMC** in Taiwan exposes Nvidia to catastrophic risk in the event of a cross-strait conflict or natural disaster.
### **Opportunities**
* **The Inference Market:** The $20B Groq deal positions Nvidia to dominate the *inference* phase (running models), which is expected to be a larger market than training in the long run.
* **Sovereign AI:** Nations (Japan, France, Middle Eastern states) are building their own "sovereign clouds" to protect data privacy. This creates a new, massive customer base outside of US Big Tech.
* **Physical AI & Robotics:** With **Project GR00T** and the **Jetson** platform, Nvidia is positioning itself as the brain for humanoid robots and autonomous industrial systems, a market still in its infancy.
* **Software & Services (NIMs):** Nvidia is transitioning to a software-as-a-service model with Nvidia Inference Microservices (NIMs), creating recurring revenue streams that are less cyclical than hardware sales.
### **Threats**
* **Geopolitical Trade War:** The US-China tech war is the existential threat. Further tightening of export controls (e.g., banning H20 chips) or aggressive retaliation from China (SAMR antitrust penalties) could permanently sever access to one of the world's largest semiconductor markets.
* **Regulatory Antitrust Action:** Beyond China, Nvidia faces scrutiny in the EU and US (DOJ) regarding its bundling practices and market dominance. A forced breakup or behavioral remedies could hamper its "full-stack" strategy.
* **Smuggling & IP Theft:** As seen with the DeepSeek controversy, export bans may inadvertently fuel a black market and accelerate Chinese domestic innovation (e.g., Huawei Ascend), creating a competitor that operates outside Western IP laws.
* **"Good Enough" Competition:** For many inference workloads, cheaper chips from AMD or specialized ASICs may eventually become "good enough," eroding Nvidia's pricing power at the lower end of the market.
...
...
...
Vous pouvez faire bien plus avec l’API Interactions que ce que j’ai montré, notamment les appels d’outils et de fonctions, l’intégration MCP, la sortie structurée et le streaming.
Mais sachez qu’au moment de la rédaction de cet article, l’API Interactions est toujours en service. Bêta, et l’agent de recherche approfondie de Google est présent aperçu. Cela va sans doute changer dans les semaines à venir, mais il est préférable de vérifier avant d’utiliser cet outil dans un système de production.
Pour plus d’informations, consultez le lien ci-dessous vers la page de documentation officielle de Google pour l’API d’interactions.
https://ai.google.dev/gemini-api/docs/interactions?ua=chat
Résumé
L’API Google Interactions signale une maturité dans l’écosystème d’ingénierie de l’IA. Il reconnaît que le « Everything Prompt », un bloc de texte unique et massif essayant de gérer la personnalité, la logique, les outils et la sécurité, est un anti-modèle.
En utilisant cette API, les développeurs utilisant Google AI peuvent dissocier efficacement le raisonnement (le travail du LLM) de l’architecture (le travail du développeur).
Contrairement aux boucles de discussion habituelles, où l’état est implicite et sujet aux hallucinations, cette API utilise un « Interaction » ressource pour servir d’enregistrement de session permanent de toutes les entrées, sorties et résultats de l’outil. Grâce à la gestion dynamique, les développeurs peuvent référencer un ID d’interaction d’une conversation précédente et récupérer automatiquement le contexte complet. Cela peut optimiser la mise en cache, améliorer les performances et réduire les coûts en éliminant le besoin de renvoyer des historiques entiers.
De plus, l’API Interactions est unique en son genre pour orchestrer des processus agents asynchrones à haute latence, tels que Deep Research de Google, qui peuvent parcourir le Web et synthétiser d’énormes quantités de données dans des rapports complexes. Cette recherche peut être effectuée de manière asynchrone, ce qui signifie que vous pouvez lancer des tâches de longue durée et écrire du code simple pour être averti de la fin du travail, vous permettant ainsi de travailler sur d’autres tâches entre-temps.
Si vous créez un assistant d’écriture créative, une simple boucle de discussion convient. Mais si vous créez un analyste financier, un outil de sélection médicale ou un moteur de recherche approfondi, l’API Interactions fournit l’échafaudage nécessaire pour transformer un modèle probabiliste en un produit plus fiable.



