L'agent Antigravity est un agent géré à usage général sur l'API Gemini. Un seul appel d'API vous donne accès à un agent qui raisonne, exécute du code, gère des fichiers et navigue sur le Web dans votre propre bac à sable Linux sécurisé, hébergé par Google.
Il est optimisé par Gemini 3.5 Flash et utilise le même harnais que l'IDE Antigravity. Disponible via l'API Interactions et Google AI Studio.
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
agent="antigravity-preview-05-2026",
input="Read Hacker News, summarize the top 10 stories, and save the results as a PDF.",
environment="remote",
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: "Read Hacker News, summarize the top 10 stories, and save the results as a PDF.",
environment: "remote",
}, { timeout: 300000 });
console.log(interaction.output_text);
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"agent": "antigravity-preview-05-2026",
"input": "Read Hacker News, summarize the top 10 stories, and save the results as a PDF.",
"environment": "remote"
}'
Capacités
Chaque appel peut provisionner un bac à sable Linux et démarrer une boucle d'utilisation d'outil. L'agent planifie, agit, observe les résultats et répète le processus jusqu'à ce que la tâche soit terminée.
- Exécution de code : exécutez des commandes Bash, Python et Node.js. Installez des packages, exécutez des tests et créez des applications.
- Gestion des fichiers : lire, écrire, modifier, rechercher et lister les fichiers dans le bac à sable. Les fichiers sont conservés d'une interaction à l'autre.
- Accès au Web : recherche Google et récupération d'URL pour les données.
- Compression du contexte : compression automatique du contexte (déclenchée à environ 135 000 jetons) pour prendre en charge les sessions longues et multitours sans perdre le contexte ni atteindre les limites de jetons.
Pour en savoir plus sur l'utilisation multi-tours et le streaming, consultez le guide de démarrage rapide.
Outils compatibles
Par défaut, l'agent a accès à code_execution, google_search et url_context. Les outils du système de fichiers sont activés automatiquement lorsque vous spécifiez le paramètre environment. Vous pouvez également définir des fonctions personnalisées pour connecter l'agent à vos propres API et outils. Il vous suffit de spécifier le paramètre tools lorsque vous personnalisez ou limitez l'ensemble par défaut, ou lorsque vous ajoutez des fonctions personnalisées.
| Outil | Valeur du type | Description |
|---|---|---|
| Exécution du code | code_execution |
Exécutez des commandes shell (bash, Python, Node) avec capture stdout/stderr. |
| Recherche Google | google_search |
Rechercher sur le Web public |
| Contexte de l'URL | url_context |
Récupérer et lire des pages Web |
| Système de fichiers | (activé via environment) |
Lire, écrire, modifier, rechercher et lister des fichiers dans le bac à sable. Aucun type d'outil distinct ; activé automatiquement lorsque environment est défini. |
| Fonctions personnalisées | function |
Définissez des fonctions personnalisées que l'agent peut demander à exécuter. Consultez Appel de fonction. |
| Serveur MCP distant | mcp_server |
Enregistrez des serveurs MCP (Model Context Protocol) externes en tant qu'outils. Consultez Serveurs MCP. |
Pour limiter l'agent à des outils spécifiques, ne transmettez que ceux dont vous avez besoin :
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
agent="antigravity-preview-05-2026",
input="Search for the latest AI research papers on reasoning and summarize them.",
environment="remote",
tools=[
{"type": "google_search"},
{"type": "url_context"},
],
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: "Search for the latest AI research papers on reasoning and summarize them.",
environment: "remote",
tools: [
{ type: "google_search" },
{ type: "url_context" },
],
}, { timeout: 300000 });
console.log(interaction.output_text);
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"agent": "antigravity-preview-05-2026",
"input": "Search for the latest AI research papers on reasoning and summarize them.",
"environment": "remote",
"tools": [
{"type": "google_search"},
{"type": "url_context"}
]
}'
Entrée multimodale
L'agent Antigravity est compatible avec les entrées multimodales. Pour le moment, seules les entrées text et image sont acceptées. Les images doivent être fournies sous forme de chaînes encodées en base64 intégrées (data).
Python
import base64
from google import genai
client = genai.Client()
with open("path/to/chart.png", "rb") as f:
image_bytes = f.read()
interaction_inline = client.interactions.create(
agent="antigravity-preview-05-2026",
input=[
{"type": "text", "text": "Analyze this chart and summarize the trends."},
{
"type": "image",
"data": base64.b64encode(image_bytes).decode("utf-8"),
"mime_type": "image/png",
},
],
environment="remote",
)
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
const client = new GoogleGenAI({});
const base64Image = fs.readFileSync("path/to/chart.png", { encoding: "base64" });
const interactionInline = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: [
{ type: "text", text: "Analyze this chart and summarize the trends." },
{
type: "image",
data: base64Image,
mime_type: "image/png",
},
],
environment: "remote",
}, { timeout: 300000 });
REST
BASE64_IMAGE=$(base64 -w0 /path/to/chart.png)
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d "{
\"agent\": \"antigravity-preview-05-2026\",
\"input\": [
{\"type\": \"text\", \"text\": \"Analyze this chart and summarize the trends.\"},
{
\"type\": \"image\",
\"mime_type\": \"image/png\",
\"data\": \"$BASE64_IMAGE\"
}
],
\"environment\": \"remote\"
}"
Appel de fonction
L'appel de fonction vous permet de connecter l'agent Antigravity à des API et des bases de données externes en définissant des outils personnalisés que l'agent peut appeler. Pour en savoir plus sur les concepts généraux, consultez Appel de fonction avec l'API Gemini.
L'exemple suivant illustre une interaction en deux tours. L'agent demande d'abord un appel de fonction get_weather personnalisé, que le client exécute et dont il renvoie le résultat au deuxième tour.
Python
from google import genai
client = genai.Client()
# 1. Define the custom function
get_weather_tool = {
"type": "function",
"name": "get_weather",
"description": "Gets the current weather for a given location.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and country, e.g. San Francisco, USA",
}
},
"required": ["location"],
},
}
# 2. Call the agent with the custom tool (Turn 1)
interaction = client.interactions.create(
agent="antigravity-preview-05-2026",
input="What is the weather in Tokyo?",
environment="remote",
tools=[
{"type": "code_execution"}, # Enable default code execution
get_weather_tool, # Add custom function
],
)
# Check if the agent requested a function call
if interaction.status == "requires_action":
# Find function calls that do not have a matching function result.
# Filesystem tools (like write_file) are also represented as function calls
# but are executed automatically by the environment.
executed_calls = {step.call_id for step in interaction.steps if step.type == "function_result"}
pending_calls = [step for step in interaction.steps if step.type == "function_call" and step.id not in executed_calls]
if pending_calls:
fc_step = pending_calls[0]
print(f"Function to call: {fc_step.name} (ID: {fc_step.id})")
print(f"Arguments: {fc_step.arguments}")
# 3. Execute the function locally (simulated get_weather()) and send the result back (Turn 2)
function_result = {
"temperature": 23,
"unit": "celsius"
}
final_interaction = client.interactions.create(
agent="antigravity-preview-05-2026",
previous_interaction_id=interaction.id, # Reference the interaction ID
environment=interaction.environment_id,
input=[
{
"type": "function_result",
"name": fc_step.name,
"call_id": fc_step.id,
"result": function_result,
}
],
)
print(final_interaction.output_text)
# Output: The current weather in Tokyo, Japan is 23°C (Celsius).
else:
print("No pending function calls.")
else:
print(f"Interaction completed with status: {interaction.status}")
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
// 1. Define the custom function
const get_weather_tool = {
type: "function",
name: "get_weather",
description: "Gets the current weather for a given location.",
parameters: {
type: "object",
properties: {
location: {
type: "string",
description: "The city and country, e.g. San Francisco, USA",
},
},
required: ["location"],
},
};
// 2. Call the agent with the custom tool (Turn 1)
const interaction = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: "What is the weather in Tokyo?",
environment: "remote",
tools: [
{ type: "code_execution" },
get_weather_tool,
],
}, { timeout: 300000 });
if (interaction.status === "requires_action") {
// Find function calls that do not have a matching function result.
// Filesystem tools (like write_file) are also represented as function calls
// but are executed automatically by the environment.
const executedCalls = new Set(
interaction.steps
.filter(s => s.type === "function_result")
.map(s => s.call_id)
);
const pendingCalls = interaction.steps.filter(
s => s.type === "function_call" && !executedCalls.has(s.id)
);
if (pendingCalls.length > 0) {
const fcStep = pendingCalls[0];
console.log(`Function to call: ${fcStep.name} (ID: ${fcStep.id})`);
// 3. Execute the function locally (simulated get_weather()) and send the result back (Turn 2)
const functionResult = {
temperature: 23,
unit: "celsius"
};
const finalInteraction = await client.interactions.create({
agent: "antigravity-preview-05-2026",
previous_interaction_id: interaction.id, // Reference the interaction ID
environment: interaction.environment_id,
input: [
{
type: "function_result",
name: fcStep.name,
call_id: fcStep.id,
result: functionResult,
}
],
}, { timeout: 300000 });
console.log(finalInteraction.output_text);
} else {
console.log("No pending function calls.");
}
} else {
console.log(`Interaction completed with status: ${interaction.status}`);
}
REST
# 1. Turn 1: Request function call
RESPONSE=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"agent": "antigravity-preview-05-2026",
"input": "What is the weather in Tokyo?",
"environment": "remote",
"tools": [
{"type": "code_execution"},
{
"type": "function",
"name": "get_weather",
"description": "Gets the current weather for a given location.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
]
}')
# Extract interaction ID, environment ID, and call ID (requires jq)
INTERACTION_ID=$(echo $RESPONSE | jq -r '.id')
ENVIRONMENT_ID=$(echo $RESPONSE | jq -r '.environment_id')
CALL_ID=$(echo $RESPONSE | jq -r '.steps[] | select(.type=="function_call") | .id')
# 2. Turn 2: Send function result back using variables
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d "{
\"agent\": \"antigravity-preview-05-2026\",
\"previous_interaction_id\": \"$INTERACTION_ID\",
\"environment\": \"$ENVIRONMENT_ID\",
\"input\": [
{
\"type\": \"function_result\",
\"name\": \"get_weather\",
\"call_id\": \"$CALL_ID\",
\"result\": {
\"temperature\": 23,
\"unit\": \"celsius\"
}
}
]
}"
Serveurs MCP
Vous pouvez connecter l'agent Antigravity à des outils externes en enregistrant des serveurs MCP (Model Context Protocol) distants. L'agent est compatible avec les serveurs MCP distants via HTTP en flux continu.
Lorsque vous enregistrez un serveur MCP, vous devez spécifier les champs suivants dans le tableau tools :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
type |
chaîne | Oui | doit être "mcp_server" |
name |
chaîne | Oui | Identifiant unique du serveur. Doit être strictement en minuscules et alphanumérique (correspondant à ^[a-z0-9_-]+$). |
url |
chaîne | Oui | URL du point de terminaison du serveur MCP distant. |
headers |
objet | Non | En-têtes personnalisés (par exemple, pour l'authentification) envoyés avec les requêtes. |
allowed_tools |
tableau | Non | Liste des noms d'outils pouvant être exécutés. Si cette option est omise, tous les outils sont autorisés. |
Python
from google import genai
client = genai.Client()
# Register a remote HTTP MCP server
interaction = client.interactions.create(
agent="antigravity-preview-05-2026",
input="What is the weather in Tokyo?",
environment="remote",
tools=[{
"type": "mcp_server",
"name": "weather", # Must be lowercase
"url": "https://gemini-api-demos.uc.r.appspot.com/mcp"
}]
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: "What is the weather in Tokyo?",
environment: "remote",
tools: [{
type: "mcp_server",
name: "weather", // Must be lowercase
url: "https://gemini-api-demos.uc.r.appspot.com/mcp"
}]
}, { timeout: 300000 });
console.log(interaction.output_text);
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"agent": "antigravity-preview-05-2026",
"input": "What is the weather in Tokyo?",
"environment": "remote",
"tools": [{
"type": "mcp_server",
"name": "weather",
"url": "https://gemini-api-demos.uc.r.appspot.com/mcp"
}]
}'
Personnaliser l'agent
Vous pouvez étendre l'agent Antigravity en personnalisant ses instructions, ses outils et son environnement. L'agent est compatible avec une approche de personnalisation native du système de fichiers : vous pouvez monter des fichiers tels que AGENTS.md pour les instructions et les compétences sous .agents/skills/ directement dans le bac à sable, ou transmettre la configuration en ligne au moment de l'interaction. Vous pouvez itérer sur votre configuration en ligne, puis l'enregistrer en tant qu'agent géré lorsque vous êtes prêt.
Pour en savoir plus sur la création d'agents personnalisés, consultez Créer des agents gérés.
Exécution en arrière-plan
Les tâches d'agent qui impliquent un raisonnement en plusieurs étapes, l'exécution de code ou des opérations sur des fichiers peuvent prendre plusieurs minutes. Utilisez background=True pour exécuter l'interaction de manière asynchrone. L'API renvoie immédiatement un ID d'interaction que vous interrogez jusqu'à ce que l'état soit completed ou failed.
Python
import time
from google import genai
client = genai.Client()
# 1. Start the interaction in the background
interaction = client.interactions.create(
agent="antigravity-preview-05-2026",
input="Run a complex analysis on the repository.",
environment="remote",
background=True,
)
print(f"Interaction started in background: {interaction.id}")
# 2. Poll for completion
while interaction.status == "in_progress":
time.sleep(5)
interaction = client.interactions.get(id=interaction.id)
if interaction.status == "completed":
print(interaction.output_text)
else:
print(f"Finished with status: {interaction.status}")
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: "Run a complex analysis on the repository.",
environment: "remote",
background: true,
});
console.log(`Interaction started in background: ${interaction.id}`);
let result = interaction;
while (result.status === "in_progress") {
await new Promise(resolve => setTimeout(resolve, 5000));
result = await client.interactions.get(interaction.id);
}
if (result.status === "completed") {
console.log(result.output_text);
} else {
console.log(`Finished with status: ${result.status}`);
}
REST
# 1. Start the interaction in the background
RESPONSE=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-d '{
"agent": "antigravity-preview-05-2026",
"input": "Run a complex analysis on the repository.",
"environment": "remote",
"background": true
}')
INTERACTION_ID=$(echo $RESPONSE | jq -r '.id')
# 2. Poll for results (repeat until status is "completed")
curl -s -X GET "https://generativelanguage.googleapis.com/v1beta/interactions/$INTERACTION_ID" \
-H "x-goog-api-key: $GEMINI_API_KEY"
L'exécution en arrière-plan nécessite store=True, qui est la valeur par défaut. Pour obtenir des informations sur la progression en temps réel lors de l'exécution en arrière-plan, consultez Streaming des interactions en arrière-plan.
Vous pouvez annuler une interaction en arrière-plan en cours d'exécution à l'aide de la méthode cancel.
Python
client.interactions.cancel(id="INTERACTION_ID")
JavaScript
await client.interactions.cancel("INTERACTION_ID");
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions/INTERACTION_ID:cancel" \
-H "x-goog-api-key: $GEMINI_API_KEY"
Multitour avec exécution en arrière-plan
Lorsqu'une interaction en arrière-plan implique des outils avec état (comme l'exécution de code dans un bac à sable), utilisez environment_id à partir de l'interaction terminée pour continuer dans le même environnement. Cela permet à l'agent de reprendre là où il s'était arrêté, avec tous les fichiers et l'état intacts.
Python
import time
from google import genai
client = genai.Client()
# First turn: run a task in the background
interaction = client.interactions.create(
agent="antigravity-preview-05-2026",
input="Clone https://github.com/google/generative-ai-python and run its tests.",
environment="remote",
background=True,
)
while interaction.status == "in_progress":
time.sleep(5)
interaction = client.interactions.get(id=interaction.id)
# Second turn: continue in the same environment
followup = client.interactions.create(
agent="antigravity-preview-05-2026",
input="Fix any failing tests and re-run them.",
previous_interaction_id=interaction.id,
environment=interaction.environment_id,
background=True,
)
while followup.status == "in_progress":
time.sleep(5)
followup = client.interactions.get(id=followup.id)
print(followup.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
// First turn: run a task in the background
let interaction = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: "Clone https://github.com/google/generative-ai-python and run its tests.",
environment: "remote",
background: true,
});
while (interaction.status === "in_progress") {
await new Promise(resolve => setTimeout(resolve, 5000));
interaction = await client.interactions.get(interaction.id);
}
// Second turn: continue in the same environment
let followup = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: "Fix any failing tests and re-run them.",
previous_interaction_id: interaction.id,
environment: interaction.environment_id,
background: true,
});
while (followup.status === "in_progress") {
await new Promise(resolve => setTimeout(resolve, 5000));
followup = await client.interactions.get(followup.id);
}
console.log(followup.output_text);
REST
# 1. Start first interaction in the background
RESPONSE=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-d '{
"agent": "antigravity-preview-05-2026",
"input": "Clone https://github.com/google/generative-ai-python and run its tests.",
"environment": "remote",
"background": true
}')
INTERACTION_ID=$(echo $RESPONSE | jq -r '.id')
# 2. Poll until completed (repeat until status is "completed")
RESULT=$(curl -s -X GET "https://generativelanguage.googleapis.com/v1beta/interactions/$INTERACTION_ID" \
-H "x-goog-api-key: $GEMINI_API_KEY")
ENVIRONMENT_ID=$(echo $RESULT | jq -r '.environment_id')
# 3. Continue in the same environment
curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-d "{
\"agent\": \"antigravity-preview-05-2026\",
\"input\": \"Fix any failing tests and re-run them.\",
\"previous_interaction_id\": \"$INTERACTION_ID\",
\"environment\": \"$ENVIRONMENT_ID\",
\"background\": true
}"
Environnements
Chaque appel crée ou réutilise un bac à sable Linux. Le paramètre environment peut prendre trois formes :
| Formulaire | Description |
|---|---|
"remote" |
Provisionnez un bac à sable vierge avec les paramètres par défaut. |
"env_abc123" |
Réutilisez un environnement existant par son ID, en conservant tous les fichiers et l'état. |
{...} |
EnvironmentConfig complet avec des sources personnalisées et des règles réseau. |
Pour en savoir plus sur les sources (Git, GCS, intégrées), la mise en réseau, le cycle de vie et les limites de ressources, consultez Environnements.
Déclencheurs
Les déclencheurs vous permettent de programmer l'exécution automatique d'un agent selon une programmation Cron. Un déclencheur lie un agent, un environnement, un prompt et un programme dans une ressource persistante qui se déclenche sans intervention manuelle. Chaque exécution réutilise le même environnement. Les fichiers créés lors d'une exécution sont donc conservés et visibles pour la suivante.
Créer un déclencheur
Créez un déclencheur en spécifiant une planification cron, un fuseau horaire et la configuration de l'interaction. Le déclencheur commence à l'état active et se déclenchera à la prochaine heure cron correspondante. Enregistrez le id renvoyé pour gérer le déclencheur lors des appels suivants.
Python
from google import genai
client = genai.Client()
trigger = client.triggers.create(
schedule="0 9 * * *",
time_zone="America/Argentina/Buenos_Aires",
display_name="issue-solver",
interaction={
"agent": "antigravity-preview-05-2026",
"input": "Review open PRs in my-org/my-app for new comments and address feedback. Close issues whose PRs were merged. Then check for new issues labeled 'accepted', skip any already tracked in /workspace/solved-issues/, fix the rest, and open a PR for each. Save reports to /workspace/solved-issues/.",
"environment": {
"type": "remote",
"network": {
"allowlist": [
{
"domain": "api.github.com",
"transform": {
"Authorization": "Bearer ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
},
{"domain": "github.com"},
]
},
},
},
)
print(f"Trigger created: {trigger.id}")
print(f"Next run: {trigger.next_run_time}")
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const trigger = await client.triggers.create({
schedule: "0 9 * * *",
time_zone: "America/Argentina/Buenos_Aires",
display_name: "issue-solver",
interaction: {
agent: "antigravity-preview-05-2026",
input: [{
type: "text",
text: "Review open PRs in my-org/my-app for new comments and address feedback. Close issues whose PRs were merged. Then check for new issues labeled 'accepted', skip any already tracked in /workspace/solved-issues/, fix the rest, and open a PR for each. Save reports to /workspace/solved-issues/.",
}],
environment: {
type: "remote",
network: {
allowlist: [
{
domain: "api.github.com",
transform: {
"Authorization": "Bearer ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
},
},
{ domain: "github.com" },
],
},
},
},
});
console.log(`Trigger created: ${trigger.id}`);
console.log(`Next run: ${trigger.next_run_time}`);
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/triggers" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"schedule": "0 9 * * *",
"time_zone": "America/Argentina/Buenos_Aires",
"display_name": "issue-solver",
"interaction": {
"agent": "antigravity-preview-05-2026",
"input": [{"type": "text", "text": "Review open PRs in my-org/my-app for new comments and address feedback. Close issues whose PRs were merged. Then check for new issues labeled accepted, skip any already tracked in /workspace/solved-issues/, fix the rest, and open a PR for each. Save reports to /workspace/solved-issues/."}],
"environment": {
"type": "remote",
"network": {
"allowlist": [
{
"domain": "api.github.com",
"transform": {
"Authorization": "Bearer ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
},
{"domain": "github.com"}
]
}
}
}
}'
La requête CreateTrigger accepte les champs suivants :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
schedule |
chaîne | Oui | Expression Cron (par exemple, 0 * * * * pour toutes les heures, 0 9 * * 1-5 pour les matins de semaine). |
time_zone |
chaîne | Oui | Fuseau horaire IANA (par exemple, UTC, America/Argentina/Buenos_Aires). |
display_name |
chaîne | Non | Nom lisible du déclencheur. |
max_consecutive_failures |
entier | Non | Nombre maximal d'échecs avant la mise en veille automatique du déclencheur. Valeur par défaut : 5. |
execution_timeout_seconds |
entier | Non | Délai avant expiration par exécution, en secondes. Valeur par défaut : 600. |
interaction |
objet | Oui | Un fichier CreateInteractionRequest définissant l'agent, l'entrée, les outils et l'environnement. |
La réponse inclut les champs clés suivants :
| Champ | Type | Description |
|---|---|---|
id |
chaîne | Identifiant unique du déclencheur. Utilisez-le dans toutes les opérations suivantes. |
status |
chaîne | État actuel : active, paused ou disabled. |
next_run_time |
chaîne | Code temporel ISO 8601 de la prochaine exécution planifiée. |
consecutive_failure_count |
entier | Nombre d'exécutions consécutives ayant échoué depuis la dernière réussite. |
Répertorier les déclencheurs
Récupérez tous les déclencheurs associés à votre projet.
Python
triggers = client.triggers.list()
for trigger in triggers.triggers:
print(f"{trigger.id}: {trigger.display_name} ({trigger.status})")
JavaScript
const triggers = await client.triggers.list();
for (const trigger of triggers.triggers) {
console.log(`${trigger.id}: ${trigger.display_name} (${trigger.status})`);
}
REST
curl -X GET "https://generativelanguage.googleapis.com/v1beta/triggers" \
-H "x-goog-api-key: $GEMINI_API_KEY"
Obtenir un déclencheur
Récupérez la configuration complète et l'état actuel d'un seul déclencheur.
Python
trigger = client.triggers.get(id="TRIGGER_ID")
print(f"Schedule: {trigger.schedule}")
print(f"Next run: {trigger.next_run_time}")
JavaScript
const trigger = await client.triggers.get("TRIGGER_ID");
console.log(`Schedule: ${trigger.schedule}`);
console.log(`Next run: ${trigger.next_run_time}`);
REST
curl -X GET "https://generativelanguage.googleapis.com/v1beta/triggers/TRIGGER_ID" \
-H "x-goog-api-key: $GEMINI_API_KEY"
Mise en pause et reprise
Vous pouvez suspendre un déclencheur pour arrêter les exécutions planifiées et le reprendre pour réactiver la programmation. La mise en veille n'a aucune incidence sur les exécutions manuelles.
Python
# Pause
client.triggers.update(id="TRIGGER_ID", status="paused")
# Resume
client.triggers.update(id="TRIGGER_ID", status="active")
JavaScript
// Pause
await client.triggers.update("TRIGGER_ID", { status: "paused" });
// Resume
await client.triggers.update("TRIGGER_ID", { status: "active" });
REST
# Pause
curl -X PATCH "https://generativelanguage.googleapis.com/v1beta/triggers/TRIGGER_ID" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{"status": "paused"}'
# Resume
curl -X PATCH "https://generativelanguage.googleapis.com/v1beta/triggers/TRIGGER_ID" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{"status": "active"}'
Supprimer un déclencheur
Supprimez définitivement un déclencheur. L'historique des exécutions précédentes n'est pas supprimé.
Python
client.triggers.delete(id="TRIGGER_ID")
JavaScript
await client.triggers.delete("TRIGGER_ID");
REST
curl -X DELETE "https://generativelanguage.googleapis.com/v1beta/triggers/TRIGGER_ID" \
-H "x-goog-api-key: $GEMINI_API_KEY"
Exécuter un déclencheur immédiatement
Déclenchez un déclencheur à la demande sans attendre la prochaine heure planifiée. Cela fonctionne même si le déclencheur est suspendu.
Python
client.triggers.run(trigger_id="TRIGGER_ID")
JavaScript
await client.triggers.run("TRIGGER_ID");
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/triggers/TRIGGER_ID/executions" \
-H "x-goog-api-key: $GEMINI_API_KEY"
Répertorier les exécutions
Affichez l'historique d'exécution d'un déclencheur. Chaque exécution inclut un status, des codes temporels, un interaction_id que vous pouvez utiliser pour récupérer la sortie complète de l'interaction et un environment_id confirmant que toutes les exécutions partagent le même bac à sable.
Python
executions = client.triggers.list_executions(trigger_id="TRIGGER_ID")
for ex in executions.trigger_executions:
print(f"{ex.id}: {ex.status} ({ex.start_time} - {ex.end_time})")
# Fetch the full interaction for an execution
interaction = client.interactions.get(id=ex.interaction_id)
print(interaction.output_text)
JavaScript
const executions = await client.triggers.listExecutions("TRIGGER_ID");
for (const ex of executions.trigger_executions) {
console.log(`${ex.id}: ${ex.status} (${ex.start_time} - ${ex.end_time})`);
}
// Fetch the full interaction for an execution
const interaction = await client.interactions.get(ex.interaction_id);
console.log(interaction.output_text);
REST
curl -X GET "https://generativelanguage.googleapis.com/v1beta/triggers/TRIGGER_ID/executions" \
-H "x-goog-api-key: $GEMINI_API_KEY"
Disponibilité et prix
L'agent Antigravity est disponible en preview via l'API Interactions dans Google AI Studio et l'API Gemini pour les projets de niveau sans frais et payant.
La tarification suit un modèle de paiement à l'usage basé sur les jetons du modèle Gemini sous-jacent et les outils utilisés par l'agent. Contrairement à une demande de chat standard qui produit une seule sortie, une interaction Antigravity est un workflow agentique. Une seule requête déclenche une boucle autonome de raisonnement, d'exécution d'outils, d'exécution de code et de gestion de fichiers. Les projets de la version sans frais incluent une limite de débit et un quota d'utilisation sans frais.
Les interactions Antigravity exécutent des boucles autonomes multitours et peuvent consommer un nombre important de jetons. Définissez des contrôles de budget sur votre requête pour limiter l'utilisation de jetons. Vous pouvez également suivre la progression en temps réel avec le streaming SSE ou annuler les requêtes en cours.
Contrôles budgétaires
Définissez max_total_tokens dans agent_config (avec "type": "antigravity") pour limiter le nombre total de jetons (entrée + sortie + réflexion) qu'une interaction peut consommer.
Les jetons mis en cache ne sont pas comptabilisés dans cette limite. Lorsque l'agent atteint la limite, l'interaction s'arrête et renvoie status: "incomplete". La limite est une estimation. L'utilisation réelle peut légèrement la dépasser en fonction du moment où l'agent vérifie le budget entre les étapes.
Définissez le budget dans la requête d'interaction dans agent_config, ainsi que agent et input.
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
agent="antigravity-preview-05-2026",
input="Analyze the dataset in /workspace/data.csv and generate a summary report.",
agent_config={
"type": "antigravity",
"max_total_tokens": 50000
},
environment={
"type": "remote",
"sources": [
{
"type": "inline",
"target": "/workspace/data.csv",
"content": "id,name,value\n1,alpha,100\n2,beta,200\n",
}
],
}
)
print(f"Status: {interaction.status}") # "incomplete" if budget was hit
print(f"Tokens used: {interaction.usage.total_tokens}")
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: "Analyze the dataset in /workspace/data.csv and generate a summary report.",
agent_config: {
type: "antigravity",
max_total_tokens: 50000
},
environment: {
type: "remote",
sources: [
{
type: "inline",
target: "/workspace/data.csv",
content: "id,name,value\n1,alpha,100\n2,beta,200\n",
},
],
},
});
console.log(`Status: ${interaction.status}`);
console.log(`Tokens used: ${interaction.usage.total_tokens}`);
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"agent": "antigravity-preview-05-2026",
"input": "Analyze the dataset in /workspace/data.csv and generate a summary report.",
"agent_config": {
"type": "antigravity",
"max_total_tokens": 50000
},
"environment": {
"type": "remote",
"sources": [
{
"type": "inline",
"target": "/workspace/data.csv",
"content": "id,name,value\n1,alpha,100\n2,beta,200\n"
}
]
}
}'
Reprendre une interaction incomplète
Lorsqu'une interaction renvoie status: "incomplete", le travail et le contexte de l'agent sont conservés. Envoyez une nouvelle interaction faisant référence à l'interaction d'origine id et environment_id pour reprendre là où vous vous étiez arrêté. La nouvelle interaction dispose de son propre budget max_total_tokens.
Python
# Continue from where the agent stopped
continuation = client.interactions.create(
agent="antigravity-preview-05-2026",
input="continue",
previous_interaction_id=interaction.id,
environment=interaction.environment_id,
agent_config={
"type": "antigravity",
"max_total_tokens": 50000
}
)
print(f"Status: {continuation.status}")
JavaScript
const continuation = await client.interactions.create({
agent: "antigravity-preview-05-2026",
input: "continue",
previous_interaction_id: interaction.id,
environment: interaction.environment_id,
agent_config: {
type: "antigravity",
max_total_tokens: 50000
}
});
console.log(`Status: ${continuation.status}`);
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"agent": "antigravity-preview-05-2026",
"input": "continue",
"previous_interaction_id": "INTERACTION_ID",
"environment": "ENVIRONMENT_ID",
"agent_config": {
"type": "antigravity",
"max_total_tokens": 50000
}
}'
Coûts estimés
Les coûts varient en fonction de la complexité des tâches. L'agent détermine de manière autonome le nombre d'appels d'outils, d'exécutions de code et d'opérations sur les fichiers nécessaires. Les estimations suivantes sont basées sur les exécutions.
| Catégorie de tâche | Jetons d'entrée | Jetons de sortie | Coût habituel |
|---|---|---|---|
| Recherche et synthèse d'informations | 100 000 à 500 000 | 10 000 à 40 000 | 0,30 $ à 1,00 $ |
| Génération de documents et de contenus | 100 000 à 500 000 | 15 000 à 50 000 | 0,30 $ à 1,30 $ |
| Conception de processus et de systèmes | 100 000 à 400 000 | 10 000 à 30 000 | 0,25 $ à 0,80 $ |
| Traitement et analyse des données | 300 000 à 3 millions | 30 000 à 150 000 | 0,70 €–3,25 € |
Généralement, entre 50 et 70% des jetons d'entrée sont mis en cache. Les workflows agentiques complexes avec de nombreux appels d'outils peuvent accumuler entre trois et cinq millions de jetons en une seule interaction, avec des coûts pouvant atteindre environ 5 $.
Le calcul de l'environnement (CPU, mémoire, exécution du bac à sable) n'est pas facturé pendant la période de preview.
Limites
- État de l'aperçu : agent Antigravity et API Interactions. Les fonctionnalités et les schémas peuvent changer.
- Configuration de génération non compatible : les paramètres suivants ne sont pas compatibles et renvoient une erreur 400 :
temperature,top_p,top_k,stop_sequences,max_output_tokens. - Sortie structurée : l'agent Antigravity n'est pas compatible avec les sorties structurées.
- Outils non disponibles :
file_search,computer_useetgoogle_mapsne sont pas encore compatibles. - Limites du MCP à distance : le transport des événements envoyés par le serveur (SSE) n'est pas pris en charge (utilisez le protocole HTTP en flux continu). De plus, le serveur
namedoit être strictement en minuscules et alphanumérique (l'utilisation de lettres majuscules déclenche une erreur400 Bad Requestgénérique). - Outil de système de fichiers : aucun outil de système de fichiers n'est disponible pour le moment. Il fait partie de
environment. - Exigence du Store : l'exécution de l'agent à l'aide de
background=Truenécessitestore=True. - Appel de fonction avec état uniquement : l'appel de fonction n'est compatible qu'avec le mode avec état. Vous devez utiliser
previous_interaction_idpour continuer le tour. La reconstruction manuelle de l'historique (mode sans état) n'est pas prise en charge. - Types multimodaux non acceptés. Les entrées audio, vidéo et de documents ne sont pas prises en charge pour le moment. Seuls le texte et les images sont autorisés.
Étape suivante
- Guide de démarrage rapide : conversations multitours et streaming.
- Créer des agents personnalisés : instructions personnalisées, compétences et enregistrement des agents.
- Environnements : configuration du bac à sable, sources, mise en réseau.
- Agent Deep Research : tâches de recherche au format long.
- API Interactions : API sous-jacente.