前言

去年底接了一个需求:给公司内部运营团队搭一个智能助手,要能查数据、调 API、还要能多轮对话。一开始我的方案是自己起一台 ECS,跑 FastAPI + LangChain,把 Agent 的状态存 Redis,感觉挺稳。

但维护起来是真的烦。模型调用偶尔超时、服务扩容要手动改配置、偶发的 OOM 问题每次都要 SSH 上去查日志——这些和业务逻辑无关的事情占了我大量时间。

后来换到了阿里云的 AgentRun 平台,基本上把运维的事甩掉了。这篇文章记录一下我的搭建过程,顺便聊聊 Serverless 架构跑 AI Agent 有哪些实际收益和坑。


什么是 AgentRun,和自己部署有什么区别

简单说,AgentRun 是基于函数计算(FC)的 AI Agent 托管平台,整合了百炼大模型服务、文件存储 NAS,把 Agent 的"部署-调用-扩缩容"这条链路打通了。

和自己在服务器上部署相比,核心区别在于:

维度 自托管方案 AgentRun
冷启动 无(服务常驻) 有,首次调用约 1-3s
扩缩容 手动或自定义 HPA 自动,按请求量弹性
运维成本 需要监控、重启、日志管理 无,平台负责
状态持久化 自建 Redis/DB 内置 NAS 挂载方案
计费方式 包年包月(服务器) 按调用量计费

对于调用量不均匀的内部工具型 Agent(白天高峰、晚上几乎没流量),Serverless 计费优势很明显。


实操:3 分钟用模板跑起来第一个 Agent

平台提供了几个开箱即用的模板,我先用「舆情分析专家」模板跑了个 Demo 验证可行性。

操作步骤:

第一步:开通服务

前往 AgentRun 体验页 开通函数计算 FC + 百炼套餐,新用户有算力补贴,我当时用邀请链接注册省了一笔测试费用。

第二步:进控制台,选模板创建

登录后进入函数计算控制台 → AgentRun → 新建 Agent → 选择「舆情分析专家」模板。模板已经预设了 Prompt、工具调用链和 PydanticAI 框架配置,直接点创建。

第三步:配置大模型

在 Agent 配置页选择百炼提供的模型(我用的是 qwen-max),填入 API Key(在百炼控制台生成),保存。

第四步:测试对话

在 Agent 详情页直接发起对话测试:

用户:帮我分析一下近期关于"新能源汽车"的舆情走势

Agent:正在检索相关信息...
根据近期数据,"新能源汽车"相关舆情整体偏正面,
主要热点集中在:
1. 特斯拉降价引发的行业连锁反应(负面,占比约 32%)
2. 比亚迪海外市场拓展进展(正面,占比约 45%)
3. 充电桩基础设施补贴政策(中性偏正面,占比约 23%)
建议关注方向:...

整个过程没写一行代码,3 分钟跑起来了。


进阶:高代码模式自定义 Agent 逻辑

模板能快速验证,但实际业务需要定制化。AgentRun 支持高代码模式,可以用 Python 写完整的 Agent 逻辑。

以下是一个最简单的自定义 Agent 框架(基于 PydanticAI):

from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIModel
import os

# 配置百炼模型(兼容 OpenAI 接口协议)
model = OpenAIModel(
    model_name="qwen-max",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key=os.environ["DASHSCOPE_API_KEY"]
)

# 定义 Agent
agent = Agent(
    model=model,
    system_prompt="你是一个专业的数据分析助手,帮助用户处理和解读业务数据。"
)

# 注册工具函数
@agent.tool_plain
async def get_sales_data(product: str, days: int) -> str:
    """查询指定产品近 N 天的销售数据"""
    # 实际业务中替换为真实数据查询逻辑
    return f"{product}{days} 天销售额:¥128,400,同比增长 12.3%"

# 主函数(AgentRun 会自动调用)
async def main(query: str) -> str:
    result = await agent.run(query)
    return result.data

将这段代码部署到 AgentRun 后,平台自动处理:

  • HTTP 端点暴露(可通过域名直接调用)
  • 自动扩缩容(突发流量时自动增加实例)
  • 日志收集(函数计算日志服务)

调用示例:

curl -X POST https://your-agent-domain.fc.aliyuncs.com/invoke \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"query": "帮我分析一下上周的销售情况"}'

有状态 Agent:结合 NAS 持久化对话历史

默认情况下函数实例是无状态的,每次调用上下文独立。如果需要多轮对话或跨会话记忆,需要挂载 NAS 存储。

开通 FC + 百炼 + NAS 套餐后,在 Agent 配置中启用文件存储:

import json
import os

MEMORY_DIR = "/mnt/nas/agent-memory"  # NAS 挂载路径

def load_session(session_id: str) -> list:
    """加载会话历史"""
    path = f"{MEMORY_DIR}/{session_id}.json"
    if os.path.exists(path):
        with open(path, "r") as f:
            return json.load(f)
    return []

def save_session(session_id: str, history: list):
    """保存会话历史"""
    os.makedirs(MEMORY_DIR, exist_ok=True)
    path = f"{MEMORY_DIR}/{session_id}.json"
    with open(path, "w") as f:
        json.dump(history, f, ensure_ascii=False)

这样就实现了跨实例的状态持久化,多轮对话场景下用户体验显著提升。


踩坑记录

坑 1:冷启动导致第一次响应慢

Serverless 的通病。函数实例在一段时间无请求后会回收,下次调用需要重新拉起。

解法:在 FC 控制台配置「预留实例数 = 1」,保持至少一个实例常驻,牺牲一点点费用换掉冷启动问题。对于重要的生产 Agent 这个钱花得值。

坑 2:大模型返回超时

默认函数超时时间是 60 秒,复杂的 Agent 调用链(多工具串联)可能超时。

解法:在函数配置中将超时时间调整到 300 秒,同时在代码里加好错误处理和重试逻辑。

坑 3:NAS 首次挂载延迟

NAS 在首次挂载时有约 2-3 秒额外延迟。

解法:提前在函数初始化阶段做一次轻量级的 NAS 预热读取,后续调用不会有明显延迟。


成本粗估

以一个日均 500 次调用的内部工具 Agent 为例(每次调用约 2000 token):

  • 函数计算调用费:约 ¥3-5/月
  • 百炼 qwen-max token 费用:约 ¥30-50/月
  • NAS 存储费(10GB):约 ¥2/月

合计约 ¥35-57/月,比一台入门 ECS 实例(¥120+/月)便宜很多,且完全免运维。


总结

用 AgentRun 搭生产级 AI Agent,对我来说最大的收益不是省了多少钱,而是把时间还给了业务逻辑本身。运维那摊子事交给平台,我只需要关心 Agent 的行为是否符合预期。

适合用 AgentRun 的场景:

  • 调用量不均匀的内部工具(智能助手、报表分析)
  • 快速验证 Agent 想法的原型项目
  • 成本敏感、没有专职运维的小团队

不太适合的场景:

  • 对延迟极度敏感(< 100ms 响应要求)且调用量很大的场景(此时常驻 ECS 可能更合适)

如果你也在考虑搭 AI Agent,可以先从 AgentRun 平台体验入口 跑个 Demo 感受一下,有算力补贴,测试成本不高。


Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