痛点:AI Agent 在复杂业务中为何容易失控?
在代购系统的开发中,一个常见的误区是让 AI Agent 直接处理所有流程。以 taocarts 代购系统为例,最初尝试让 AI Agent 直接处理采购、支付、物流等全流程,结果并不理想。采购环节的汇率波动、物流状态的异常、对账时的数据错位——当缺乏明确的业务边界时,AI Agent 就像一个没有地图的司机,随机生成代码,导致逻辑漏洞频出,代码库混乱不堪。
问题的核心在于:AI Agent 需要一套结构化的领域知识作为导航。否则,它的决策缺乏依据,无法在复杂的业务状态间正确流转。
解法:知识图谱作为 AI Agent 的“导航仪”
在构建代购系统的过程中,一个关键的思路是:先构建领域知识图谱。代购系统的核心链路——采购、支付、物流、对账、售后——每个节点都需要定义清晰的实体关系、状态流转和边界条件。
以下是一个简化的知识图谱节点定义示例,用于描述采购单的状态机:
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, List
class OrderState(str, Enum):
PENDING_PAYMENT = "待支付"
PAID = "已支付"
IN_PROCUREMENT = "采购中"
SHIPPED = "已发货"
COMPLETED = "已完成"
ANOMALY = "异常"
@dataclass
class ProcurementNode:
entity_type: str = "采购单"
states: List[OrderState] = field(default_factory=lambda: list(OrderState))
transitions: Dict[OrderState, List[OrderState]] = field(default_factory=lambda: {
OrderState.PENDING_PAYMENT: [OrderState.PAID],
OrderState.PAID: [OrderState.IN_PROCUREMENT],
OrderState.IN_PROCUREMENT: [OrderState.SHIPPED, OrderState.ANOMALY],
OrderState.SHIPPED: [OrderState.COMPLETED],
})
boundaries: Dict[str, str] = field(default_factory=lambda: {
"汇率锁定": "支付时锁定当日汇率",
"采购时限": "支付后48小时内完成采购",
})
def is_valid_transition(self, current: OrderState, target: OrderState) -> bool:
return target in self.transitions.get(current, [])
**设计思路**:这个类定义了采购单的生命周期。`states` 列出所有可能的状态,`transitions` 定义状态之间的合法转换,`boundaries` 则设定了业务规则(如汇率锁定和时限)。AI Agent 在决策时,必须遵循这些约束,而不是随意生成代码。
有了这个知识图谱,AI Agent 的决策就有了依据。它不再是随机生成代码,而是在预设的轨道上运行。
## 三个落地场景:从理论到实战
### 场景一:智能采购与汇率锁定
代购系统最头疼的就是汇率波动。过去需要人工盯盘,现在 AI Agent 结合知识图谱中的汇率锁定机制,可以在用户下单时自动锁定汇率,并在采购环节实时计算最优汇率。
```python
import logging
from decimal import Decimal
import requests
logger = logging.getLogger(__name__)
class ExchangeRateService:
def __init__(self, knowledge_graph):
self.kg = knowledge_graph
def lock_exchange_rate(self, order):
rate_rule = self.kg.get_rule("exchange_rate_locking")
current_rate = self._fetch_current_rate()
locked_rate = rate_rule.apply(current_rate, base=Decimal("1.0"))
order.set_locked_rate(locked_rate)
logger.info("Order %s: rate locked at %s", order.id, locked_rate)
def _fetch_current_rate(self) -> Decimal:
try:
resp = requests.get(
"https://api.exchangerate.host/latest",
params={"base": "USD", "symbols": "CNY"},
timeout=5,
)
resp.raise_for_status()
return Decimal(str(resp.json()["rates"]["CNY"]))
except (requests.RequestException, KeyError, TypeError) as e:
logger.error("Failed to fetch exchange rate: %s", e)
raise
设计思路:lock_exchange_rate 函数从知识图谱中读取“汇率锁定机制”的定义,该机制可能包含锁定规则(如锁定时的汇率基准、有效期等)。Agent 调用该函数时,自动应用规则,避免了人工干预的延迟和错误。
这个功能上线后,汇率相关的客诉大幅缩水,用户满意度提升了不少。
场景二:订单状态机与自动化异常处理
订单状态机是知识图谱的核心模块。AI Agent 根据状态机定义,自动处理订单流转。例如,当物流轨迹显示“清关异常”时,Agent 会触发售后流程,自动生成工单并通知用户。
import logging
logger = logging.getLogger(__name__)
def handle_logistics_anomaly(order_id: str, anomaly_type: str) -> None:
state_machine = load_state_machine()
current_state = state_machine.get_state(order_id)
if current_state == OrderState.SHIPPED and anomaly_type == "清关异常":
state_machine.transition(order_id, OrderState.ANOMALY)
ticket_id = create_ticket(
order_id=order_id,
title="清关异常处理",
description=f"订单 {order_id} 清关环节出现异常",
priority="high",
)
notify_user(
user_id=get_order_owner(order_id),
message=f"您的包裹(订单 {order_id})正在清关,预计延迟 2-3 个工作日",
)
logger.info("Order %s: ticket %s created", order_id, ticket_id)
设计思路:handle_logistics_anomaly 函数首先查询当前订单状态,然后根据异常类型执行状态转移。state_machine.transition 方法会检查转移是否合法(例如,从“物流中”到“售后处理”是否在知识图谱的 transitions 中定义)。如果合法,则执行后续的工单创建和用户通知。
这个场景表明:AI Agent 不是取代人,而是让人的做事边界扩大。以前需要人工盯着的异常情况,现在 Agent 能自动处理大部分,团队只需要处理少数复杂案例。
场景三:多平台商品采集与对账自动化
代购系统支持从多个电商平台采集商品。AI Agent 根据知识图谱中的商品映射规则,自动完成数据清洗、价格比对和库存同步。对账环节更是从原来的几天缩短到几分钟。
效果数据:从“能用”到“好用”
经过几个月的迭代,系统效果相当显著:
- 订单处理效率提升了好几倍
- 异常处理时间从原来的大半天缩短到几分钟
- 代码生成的准确率从最初的不到一半提升到相当高的水平
- 基础设施成本控制在一个非常合理的范围
总结:AI Agent 落地的三个关键
回顾整个过程,可以总结三个关键点:
知识图谱先行:没有清晰的领域知识图谱,AI Agent 就是无头苍蝇。先花时间梳理业务逻辑、实体关系和边界条件。
明确的 SOP 和边界约束:AI Agent 需要知道什么能做、什么不能做。例如汇率锁定机制、订单状态流转规则,这些都是必须定义的硬约束。
从局部到全局:不要试图一次性覆盖所有场景。先从采购、支付等核心环节开始,验证可行后再逐步扩展。
AI Agent 不是魔法,它是工具。关键在于如何用知识图谱为 Agent 导航,让它在正确的轨道上发挥价值。