عامل ضد جاذبه

عامل Antigravity یک عامل مدیریت‌شده‌ی همه‌منظوره در رابط برنامه‌نویسی Gemini است. یک فراخوانی API به شما عاملی می‌دهد که در داخل جعبه‌ی شنی امن لینوکس شما که توسط گوگل میزبانی می‌شود، استدلال می‌کند، کد را اجرا می‌کند، فایل‌ها را مدیریت می‌کند و وب را مرور می‌کند.

این برنامه توسط Gemini 3.5 Flash پشتیبانی می‌شود و از همان سیستم عامل Antigravity IDE استفاده می‌کند. از طریق Interactions API و Google AI Studio در دسترس است.

پایتون

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)

جاوا اسکریپت

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);

استراحت

curl -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": "Read Hacker News, summarize the top 10 stories, and save the results as a PDF.",
    "environment": "remote"
}'

قابلیت‌ها

هر تماس می‌تواند یک سندباکس لینوکس را فراهم کند و یک حلقه استفاده از ابزار را آغاز کند. عامل برنامه‌ریزی می‌کند، عمل می‌کند، نتایج را مشاهده می‌کند و تا زمانی که کار انجام شود، تکرار می‌کند.

  • اجرای کد: اجرای دستورات Bash، Python و Node.js. نصب بسته‌ها، اجرای تست‌ها، ساخت برنامه‌ها.
  • مدیریت فایل: خواندن، نوشتن، ویرایش، جستجو و فهرست کردن فایل‌ها در محیط سندباکس. فایل‌ها در تعاملات مختلف باقی می‌مانند.
  • دسترسی به وب: جستجوی گوگل و دریافت داده‌ها از طریق URL.
  • فشرده‌سازی متن: فشرده‌سازی خودکار متن (در حدود ۱۳۵ هزار توکن فعال می‌شود) برای پشتیبانی از جلسات طولانی مدت و چند نوبتی بدون از دست دادن متن یا رسیدن به محدودیت‌های توکن.

برای استفاده چند نوبتی و پخش جریانی، به شروع سریع مراجعه کنید.

ابزارهای پشتیبانی شده

به طور پیش‌فرض، عامل به code_execution ، google_search و url_context دسترسی دارد. ابزارهای سیستم فایل به طور خودکار هنگام تعیین پارامتر environment فعال می‌شوند. همچنین می‌توانید توابع سفارشی را برای اتصال عامل به APIها و ابزارهای خود تعریف کنید. فقط هنگام سفارشی‌سازی یا محدود کردن مجموعه پیش‌فرض یا هنگام اضافه کردن توابع سفارشی، باید پارامتر tools را مشخص کنید.

ابزار مقدار نوع توضیحات
اجرای کد code_execution اجرای دستورات پوسته (bash، Python، Node) با ضبط stdout/stderr.
جستجوی گوگل google_search در وب عمومی جستجو کنید.
متن URL url_context صفحات وب را دریافت و مطالعه کنید.
سیستم فایل (از طریق environment فعال می‌شود) خواندن، نوشتن، ویرایش، جستجو و فهرست کردن فایل‌ها در محیط سندباکس. بدون نوع ابزار جداگانه؛ با تنظیم environment ، به‌طور خودکار فعال می‌شود.
توابع سفارشی function توابع سفارشی را تعریف کنید که عامل می‌تواند درخواست اجرای آنها را داشته باشد. به فراخوانی تابع مراجعه کنید.

برای محدود کردن عامل به ابزارهای خاص، فقط ابزارهای مورد نیاز خود را ارسال کنید:

پایتون

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)

جاوا اسکریپت

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);

استراحت

curl -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": "Search for the latest AI research papers on reasoning and summarize them.",
    "environment": "remote",
    "tools": [
        {"type": "google_search"},
        {"type": "url_context"}
    ]
}'

ورودی چندوجهی

عامل Antigravity از ورودی‌های چندوجهی پشتیبانی می‌کند. در حال حاضر، فقط ورودی‌های text و image پشتیبانی می‌شوند. تصاویر باید به صورت رشته‌های ( data ) کدگذاری شده با base64 درون‌خطی ارائه شوند.

پایتون

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",
)

جاوا اسکریپت


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 });

استراحت

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" \
-H "Api-Revision: 2026-05-20" \
-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ها و پایگاه‌های داده خارجی متصل کنید. برای مفاهیم کلی، به فراخوانی تابع با API Gemini مراجعه کنید.

مثال زیر یک تعامل دو نوبتی را نشان می‌دهد. ابتدا عامل یک فراخوانی تابع سفارشی get_weather را درخواست می‌کند و کلاینت آن را اجرا کرده و نتیجه را در نوبت دوم برمی‌گرداند.

پایتون

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}")

