以下以 Web 服务(REST API) vs AI Agent(Text2SQL 场景) 为例,从架构、代码、数据流、性能、改造工作量五个维度,逐项拆解改造细节:
✅ 1. 架构对比
维度 | Web 服务(REST API) | AI Agent(Text2SQL) |
---|---|---|
典型结构 | 路由 → 鉴权 → 业务逻辑 → 数据库 → 响应 | 输入解析 → LLM 推理 → SQL 查询 → 结果格式化 |
状态管理 | 通常有会话、缓存、数据库连接 | 无状态,每轮对话独立 |
I/O 特征 | 高并发、低延迟、短请求 | 低并发、长延迟(LLM+DB)、多阶段 |
计算密集度 | 低至中(JSON 处理、DB 查询) | 中至高(LLM 推理、SQL 解析) |
✅ 2. 代码级改造对比
🔹 Web 服务(以 Flask 为例)
原始代码(简化):
@app.route("/order", methods=["POST"])
def create_order():
user_id = request.json["user_id"]
item_id = request.json["item_id"]
# 鉴权
if not auth_service.validate(user_id):
return "Unauthorized", 401
# 业务逻辑
price = db.query("SELECT price FROM items WHERE id = ?", item_id)
db.execute("INSERT INTO orders(user_id, item_id, price) VALUES (?, ?, ?)", user_id, item_id, price)
return jsonify({"status": "success"})
Dandelion DAG 改造后:
原函数 | 改造为 |
---|---|
鉴权调用 | → AuthFunction (通信函数,调用外部 Auth API) |
查询价格 | → QueryPriceFunction (通信函数,调用 DB) |
插入订单 | → InsertOrderFunction (通信函数,调用 DB) |
响应封装 | → FormatResponseFunction (纯计算函数) |
DAG 结构:
输入 → AuthFunction → QueryPriceFunction → InsertOrderFunction → FormatResponseFunction → 输出
🔹 AI Agent(Text2SQL)
原始代码(简化):
def text2sql_pipeline(prompt):
# 1. 解析输入
parsed = parse_prompt(prompt)
# 2. 调用 LLM
sql = llm_client.generate_sql(parsed)
# 3. 执行 SQL
result = db.execute(sql)
# 4. 格式化结果
return format_result(result)
Dandelion DAG 改造后:
原函数 | 改造为 |
---|---|
解析输入 | → ParsePromptFunction (纯计算函数) |
LLM 调用 | → LLMCallFunction (通信函数,调用 OpenAI API) |
SQL 执行 | → SQLQueryFunction (通信函数,调用 DB) |
结果格式化 | → FormatResultFunction (纯计算函数) |
DAG 结构:
输入 → ParsePromptFunction → LLMCallFunction → SQLQueryFunction → FormatResultFunction → 输出
✅ 3. 数据流与调度差异
维度 | Web 服务 | AI Agent |
---|---|---|
输入数据量 | 小(几 KB JSON) | 中(用户 prompt + schema) |
输出数据量 | 小(JSON) | 中(LLM 输出 + DB 结果) |
阶段间数据传递 | 简单(ID、价格) | 复杂(SQL 字符串、结果集) |
并发需求 | 高(1000+ RPS) | 低(<10 RPS) |
冷启动容忍度 | 低(用户交互) | 中(后台任务) |
✅ 4. 性能与资源影响
维度 | Web 服务改造后 | AI Agent改造后 |
---|---|---|
冷启动延迟 | <1ms(纯计算) | <1ms(纯计算)+ LLM延迟(外部) |
内存占用 | 极低(按需分配) | 极低(按需分配) |
CPU利用率 | 高(短任务密集) | 低(长等待 I/O) |
弹性扩展 | 秒级扩缩容 | 无需频繁扩缩容 |
✅ 5. 改造工作量对比(以千行代码为例)
任务 | Web 服务 | AI Agent |
---|---|---|
代码拆分 | 需重写路由层、鉴权层、DB 层为独立函数 | 较自然,逻辑已分阶段 |
通信函数封装 | 需封装 Auth API、DB 查询为 HTTP 调用 | 需封装 LLM API、DB 查询 |
测试复杂度 | 高(需模拟鉴权、DB 状态) | 中(LLM 可 mock,DB 可 mock) |
开发人力 | 2-3 人日(熟练者) | 0.5-1 人日(学生案例) |
✅ 总结建议表
场景 | 是否推荐改造 | 主要挑战 | 建议优先级 |
---|---|---|---|
Web 服务 | ⚠️ 谨慎推荐 | 路由/会话/状态管理复杂 | 低优先级,除非无状态微服务 |
AI Agent | ✅ 强烈推荐 | 逻辑天然 DAG,改造简单 | 高优先级,适合首批试点 |
评论