前言
去年底接了一个需求:给公司内部运营团队搭一个智能助手,要能查数据、调 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 感受一下,有算力补贴,测试成本不高。
参考资料