用 20 行 Python 把 AI Agent 跑在本地——Google Antigravity SDK 实战入门

2026-05-20 15 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:9 分钟

调用远程 Agent API,是过去两年开发者把 AI 嵌入应用的主流路径。这条路走得越深,痛点越明显:每次请求都要跨网络往返,延迟从几百毫秒飙到数秒;定制只能靠 prompt 拼凑,想改推理策略就得和平台方博弈;一旦服务端限流或断线,你的产品就跟着停摆。Google 在 I/O 2026 上发布的 Antigravity SDK,给出了另一条路——用纯 Python 在本地构建、定制和部署 Agent,20 行代码就能跑起来。

远程 Agent 的三道硬伤

先看问题。假设你用某家 Agent 平台的 REST API:

import requests

resp = requests.post(
    "https://agent-platform.example.com/v1/run",
    json={"prompt": user_input, "tools": ["search", "calculator"]},
    headers={"Authorization": "Bearer <API_KEY>"},
)
result = resp.json()

这段代码背后藏着三个麻烦:

  1. 延迟不可控——每轮推理都要走一次 HTTPS 往返,工具调用更是多轮交互,网络抖动直接拖垮体验。
  2. 定制天花板低——你只能选平台预设的 tool 列表和模型参数,想加一个私有数据源检索,得等平台开放新插件。
  3. 强依赖网络——离线场景(边缘设备、内网环境)直接不可用,服务端故障时你没有任何 fallback。

Antigravity SDK 的核心思路:把 Agent 的编排引擎从云端搬到你的进程里。模型推理仍然可以调用远程 LLM,但工具注册、任务拆解、多轮循环这些编排逻辑全部本地执行——你拿到了完整的控制权。

20 行代码跑起一个本地 Agent

下面是基于 Antigravity SDK 的最小可运行示例。注意:SDK 的具体 API 签名以 Google 官方文档为准,以下代码根据发布摘要的描述构建,展示了核心用法模式,运行前需 pip install antigravity 并配置模型访问凭证。

from antigravity import Agent, tool, LocalRuntime

# 1) 定义工具——纯 Python 函数,自动被 SDK 识别
@tool(description="查指定城市的实时天气")
def get_weather(city: str) -> str:
    # 实际项目中替换为真实天气 API 调用
    return f"{city}:晴,25°C,湿度 40%"

@tool(description="做四则运算")
def calculate(expression: str) -> str:
    return str(eval(expression))  # 生产环境请用安全解析库

# 2) 创建 Agent,声明可用工具和模型
agent = Agent(
    name="weather_assistant",
    tools=[get_weather, calculate],
    model="gemini-2.5-flash",  # 本地编排,模型推理走远程
)

# 3) 本地运行时——零网络依赖的编排引擎
runtime = LocalRuntime()

# 4) 执行任务
result = runtime.run(agent, "北京今天天气怎么样?如果气温乘以2是多少?")
print(result)

算上 import 和空行,刚好 20 行。几个值得注意的设计决策:

  • @tool 装饰器把普通 Python 函数变成 Agent 可调用的工具,函数签名即接口定义,不需要额外写 JSON schema。
  • LocalRuntime 是关键——它负责在本地进程里完成"观察→思考→行动→观察"的循环,不依赖任何外部编排服务。
  • 模型参数只指定模型名,推理请求按 SDK 内置策略发出;你也可以换成本地 Ollama 端点,实现完全离线运行。

从 20 行到生产级:定制点在哪?

20 行能跑,但真实项目要的是可控。Antigravity SDK 的本地架构让几个关键定制变得自然:

自定义推理策略

远程平台通常只提供"单次调用"或固定 ReAct 循环。本地编排意味着你可以插手每一步:

from antigravity import Agent, LocalRuntime, Strategy

# 自定义策略:限制最大工具调用轮次,防止无限循环
class ConservativeStrategy(Strategy):
    max_turns = 5  # 最多 5 轮工具调用

    def should_continue(self, context):
        if context.turn_count >= self.max_turns:
            return False  # 强制收束,返回当前最佳答案
        return super().should_continue(context)

agent = Agent(
    name="safe_assistant",
    tools=[get_weather, calculate],
    model="gemini-2.5-flash",
    strategy=ConservativeStrategy(),
)

result = LocalRuntime().run(agent, "复杂查询...")

接入私有数据源

远程平台的 plugin 生态再丰富,也覆盖不了你的内部知识库。本地 Agent 直接调用你的 Python 函数,零适配成本:

@tool(description="查询公司内部订单状态")
def query_order(order_id: str) -> str:
    # 直接读本地数据库,不需要暴露到公网
    import sqlite3
    conn = sqlite3.connect("orders.db")
    row = conn.execute(
        "SELECT status, amount FROM orders WHERE id=?", (order_id,)
    ).fetchone()
    conn.close()
    return f"订单 {order_id}:状态 {row[0]},金额 {row[1]}"

agent = Agent(
    name="order_bot",
    tools=[query_order],
    model="gemini-2.5-flash",
)

函数跑在你自己的进程里,数据库连接不需要过公网——这是远程 API 方案做不到的。

离线与边缘部署

model 参数指向本地推理端点,整个 Agent 就完全离线:

agent = Agent(
    name="edge_agent",
    tools=[get_weather, calculate],
    model="ollama://localhost:11434/qwen2.5:7b",  # 本地 Ollama
)

适合工厂产线、车载系统、船舶等网络不稳定场景。

选 Antigravity 之前,想清楚这几件事

维度 远程 Agent API Antigravity 本地 SDK
延迟 每轮 HTTPS 往返 编排零网络延迟,推理仍可远程
定制 受平台插件限制 Python 函数即工具,无限扩展
离线 不支持 可完全离线(配本地模型)
运维成本 平台托管 你自己管进程和模型端点
多租户隔离 平台内置 需自行设计并发与资源隔离

本地编排不是银弹。你需要自己处理:

  • 模型端点的可用性——如果推理仍走远程 LLM,那部分网络依赖依然存在;完全离线则要自建推理服务。
  • 并发与资源——本地 Agent 跑在你的进程里,高并发场景需要设计 worker 池或异步调度。
  • 安全边界——@tool 函数拥有和你应用相同的权限,计算工具示例里用了 eval,生产环境务必替换为安全解析。

上手清单

  1. pip install antigravity(SDK 发布后从 PyPI 安装)
  2. 配置模型访问:Google Gemini 需 API Key;本地模型需先部署 Ollama 或 vLLM
  3. 从 20 行最小示例开始,先跑通一个单工具 Agent
  4. 逐步加入私有数据源工具和自定义 Strategy
  5. 压测并发场景,决定是否需要异步 Runtime 或多进程部署

Antigravity 的价值不在于"20 行"这个数字,而在于它把 Agent 的编排权从平台交回了开发者。当你需要低延迟、深度定制、或离线运行时,这个本地路径值得认真评估。


相关推荐