Как Google Antigravity SDK упрощает создание ИИ-агентов
Недавно наткнулся на репозиторий от Google с интригующим названием Antigravity. Если вы когда-нибудь пробовали собрать вменяемого ИИ-агента на базе Gemini, то знаете, сколько боли доставляет управление состоянием диалога, подключение инструментов и обработка мультимодальных данных. Google Antigravity SDK — это попытка сделать «рельсы» для таких задач, чтобы мы не изобретали велосипед в каждом новом проекте.
Что это вообще такое
По сути, это прослойка над Gemini, которая берет на себя всю грязную работу по управлению жизненным циклом агента. Разработчики называют это «инфраструктурным слоем», который абстрагирует агентный цикл. Если говорить по-простому: вы описываете, что агент должен делать, а SDK разбирается, как это запустить, как сохранить историю и как связать это с внешними API.
Интересный момент: SDK поставляется с бинарным рантаймом. Просто склонировать репозиторий не получится — нужно ставить через pip, чтобы подтянулись специфичные для платформы файлы.
Как это работает на практике
Самый быстрый способ войти в тему — класс Agent. Он работает как асинхронный контекстный менеджер. Вы создаете конфиг, передаете инструкции и начинаете чат.
import asyncio
from google.antigravity import Agent, LocalAgentConfig
async def main():
config = LocalAgentConfig(
system_instructions="Ты — эксперт по навигации в коде.",
)
async with Agent(config) as agent:
response = await agent.chat("Какие файлы лежат в текущей папке?")
print(await response.text())
if __name__ == "__main__":
asyncio.run(main())
Кстати, по умолчанию агент запускается в режиме «только чтение». Это здравое решение для безопасности: чтобы разрешить ему реально что-то менять или запускать команды, нужно явно прокинуть CapabilitiesConfig.
Три фишки, которые мне понравились
1. Честный стриминг мыслей и инструментов
Обычно мы видим только финальный ответ. Здесь же можно заглянуть «под капот» рассуждений модели в реальном времени. Это полезно, если вы строите сложный интерфейс, где пользователю нужно видеть, что агент не завис, а думает.
# Стриминг рассуждений
async for thought in response.thoughts:
show_thinking_bubble(thought)
# Стриминг вызовов инструментов
async for call in response.tool_calls:
show_executing_spinner(call.name)
2. Мультимодальность без костылей
Работа с файлами реализована очень удобно. Можно просто передать путь к PDF или картинке, а SDK сам разберется с MIME-типами и кодированием.
from google.antigravity.types import from_file, Image
# Просто указываем путь
pdf_spec = from_file("spec.pdf")
# Или передаем байты напрямую
chart_image = Image(data=raw_bytes, mime_type="image/png")
prompt = ["Проанализируй схему и документ:", chart_image, pdf_spec]
response = await agent.chat(prompt)
3. Поддержка MCP
Для тех, кто следит за индустрией, поддержка Model Context Protocol (MCP) — это большой плюс. Это значит, что вы можете подключать к агенту любые существующие серверы инструментов, написанные по этому протоколу, не переписывая их под Antigravity.
Архитектура и уровни доступа
В SDK прослеживается четкая иерархия, что удобно для кастомизации:
- Layer 1 (Agent): Для тех, кому нужно «просто запустить». Все включено, минимум настроек.
- Layer 2 (Conversation): Здесь уже можно копаться в истории шагов (
conversation.history), управлять сессией и интроспекцией состояния. - Layer 3 (Connection): Самый низкий уровень, где описывается транспорт и взаимодействие с бэкендом (например, Vertex AI или локальный рантайм).
Безопасность и политики
В проекте реализована декларативная система политик. Можно запретить всё по дефолту, разрешить только чтение файлов, а на выполнение команд в терминале повесить хук с подтверждением от пользователя. Это выглядит гораздо надежнее, чем пытаться прописать ограничения в системном промпте.
policies = [
deny("*"),
allow("view_file"),
ask_user("run_command", handler=my_handler),
]
Стоит ли пробовать
Проект выглядит как крепкий фундамент для корпоративных инструментов. Если вы работаете в экосистеме Google Cloud (Vertex AI) или просто активно используете Gemini, Antigravity SDK сэкономит кучу времени на написании обвязки для агентов.
Из минусов — зависимость от скомпилированного бинарника может усложнить отладку в специфических окружениях, но для большинства стандартных задач на Python это не станет преградой. Библиотека подойдет тем, кто перерос простые чат-боты и хочет строить автономные системы с четким контролем прав доступа и сложной логикой инструментов.