סוכן Antigravity הוא סוכן מנוהל לשימוש כללי ב-Gemini API. קריאה אחת ל-API מספקת לכם סוכן שמבצע ניתוח, מריץ קוד, מנהל קבצים ומחפש באינטרנט בתוך ארגז חול מאובטח של Linux, שמתארח ב-Google.
הוא מבוסס על Gemini 3.5 Flash ומשתמש באותו מנגנון כמו Antigravity IDE. אפשר לגשת אליו דרך Interactions API ו-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"
}'
יכולות
כל שיחה יכולה להקצות ארגז חול של Linux ולהתחיל לולאה של שימוש בכלי. הסוכן מתכנן, פועל, בודק את התוצאות וחוזר על הפעולות עד שהמשימה מסתיימת.
- הרצת קוד: הרצת פקודות Bash, Python ו-Node.js. להתקין חבילות, להריץ בדיקות ולפתח אפליקציות.
- ניהול קבצים: קריאה, כתיבה, עריכה, חיפוש ורישום של קבצים בארגז החול. הקבצים נשמרים בין אינטראקציות.
- גישה לאינטרנט: חיפוש ב-Google ואחזור כתובות URL של נתונים.
- דחיסת הקשר: דחיסת הקשר אוטומטית (מופעלת בערך ב-135, 000 טוקנים) כדי לתמוך בסשנים ארוכים ורב-שלביים בלי לאבד את ההקשר או להגיע למגבלות הטוקנים.
במאמר מדריך למתחילים מוסבר איך להשתמש בסטרימינג ובשימוש רב-שלבי.
כלים נתמכים
כברירת מחדל, לסוכן יש גישה אל code_execution, google_search ו-url_context. הכלים של מערכת הקבצים מופעלים באופן אוטומטי כשמציינים את הפרמטר environment. אפשר גם להגדיר פונקציות בהתאמה אישית כדי לחבר את הסוכן לממשקי API ולכלים שלכם. צריך לציין את הפרמטר tools רק כשמבצעים התאמה אישית של קבוצת ברירת המחדל או כשמוסיפים פונקציות מותאמות אישית.
| כלי | הקלדת ערך | תיאור |
|---|---|---|
| הרצת קוד | code_execution |
הרצת פקודות של מעטפת (bash, Python, Node) עם לכידה של stdout/stderr. |
| חיפוש Google | google_search |
חיפוש באינטרנט הציבורי. |
| URL Context | url_context |
אחזור וקריאה של דפי אינטרנט. |
| מערכת קבצים | (מופעל באמצעות environment) |
קריאה, כתיבה, עריכה, חיפוש ורישום של קבצים בארגז החול. אין סוג נפרד של כלי. הוא מופעל באופן אוטומטי כשמגדירים את environment. |
| פונקציות מותאמות אישית | function |
הגדרת פונקציות בהתאמה אישית שהסוכן יכול לבקש להפעיל. מידע נוסף על בקשה להפעלת פונקציה |
| שרת MCP מרוחק | mcp_server |
רישום שרתים חיצוניים של Model Context Protocol (MCP) ככלים. מידע נוסף מופיע בקטע שרתי MCP. |
כדי להגביל את הסוכן לכלים ספציפיים, מעבירים רק את הכלים שצריך:
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"}
]
}'
קלט מולטי-מודאלי
הסוכן Antigravity תומך בקלט רב-אופני. בשלב הזה יש תמיכה רק בקלט בשפות text וimage. צריך לספק את התמונות כמחרוזות מוטבעות בקידוד Base64 (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\"
}"
בקשה להפעלת פונקציה
התכונה 'הפעלת פונקציות' מאפשרת לכם לחבר את סוכן Antigravity לממשקי API ולמסדי נתונים חיצוניים על ידי הגדרת כלים מותאמים אישית שהסוכן יכול להפעיל. למידע על מושגים כלליים, אפשר לעיין במאמר בקשות להפעלת פונקציות באמצעות Gemini API.
בדוגמה הבאה מוצגת אינטראקציה של 2 תורות. הסוכן מבקש קודם get_weather קריאה לפונקציה בהתאמה אישית, והלקוח מבצע אותה ומחזיר את התוצאה בתור השני.
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\"
}
}
]
}"
שרתי MCP
אתם יכולים לחבר את סוכן Antigravity לכלים חיצוניים על ידי רישום של שרתי Model Context Protocol (MCP) מרוחקים. הסוכן תומך בשרתי MCP מרוחקים באמצעות HTTP שניתן להזרמה.
כשרושמים שרת MCP, צריך לציין את השדות הבאים במערך tools:
| שדה | סוג | נדרש | תיאור |
|---|---|---|---|
type |
מחרוזת | כן | חייב להיות "mcp_server". |
name |
מחרוזת | כן | מזהה ייחודי של השרת. הערך חייב להיות אלפאנומרי (בהתאם ל-^[a-z0-9_-]+$) ובאותיות קטנות בלבד. |
url |
מחרוזת | כן | כתובת ה-URL של נקודת הקצה של שרת ה-MCP המרוחק. |
headers |
אובייקט | לא | כותרות מותאמות אישית (למשל, אימות) שנשלחות עם בקשות. |
allowed_tools |
מערך | לא | רשימה של שמות הכלים שמותר להפעיל. אם לא מציינים כלים, כל הכלים מותרים. |
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"
}]
}'
התאמה אישית של הסוכן
אפשר להרחיב את יכולות הסוכן Antigravity על ידי התאמה אישית של ההוראות, הכלים והסביבה שלו. הסוכן תומך בגישה מקורית למערכת הקבצים להתאמה אישית: אפשר לטעון קבצים כמו AGENTS.md להוראות ולמיומנויות בתיקייה .agents/skills/ ישירות לארגז החול, או להעביר את ההגדרה בתוך שורה במועד האינטראקציה. אפשר לבצע איטרציה על ההגדרה בשורה ואז לשמור אותה כסוכן מנוהל כשמוכנים.
לפרטים מלאים על בניית סוכנים בהתאמה אישית, אפשר לעיין במאמר בניית סוכנים מנוהלים.
ביצוע ברקע
משימות של סוכני AI שכוללות חשיבה רציונלית מרובת שלבים, הרצת קוד או פעולות על קבצים יכולות להימשך כמה דקות. כדי להפעיל את האינטראקציה באופן אסינכרוני, משתמשים ב-background=True. ה-API מחזיר באופן מיידי מזהה אינטראקציה שאתם שולחים אליו בקשות עד שהסטטוס הוא completed או 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"
כדי להריץ ברקע, צריך להשתמש ב-store=True, שמוגדר כברירת מחדל. כדי לקבל עדכוני התקדמות בזמן אמת במהלך הפעלה ברקע, אפשר לעיין במאמר בנושא הזרמת אינטראקציות ברקע.
אפשר לבטל אינטראקציה ברקע באמצעות השיטה 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"
כשאינטראקציה ברקע כוללת כלים עם מצב (stateful) (כמו הרצת קוד בסביבת ארגז חול), משתמשים ב-environment_id מהאינטראקציה שהושלמה כדי להמשיך באותה סביבה. כך הסוכן ימשיך מהמקום שבו הוא הפסיק, עם כל הקבצים והמצב הקודם.
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
}"
סביבה
כל קריאה יוצרת ארגז חול של Linux או משתמשת בארגז חול קיים. הפרמטר environment מופיע בשלוש צורות:
| טופס | תיאור |
|---|---|
"remote" |
הקצאת ארגז חול חדש עם הגדרות ברירת מחדל. |
"env_abc123" |
אפשר לעשות שימוש חוזר בסביבה קיימת לפי מזהה, ולשמור את כל הקבצים והמצב. |
{...} |
מלא EnvironmentConfig עם מקורות מותאמים אישית וכללי רשת. |
פרטים על מקורות (Git, GCS, inline), רשתות, מחזור חיים ומגבלות משאבים זמינים במאמר סביבות.
טריגרים
טריגרים מאפשרים לתזמן הפעלה אוטומטית של סוכן לפי לוח זמנים של cron. גורם מפעיל קושר בין סוכן, סביבה, הנחיה ולוח זמנים למשאב קבוע שמופעל ללא התערבות ידנית. כל הרצה משתמשת מחדש באותה סביבה, כך שקבצים שנוצרו בהרצה אחת נשמרים וגלויים להרצה הבאה.
יצירת טריגר
יוצרים טריגר על ידי ציון של תזמון cron, אזור זמן והגדרת האינטראקציה. הטריגר מתחיל בסטטוס active ויופעל בזמן ה-cron התואם הבא. שומרים את הערך id שמוחזר כדי לנהל את הטריגר בשיחות הבאות.
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"}
]
}
}
}
}'
הבקשה של CreateTrigger מקבלת את השדות הבאים:
| שדה | סוג | נדרש | תיאור |
|---|---|---|---|
schedule |
מחרוזת | כן | ביטוי Cron (לדוגמה, 0 * * * * לשעה, 0 9 * * 1-5 לבוקר של יום חול). |
time_zone |
מחרוזת | כן | אזור זמן של IANA (למשל, UTC, America/Argentina/Buenos_Aires). |
display_name |
מחרוזת | לא | שם הטריגר שקריא לבני אדם. |
max_consecutive_failures |
מספר שלם | לא | מספר הכשלים המקסימלי לפני שהטריגר מושהה אוטומטית. ברירת מחדל: 5. |
execution_timeout_seconds |
מספר שלם | לא | זמן קצוב לתפוגה לכל הפעלה בשניות. ברירת מחדל: 600. |
interaction |
אובייקט | כן | CreateInteractionRequest שמגדיר את הסוכן, הקלט, הכלים והסביבה. |
התשובה כוללת את השדות העיקריים הבאים:
| שדה | סוג | תיאור |
|---|---|---|
id |
מחרוזת | מזהה ייחודי של הטריגר. משתמשים בערך הזה בכל הפעולות הבאות. |
status |
מחרוזת | המצב הנוכחי: active, paused או disabled. |
next_run_time |
מחרוזת | חותמת זמן בפורמט ISO 8601 של ההפעלה המתוזמנת הבאה. |
consecutive_failure_count |
מספר שלם | מספר הביצועים הרצופים שנכשלו מאז ההצלחה האחרונה. |
הצגת רשימת הטריגרים
אחזור של כל הטריגרים שמשויכים לפרויקט.
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"
קבלת טריגר
אחזור ההגדרה המלאה והמצב הנוכחי של טריגר יחיד.
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"
השהיה והמשך
אתם יכולים להשהות טריגר כדי להפסיק את ההפעלות המתוזמנות, ולהמשיך אותו כדי להפעיל מחדש את התזמון. השהיה לא משפיעה על הפעלות ידניות.
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"}'
מחיקת טריגר
להסיר טריגר באופן סופי. היסטוריית ההרצה הקודמת לא נמחקת.
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"
הפעלת טריגר באופן מיידי
הפעלת טריגר על פי דרישה בלי לחכות למועד המתוזמן הבא. הפעולה הזו תעבוד גם אם ההדק מושהה.
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"
הצגת רשימת ההרצות
עיון בהיסטוריית הביצוע של טריגר כל הרצה כוללת status, חותמות זמן, interaction_id שאפשר להשתמש בו כדי לאחזר את הפלט המלא של האינטראקציה וenvironment_id שמאשר שכל ההרצות משתמשות באותו ארגז חול.
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"
זמינות ומחירים
סוכן Antigravity זמין בגרסת Preview דרך Interactions API ב-Google AI Studio וב-Gemini API, גם בפרויקטים בתוכנית בחינם וגם בפרויקטים בתוכנית בתשלום.
התמחור מבוסס על מודל של תשלום לפי שימוש, בהתאם לטוקנים של מודל Gemini הבסיסי ולכלים שבהם הסוכן משתמש. בניגוד לבקשת צ'אט רגילה שמפיקה פלט יחיד, אינטראקציה של Antigravity היא תהליך עבודה מבוסס-סוכן. בקשה אחת מפעילה לולאה אוטונומית של ניתוח, הפעלת כלי, הפעלת קוד וניהול קבצים. פרויקטים בתוכנית ללא תשלום כוללים מכסת שימוש ומגבלת קצב ללא תשלום.
אינטראקציות אנטי-גרביטציה מפעילות לולאות אוטונומיות מרובות שלבים ויכולות לצרוך מספר משמעותי של טוקנים. הגדרת אמצעי בקרה על התקציב בבקשה כדי להגביל את השימוש בטוקנים. אפשר גם לעקוב אחרי ההתקדמות בזמן אמת באמצעות סטרימינג של SSE, או לבטל בקשות שפועלות.
אמצעי בקרה לניהול תקציב
הגדירו את max_total_tokens בתוך agent_config (עם "type": "antigravity") כדי להגביל את המספר הכולל של הטוקנים (קלט + פלט + חשיבה) שאינטראקציה יכולה לצרוך.
טוקנים שמאוחסנים במטמון לא נכללים במגבלה הזו. כשהסוכן מגיע למגבלה, האינטראקציה נפסקת ומוחזרת עם status: "incomplete". ההגבלה היא על בסיס מיטב המאמצים: השימוש בפועל עשוי לחרוג ממנה מעט, בהתאם למועד שבו הסוכן בודק את התקציב בין השלבים.
מגדירים את התקציב בבקשה לאינטראקציה ב-agent_config לצד agent ו-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"
}
]
}
}'
המשך אינטראקציה לא שלמה
כשאינטראקציה מחזירה status: "incomplete", העבודה וההקשר של הנציג נשמרים. כדי להמשיך את האינטראקציה מהמקום שבו היא הסתיימה, צריך לשלוח אינטראקציה חדשה עם הפניה לאינטראקציה המקורית id ו-environment_id. לאינטראקציה החדשה מוקצה תקציב משלה 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
}
}'
עלויות משוערות
העלויות משתנות בהתאם למורכבות המשימה. הסוכן קובע באופן אוטונומי כמה קריאות לכלים, הפעלות קוד ופעולות על קבצים נדרשות. האומדנים הבאים מבוססים על הרצות.
| קטגוריית משימה | טוקנים של קלט | טוקנים של פלט | עלות רגילה |
|---|---|---|---|
| מחקר וסינתזת מידע | 100,000–500,000 | 10,000 עד 40,000 | 0.30$ – 1.00$ |
| יצירת מסמכים ותוכן | 100,000–500,000 | 15,000–50,000 | 0.30$ – 1.30$ |
| עיצוב תהליכים ומערכות | 100,000–400,000 | 10,000 עד 30,000 | 0.25$-0.80$ |
| עיבוד וניתוח נתונים | 300,000 עד 3 מיליון | 30,000–150,000 | 0.70$ – 3.25$ |
בדרך כלל, 50-70% מאסימוני הקלט נשמרים במטמון. בתהליכי עבודה מורכבים מבוססי-סוכנים עם הרבה קריאות לכלים, יכולים להצטבר 3-5 מיליון טוקנים באינטראקציה אחת, והעלויות יכולות להגיע ל-5$בערך.
השימוש במחשוב בסביבה (CPU, זיכרון, הרצה בארגז חול) לא מחויב במהלך תקופת התצוגה המקדימה.
מגבלות
- סטטוס גרסת טרום-השקה: סוכן Antigravity ו-Interactions API. יכול להיות שיהיו שינויים בתכונות ובסכימות.
- הגדרת יצירה לא נתמכת: הפרמטרים הבאים לא נתמכים ומחזירים שגיאה 400:
temperature,top_p,top_k,stop_sequences,max_output_tokens. - פלט מובנה: סוכן Antigravity לא תומך בפלט מובנה.
- כלים שלא זמינים: אין עדיין תמיכה ב-
file_search, ב-computer_useוב-google_maps. - מגבלות של MCP מרוחק: אין תמיכה בתעבורת אירועים שנשלחים מהשרת (SSE) (צריך להשתמש ב-HTTP שניתן להזרמה). בנוסף, שם השרת
nameחייב להיות באותיות קטנות בלבד ואלפאנומרי (שימוש באותיות גדולות יפעיל שגיאה כללית400 Bad Request). - כלי למערכת הקבצים: אין כלי למערכת הקבצים כרגע. הוא חלק מ
environment. - דרישה של החנות: כדי להריץ את הסוכן באמצעות
background=True, צריךstore=True. - קריאה לפונקציה רק במצב stateful: קריאה לפונקציה נתמכת רק במצב stateful. כדי להמשיך את התור, צריך להשתמש ב-
previous_interaction_id. אי אפשר לשחזר את ההיסטוריה באופן ידני (מצב חסר מצב). - סוגים לא נתמכים של נתונים מרובי-אופנים. בשלב הזה אין תמיכה בקלט של אודיו, וידאו ומסמכים. מותר להשתמש רק בטקסט ובתמונה.
המאמרים הבאים
- מדריך למתחילים: שיחות רב-שלביות וסטרימינג.
- יצירת סוכנים בהתאמה אישית: הוראות, מיומנויות ושמירת סוכנים בהתאמה אישית.
- סביבות: הגדרת ארגז חול, מקורות, רשת.
- Deep Research Agent: משימות מחקר ארוכות.
- Interactions API: ממשק ה-API הבסיסי.