11 产品化与业务集成
学习目标:能把 Agent 接入真实业务系统,完成查询、生成、审批、通知、写入等任务。 重点度:需要会(3 分)—— 技术深度低但就业价值高 前置要求:Ch1-10 全部章节
概述#
Agent 最终不是 Demo, 而是要进入真实业务流程。
本章技术深度低(3 分),但在国内"接飞书/企微/钉钉 + 多租户 + 计费"恰恰是把 Demo 变成可交付产品、能直接对应岗位 JD 的关键——就业价值高于其技术分值。
很多工程师卡在这一步:技术做得再好,不接进业务系统就没法上线。
企业系统接入#
常见接入方式#
| 接入方式 | 适用场景 | 特点 |
|---|---|---|
| REST API | 通用业务系统 | 标准、易调试 |
| Webhook | 事件驱动(订单创建/状态变更) | 异步、被动 |
| GraphQL | 复杂查询 | 灵活但实现复杂 |
| gRPC | 内部微服务 | 高性能 |
| 消息队列 | 异步任务、解耦 | Kafka/RabbitMQ/RocketMQ |
| 定时任务 | 批量、定时 | Cron / Airflow |
异步任务模式#
Agent 任务通常耗时较长(几十秒到几分钟),不能让 HTTP 请求阻塞:
text
1. 用户提交任务
POST /api/agent/run
→ 立即返回 task_id
2. Agent 异步执行
后台 worker 跑 Agent
更新 task 状态: pending → running → done
3. 用户查状态
GET /api/agent/{task_id}/status
→ {status: "running", progress: 60%}
4. 完成通知
Webhook / WebSocket / IM 推送
"你的任务完成了, 点击查看"Webhook 设计#
python
# Agent 完成后回调业务系统
@app.post("/api/agent/{task_id}/webhook")
def register_webhook(task_id, callback_url):
task = load_task(task_id)
task.webhook_url = callback_url
async def on_task_complete(task):
if task.webhook_url:
await httpx.post(task.webhook_url, json={
"task_id": task.id,
"status": "completed",
"result": task.result
})IM 渠道接入(飞书 / 企微 / 钉钉 / Slack)#
为什么 IM 是 Agent 重要入口#
国内企业 Agent 大量通过 IM 渠道使用:
- 用户已经在 IM 里工作,不用切换工具
- IM 天然支持多轮对话、富文本、卡片
- 群聊场景支持多人协作
- 移动端友好
飞书接入#
python
# 飞书机器人接收消息
@app.post("/feishu/webhook")
def feishu_webhook(event):
message = event["message"]
user_id = message["user_id"]
text = message["text"]
# 异步触发 Agent
task_id = agent.run_async(user_id, text)
# 立即回复"处理中"
feishu.reply(message_id, "收到, 正在处理...")
# Agent 完成后推送结果
async def on_agent_complete(task):
feishu.send_card(
user_id=task.user_id,
card={
"header": {"title": "任务完成"},
"elements": [
{"tag": "div", "text": task.result_summary},
{"tag": "action", "actions": [
{"tag": "button", "text": "查看详情", "url": task.detail_url},
{"tag": "button", "text": "重新生成", "type": "primary"}
]}
]
}
)企微 / 钉钉 / Slack#
接入模式类似,差异在:
| 渠道 | 特点 |
|---|---|
| 飞书 | 卡片能力强、API 完善、企业生态好 |
| 企微 | 腾讯生态、与微信打通、国内合规友好 |
| 钉钉 | 阿里生态、用户量大、审批流强 |
| Slack | 海外主流、App 生态丰富 |
多渠道适配#
python
class ChannelAdapter:
def receive_message(self, raw_event) -> Message: ...
def send_message(self, user_id, text) -> None: ...
def send_card(self, user_id, card) -> None: ...
def send_approval(self, user_id, request) -> Approval: ...
class FeishuAdapter(ChannelAdapter): ...
class WeComAdapter(ChannelAdapter): ...
class DingTalkAdapter(ChannelAdapter): ...
class SlackAdapter(ChannelAdapter): ...让 Agent 逻辑与渠道解耦——同一套 Agent 能接多个 IM。
浏览器接入与 Agent UI#
Web Agent UI#
除了 IM,还有 Web 界面:
- 聊天界面:类 ChatGPT 的对话交互
- 任务面板:列表展示进行中/已完成任务
- 审批中心:集中处理待审批操作
- 结果展示:报告/图表/代码 diff 等富内容
Agent UI 关键设计#
- 流式输出:长回答边生成边显示
- 工具调用展示:让用户看到 Agent 在调用什么工具
- 进度反馈:长任务显示进度条
- 打断与取消:用户能随时打断
- 历史会话:可回看历史任务
- 审批入口:高风险操作有醒目审批 UI
多租户与计量#
多租户隔离#
text
Tenant A (公司 A)
├── 用户 A1, A2, A3
├── 数据: A 公司的知识库、文件
├── 配置: A 公司的 Agent 配置、prompt
└── 凭证: A 公司的 API Key、OAuth
Tenant B (公司 B)
├── 用户 B1, B2
├── 数据: B 公司的知识库、文件 (A 看不到)
└── 配置: B 公司的 Agent 配置关键隔离维度:
- 数据隔离:DB 行级隔离(tenant_id 字段)或库级隔离
- 配置隔离:每个 tenant 独立 Agent 配置
- 凭证隔离:每个 tenant 独立 API Key / OAuth
- 资源隔离:CPU/内存/存储配额
- 权限隔离:每个 tenant 内部独立权限体系
成本计量#
python
# 按 tenant / user / feature 维度统计成本
cost_record = {
"tenant_id": "tenant_a",
"user_id": "user_123",
"feature": "code_review",
"task_id": "task_789",
"llm_cost": 0.05,
"tool_cost": 0.01,
"infra_cost": 0.005,
"total_cost": 0.065,
"timestamp": "..."
}
# 实时统计 + 配额限制
if tenant_a.used_budget > tenant_a.budget_limit:
raise BudgetExceededError("公司 A 已超本月预算")计费模型#
| 模型 | 适用 |
|---|---|
| 按任务计费 | 每个任务固定价 |
| 按 token 计费 | 透明但用户难预估 |
| 按订阅 | 月费/年费, 含额度 |
| 按席位 | 每用户每月固定 |
| 混合 | 订阅 + 超额按量 |
Agent Marketplace#
是什么#
类似 App Store,让第三方开发者发布 Agent / Skill,用户一键安装:
- Dify Marketplace:Dify 平台 Agent 商店
- Coze Bot Store:字节 Coze 的 Bot 商店
- ClawHub:OpenClaw 技能市场(见 Ch8)
- 企业内部 Marketplace:公司内部 Agent / 工具共享
关键能力#
- 发布 / 搜索 / 评分 / 评论
- 版本管理 / 兼容性
- 权限声明 / 安装审核(见 Ch8 安全)
- 收益分成 / 计费
上线 checklist#
把 Agent Demo 变成可上线产品,至少要解决:
text
[ ] 业务集成
[ ] 接入目标业务系统 (API/Webhook/MQ)
[ ] IM 渠道接入 (飞书/企微/钉钉)
[ ] 异步任务模式 (不阻塞 HTTP)
[ ] 任务状态查询接口
[ ] 完成通知机制
[ ] 多租户
[ ] tenant 隔离 (数据/配置/凭证/资源)
[ ] 资源配额
[ ] 成本计量
[ ] 安全合规
[ ] 权限分级 (Ch10)
[ ] 审计日志 (Ch10)
[ ] 数据脱敏 (Ch10)
[ ] 备案合规 (国内大模型需备案)
[ ] 可观测
[ ] Trace 收集 (Ch9)
[ ] 评测回归 (Ch9)
[ ] 监控告警
[ ] 运维
[ ] 部署 / 灰度 / 回滚
[ ] 容量规划
[ ] 故障预案阶段产出#
完成本章后应该能:
- 设计 Agent 异步任务模式(task_id + 状态查询 + 完成通知)
- 接入飞书 / 企微 / 钉钉 / Slack(用 ChannelAdapter 解耦)
- 实现 Webhook 回调业务系统
- 设计 Web Agent UI(流式输出 / 工具调用展示 / 审批入口)
- 实现多租户隔离(数据/配置/凭证/资源)
- 实现成本计量(按 tenant/user/feature 维度)
- 设计计费模型(按任务/token/订阅/席位)
- 评估 Agent Marketplace 集成
- 跑通上线 checklist(业务集成 + 多租户 + 安全合规 + 可观测 + 运维)
至此主线 10 章完成。下一步按目标岗位深入(见岗位分支附录 A-G)。