جاوا اسکریپت

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}`);
}

استراحت

# 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" \
  -H "Api-Revision: 2026-05-20" \
  -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" \
  -H "Api-Revision: 2026-05-20" \
  -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\"
              }
          }
      ]
  }"

سفارشی‌سازی عامل

شما می‌توانید عامل Antigravity را با سفارشی‌سازی دستورالعمل‌ها، ابزارها و محیط آن گسترش دهید. این عامل از رویکرد بومی سیستم فایل برای سفارشی‌سازی پشتیبانی می‌کند: می‌توانید فایل‌هایی مانند AGENTS.md را برای دستورالعمل‌ها و مهارت‌ها تحت .agents/skills/ مستقیماً در sandbox مانت کنید، یا پیکربندی را به صورت درون‌خطی در زمان تعامل منتقل کنید. می‌توانید پیکربندی خود را به صورت درون‌خطی تکرار کنید و سپس وقتی آماده شدید، آن را به عنوان یک عامل مدیریت‌شده ذخیره کنید.

برای جزئیات کامل در مورد نحوه ساخت عامل‌های سفارشی، به بخش «ساخت عامل‌های مدیریت‌شده» مراجعه کنید.

محیط‌ها

هر فراخوانی یک سندباکس لینوکس ایجاد یا دوباره استفاده می‌کند. پارامتر environment سه شکل دارد:

فرم توضیحات
"remote" یک سندباکس جدید با تنظیمات پیش‌فرض فراهم کنید.
"env_abc123" استفاده مجدد از یک محیط موجود بر اساس شناسه، با حفظ تمام فایل‌ها و وضعیت.
{...} پیکربندی کامل EnvironmentConfig با منابع سفارشی و قوانین شبکه.

برای جزئیات بیشتر در مورد منابع (Git، GCS، درون‌خطی)، شبکه‌سازی، چرخه حیات و محدودیت‌های منابع، به بخش محیط‌ها مراجعه کنید.

موجودی و قیمت‌گذاری

عامل ضد جاذبه از طریق Interactions API در Google AI Studio و Gemini API به صورت پیش‌نمایش در دسترس است.

قیمت‌گذاری از یک مدل پرداخت به ازای استفاده پیروی می‌کند که بر اساس توکن‌های مدل Gemini و ابزارهایی که عامل استفاده می‌کند، می‌باشد. برخلاف یک درخواست چت استاندارد که یک خروجی واحد تولید می‌کند، تعامل Antigravity یک گردش کار عامل‌محور است. یک درخواست واحد، یک حلقه مستقل از استدلال، اجرای ابزار، اجرای کد و مدیریت فایل را فعال می‌کند.

هزینه‌های تخمینی

هزینه‌ها بر اساس پیچیدگی وظیفه متفاوت است. عامل به طور خودکار تعداد فراخوانی‌های ابزار، اجرای کد و عملیات فایل مورد نیاز را تعیین می‌کند. تخمین‌های زیر بر اساس اجراها هستند.

دسته بندی وظایف توکن‌های ورودی توکن‌های خروجی هزینه معمول
تحقیق و ترکیب اطلاعات ۱۰۰ هزار تا ۵۰۰ هزار ۱۰ هزار تا ۴۰ هزار ۰.۳۰ تا ۱.۰۰ دلار
تولید سند و محتوا ۱۰۰ هزار تا ۵۰۰ هزار ۱۵ هزار تا ۵۰ هزار ۰.۳۰ تا ۱.۳۰ دلار
طراحی فرآیند و سیستم ۱۰۰ هزار تا ۴۰۰ هزار ۱۰ هزار تا ۳۰ هزار ۰.۲۵ تا ۰.۸۰ دلار
پردازش و تحلیل داده‌ها ۳۰۰ هزار تا ۳ میلیون ۳۰ هزار تا ۱۵۰ هزار ۰.۷۰ تا ۳.۲۵ دلار

۵۰ تا ۷۰ درصد از توکن‌های ورودی معمولاً ذخیره می‌شوند. گردش‌های کاری پیچیده با فراخوانی‌های ابزار زیاد می‌توانند ۳ تا ۵ میلیون توکن را در یک تعامل واحد جمع‌آوری کنند که هزینه‌ای تا حدود ۵ دلار دارد.

محاسبات محیطی (پردازنده، حافظه، اجرای سندباکس) در طول دوره پیش‌نمایش هزینه‌ای دریافت نمی‌کند .

محدودیت‌ها

  • وضعیت پیش‌نمایش: عامل ضد جاذبه و API تعاملات در پیش‌نمایش هستند. ویژگی‌ها و طرحواره‌ها ممکن است تغییر کنند.
  • پیکربندی نسل پشتیبانی نشده: پارامترهای زیر پشتیبانی نمی‌شوند و خطای ۴۰۰ را برمی‌گردانند: temperature ، top_p ، top_k ، stop_sequences ، max_output_tokens .
  • خروجی ساختاریافته: عامل Antigravity از خروجی‌های ساختاریافته پشتیبانی نمی‌کند.
  • ابزارهای موجود: file_search ، computer_use ، google_maps و mcp هنوز پشتیبانی نمی‌شوند.
  • ابزار سیستم فایل: در حال حاضر هیچ ابزار سیستم فایلی وجود ندارد. این بخشی از environment است.
  • پس‌زمینه: عامل از استفاده از background=True پشتیبانی نمی‌کند و store=True نیاز دارد.
  • فراخوانی تابع فقط با وضعیت: فراخوانی تابع فقط در حالت با وضعیت پشتیبانی می‌شود. برای ادامه نوبت باید previous_interaction_id استفاده کنید؛ بازسازی دستی تاریخچه (حالت بدون وضعیت) پشتیبانی نمی‌شود.
  • انواع چندوجهی پشتیبانی نمی‌شوند. ورودی‌های صدا، ویدئو و سند در حال حاضر پشتیبانی نمی‌شوند. فقط متن و تصویر مجاز هستند.

قدم بعدی چیست؟