API、Webhook、数据库、自动化,是智能体变成“真正能力”的关键
一个不能操作真实系统的智能体,其实和“纯语言聊天机器人”没有区别。 真正有价值的智能体,一定要能够——访问数据 → 触发任务 → 调用第三方服务 → 执行自动化 → 写数据库 → 处理事件。
智能体如何连接真实世界的 4 种模式:
- API 模式
- Webhook(事件驱动)
- 数据库读写
- 自动化执行(Web / App / RPA)
⭐ Part 1:为什么“外部系统接入”决定智能体的上限?
现在 80% 的智能体都是这种:
用户提问 → 语言模型回答 → 完成
(看上去高级,但干不了活)
而真正落地的智能体长什么样子:
用户提问 → 智能体查询数据库 → 调用工具 → → 执行自动化 → 写入系统 → 通知用户
(角色从“回答”变成“执行者”)
区别是巨大的:
| 类型 | 能力 | 实际价值 |
| 语言型 Agent | 只能输出文字 | 不能改变世界 |
| 工程型 Agent | 能够执行真实动作 | 价值巨大 |
今天我们就构建第二种。
⭐ Part 2:四种真实世界的“接入方式”
一个真正的 Agent,一定要具备以下四类能力。
① API 接入:智能体最基础、最安全的“真实执行层”
API 是外部世界的统一语言。一个真正工程可维护的智能体系统,不会让模型“直接访问数据库”,而是让它调用:
API → 工具 → 执行器 → 外部系统
例如
- 创建订单(POST /orders)
- 查询用户资料(GET /users)
- 生成发票(POST /invoices)
- 飞书发送消息(feishu_sdk.send_message)
- 微信公众号草稿发布
- GitHub PR 创建
你应该如何暴露 API 给智能体?
方式 A:Action Schema(工具描述)
{
"name": "create_order",
"description": "创建一个订单",
"input_schema": {
"type": "object",
"properties": {
"user_id": {"type": "string"},
"amount": {"type": "number"}
},
"required": ["user_id", "amount"]
}
}
LLM 会自动构造参数,Executor 负责调用你的 API。
方式 B:在 Python 中写工具函数
def create_order(user_id: str, amount: float):
r = requests.post("https://api.xxx.com/orders", json={"user_id": user_id,"amount": amount
})
return r.json()
再注册:
tools = {"CreateOrder": create_order}
模型通过 Tool Router 调用它。
⭐ Part 3:Webhook(事件驱动),让智能体“自己醒来做事”
Webhook 是智能体的“感知系统”。它让智能体不用等待用户指令,而是自动启动:
- 飞书收到消息
- GitHub 有 PR
- 监控事件触发
- 数据库数据变更
- 定时任务触发
- HTTP 回调触发
- 商城有新订单
例如: 飞书 Webhook 推送:
{
"event": "message.created",
"text": "请帮我把今天日报总结一下"
}
Agent Controller:
接收到事件 → 传给智能体 → 智能体执行 → 返回执行结果
Webhook 让智能体从:
被动响应 → 主动触发
从工具 → 变成“系统的一部分”
⭐ Part4: 数据库接入(DB Connector),智能体拥有“业务视力”
企业内绝大多数操作都离不开数据库:
- 查询用户
- 获取订单
- 统计数据
- 写入记录
- 更新状态
- 审批数据
- 工作流状态更新
智能体必须能够访问数据库,但绝不能让模型直接写 SQL。
最佳实践:
做法 A:写好工具函数,让 Agent 调用
def get_user_info(user_id):
return db.query("SELECT * FROM users WHERE id = %s", (user_id,))
让 LLM 调用工具,而不是直接写 SQL。
做法 B:限制模型的权限
模型只能:
- 查询
- 聚合
- 插入经过安全校验的数据
模型不能:
- 删除表
- DDL 变更
- 不受控制的写操作
通过 Executor 实现白名单规则。
做法 C:将 DB 查询包装成 Action Schema
{
"name": "query_user",
"description": "查询用户信息",
"input_schema": {
"type": "object",
"properties": {
"user_id": {"type": "string"}
},
"required": ["user_id"]
}
}
LLM 只负责构造参数,你负责执行 SQL。安全性极高。
⭐ Part 5:自动化执行(Web / App / RPA)
这类能力让智能体真正具有“操作电脑”的能力:
- 登录后台
- 上传文件
- 获取按钮文字
- 爬取动态页面
- 操作表格
- 发布文章
- 在 App 上执行任务
常用方案:
① 浏览器自动化(Playwright / Selenium**)**
非常适合:
- 运营平台动作
- 后台管理系统
- 自媒体自动化
- 登录信息需要 cookie 的页面
在工具层定义:
def publish_to_cms(title, content):
browser.goto("https://cms.xxx.com")
browser.fill("#title", title)
browser.fill("#content", content)
browser.click("#publish")
智能体调用它 = 自动发布文章。
**② 桌面自动化(**RPA 工具)
适合:
- 财务系统
- ERP
- Windows 桌面程序
- 图形操作
工具:
- UiPath(成熟)
- TagUI(开源)
- 自研截图比对点击工具
③ 移动自动化(Appium / ATX )
适合:
- 手机 APP 自动化工作流
- 移动端录制回放
- 操作小程序
工具函数例子:
def app_click(text):
driver.find_element_by_android_uiautomator(f'new UiSelector().text("{text}")"'
).click()
模型可以自动操作 App。
⭐ Part 6:真实世界接入的标准架构
这是你未来所有智能体项目都能复用的框架图:
┌──────────────────────────────┐
│ Agent Layer │
│ (Planner / Router / Executor)│
└───────────────┬──────────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌─────────────┐
│ API Tools│ │ DB Tools │ │ RPA Tools │
└──────────┘ └──────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────┐
│ External Real World │
│ (System / DB / Browser / App / Cloud)│
└──────────────────────────────────────┘
智能体通过工具访问外部世界,工具通过安全隔离层访问真实系统。
这样做的好处是:
- 不会越权
- 安全性可以控制
- 可审计且可回溯
- 权限问题可控
- 风险可隔离
⭐ Part 7:最佳实践总结(非常关键)
-
✔ 不要让模型直接写 SQL
一定要工具白名单。
-
✔ 不要让模型直接访问 API
必须通过 Executor 统一管理。
-
✔ 所有工具必须最小化
一个函数只做一件事。
-
✔ 外部系统必须有隔离层(Proxy Layer)
避免智能体直接越权。
-
✔ 自动化要可监控(log + screenshot)
方便排查问题。
-
✔ 所有返回值必须结构化(JSON)
模型不懂 Python dict,明确定义格式。
-
✔ Webhook + Agent = 最强组合
让 Agent 不用等指令,而是自动触发。
本篇我们完成了智能体从 “语言” 到 “真实世界执行能力” 的跃迁:
- 能调用 API
- 能处理事件
- 能读写数据库
- 能操作网页和 App
- 能执行自动化任务
- 能在系统中以“执行者”角色存在
这是所有企业级智能体系统的基础能力。你现在具备构建真正落地的智能体平台的能力