AI-04 融入业务:智能生成、分类与推荐¶
不做孤立的“AI 页面”,让模型在正确的位置辅助用户完成任务¶
AI 特色功能的价值,来自它改善了哪一步业务
接通模型 API、实现流式输出或建立知识库,只说明项目具备了 AI 技术能力。用户真正关心的是:填写内容是否更省事、信息能否更快归类、面对大量选择时能否得到有依据的建议。
本节介绍三种常见业务模式:智能文本生成、智能分类和智能推荐。它们可以共用前面完成的模型客户端,但业务目标、风险和评价方法不同。学生只需选择一种与项目最相关的模式,完成一个小而稳定的功能闭环。
本节学习目标
从真实业务问题中选择合适的 AI 模式,设计模型输入、结构化输出、人工确认和规则兜底,将 AI 结果接入现有页面与 Service,并分别使用内容检查、分类指标和推荐反馈验证效果。
返回上一节:构建 RAG 知识库 返回扩展篇导读 进入下一节:Tool Calling、MCP 与智能体
🎯 本节完成后,你要交付¶
| 成果 | 要求 |
|---|---|
| AI 业务功能任务卡 | 明确用户、业务步骤、输入、输出、风险和预期价值 |
| 一种可运行 AI 功能 | 在生成、分类、推荐中选择一种,接入真实业务页面 |
| 业务规则与模型边界 | 说明哪些由代码决定,哪些由模型建议,谁最终确认 |
| 结构化输出处理 | 后端校验模型结果,不直接信任返回文本 |
| 失败与降级方案 | AI 不可用或结果无效时,原有业务仍能继续 |
| 效果评测记录 | 使用固定数据对效果、风险、耗时和成本进行验证 |
| 演示材料 | 展示正常结果、人工修改和失败降级各一个案例 |
本节不是要求同时完成三类功能
文本生成、分类和推荐各自都可以成为一个完整特色功能。课程项目优先选择一个最贴近业务、能够测试和稳定演示的方向。
一、从业务问题选择 AI 模式¶
1. 三种模式分别解决什么问题¶
| 模式 | 典型问题 | 模型输出 | 用户角色 |
|---|---|---|---|
| 智能生成 | 用户不知道怎样组织文字 | 草稿、摘要、说明或通知 | 编辑和确认 |
| 智能分类 | 信息量大,人工归类重复 | 标签、类别和理由 | 确认或纠正 |
| 智能推荐 | 选项很多,用户难以筛选 | 候选项排序和推荐理由 | 自主选择 |
2. 选择判断¶
如果问题可以由确定规则稳定解决,应优先使用规则。
| 问题 | 更合适的方式 |
|---|---|
| 报修描述表达不完整 | AI 生成草稿 |
| 标题中包含“停电”就进入电力类 | 关键词规则 |
| 描述复杂,需要在多个相近类别中判断 | AI 分类建议 |
| 按发布时间倒序展示活动 | SQL 排序 |
| 根据兴趣、时间和报名条件选择活动 | 规则筛选 + AI 推荐理由 |
| 查询当前用户订单状态 | 业务数据库查询 |
3. 不要从技术名称出发¶
错误思路:
推荐思路:
二、设计 AI 与业务规则的边界¶
1. 三层职责¶
2. AI 不应直接决定的内容¶
- 是否授予管理员权限;
- 是否通过退款、处罚或资助申请;
- 订单金额、账户余额和库存变化;
- 用户是否有权查看或修改数据;
- 医疗、法律或财务高风险结论;
- 重要记录的最终删除;
- 无法人工复核的自动外部操作。
这些结果必须由后端规则、正式流程或授权人员决定。
3. 自动化等级¶
| 等级 | AI 作用 | 示例 | 建议 |
|---|---|---|---|
| L0 | 不使用 AI | 用户手工填写 | 基础流程必须保留 |
| L1 | 提供草稿或建议 | 生成商品描述 | 用户确认 |
| L2 | 自动填入但允许修改 | 建议报修类别 | 明确标记来源 |
| L3 | 低风险自动处理并抽查 | 公开内容添加辅助标签 | 记录结果,可回退 |
| L4 | 直接执行高风险决定 | 自动审批退款 | 不适合作为课程初次实践 |
课程项目推荐从 L1 或 L2 开始。
三、填写 AI 业务功能任务卡¶
| 项目 | 内容 |
|---|---|
| 功能名称 | 【填写】 |
| AI 模式 | 【生成 / 分类 / 推荐】 |
| 目标用户 | 【填写】 |
| 当前困难 | 【哪一步重复、困难或选择过多】 |
| 使用位置 | 【现有业务流程中的页面和步骤】 |
| 模型输入 | 【用户输入和允许使用的业务数据】 |
| 模型输出 | 【草稿、类别或推荐列表】 |
| 确定规则 | 【必须由代码执行的限制】 |
| 人工确认 | 【谁确认、怎样修改或拒绝】 |
| 失败降级 | 【AI 不可用时怎样继续】 |
| 成功指标 | 【怎样判断确实改善业务】 |
| 明确不做 | 【本次范围之外的能力】 |
示例:宿舍报修智能分类¶
四、模式一:智能文本生成¶
1. 适合的业务场景¶
- 根据表单要点生成商品描述;
- 根据活动信息生成通知草稿;
- 根据处理记录生成工作摘要;
- 将口语化报修描述整理为规范文字;
- 根据项目数据生成阶段报告初稿;
- 根据已有内容生成不同长度的摘要。
2. 文本生成的完整闭环¶
模型生成接口与正式保存接口应分开:
3. 输入应优先使用结构化字段¶
相比把整个页面和数据库记录都交给模型,优先只发送必要字段:
模型不需要接收:
- 用户密码、Token 和手机号;
- 商品表全部内部字段;
- 其他用户的信息;
- 管理员备注;
- 数据库连接和服务器配置。
4. 提示词示例¶
5. 后端校验输出¶
长度检查只能过滤明显异常,不能判断事实是否正确。最终仍需用户核对。
6. 生成结果怎样评价¶
| 维度 | 检查问题 |
|---|---|
| 忠实 | 是否只使用输入中存在的事实 |
| 完整 | 是否保留必要要点 |
| 清晰 | 用户是否容易理解 |
| 合规 | 是否包含隐私、攻击性或夸大内容 |
| 可编辑 | 用户是否可以修改或放弃 |
| 有价值 | 相比手工填写是否节省时间或提高完整度 |
可以记录用户修改率:
修改率不是越低越好,也不能单独代表质量。它需要结合任务难度和用户反馈解释。
五、模式二:智能分类¶
1. 分类任务必须有明确标签¶
模型不能自由创造业务类别。后端应从数据库读取当前允许的标签:
模型输出只能从这些代码中选择。
2. 结构化输出¶
推荐模型返回:
不要要求模型返回一个难以稳定解析的自然语言段落:
3. 定义项目自己的结果对象¶
4. 后端必须再次校验¶
即使提示词要求“只能选择给定标签”,模型仍可能输出不存在的值。后端枚举或数据库校验才是真正的业务边界。
5. 分类 Service 流程¶
模型返回 JSON 时仍可能出现:
- Markdown 代码围栏;
- 字段缺失;
- 类型错误;
- 额外说明;
- 无效类别;
- 截断的 JSON。
解析失败时应进入人工选择,不应继续猜测。
6. 规则与模型混合¶
确定性强的规则可以先处理:
模型适合处理语言表达,正式的紧急规则仍由代码执行。
7. 分类效果怎样评测¶
先准备人工标注的数据:
| 编号 | 故障描述 | 正确类别 |
|---|---|---|
| C01 | 宿舍水龙头关不严,一直滴水 | WATER |
| C02 | 书桌旁插座没有电 | ELECTRIC |
| C03 | 衣柜门脱落 | FURNITURE |
| C04 | 校园网能连接但无法访问网页 | NETWORK |
至少记录:
- 总测试数量;
- 正确数量;
- 各类别正确数量;
- 哪些类别容易混淆;
- 解析失败数量;
- 需要人工复核数量;
- 与原有规则或人工方式的差异。
基础正确率:
数据类别严重不均衡时,只看总正确率可能产生误导。例如 90% 数据都属于 OTHER,始终预测 OTHER 也可能得到很高数值。应同时查看每个类别的表现。
8. 混淆记录¶
| 真实类别 | 预测类别 | 次数 | 可能原因 | 改进 |
|---|---|---|---|---|
| WATER | OTHER | 3 | 描述过短 | 引导用户填写故障现象 |
| ELECTRIC | FURNITURE | 2 | “台灯坏了”含义不清 | 增加人工确认 |
改进顺序建议:
- 检查标签定义是否重叠;
- 检查输入是否包含足够信息;
- 增加每个标签的说明和示例;
- 调整提示词;
- 再考虑更换模型。
六、模式三:智能推荐¶
1. 推荐不是让模型凭空列出内容¶
错误做法:
模型可能生成数据库中不存在的活动。
推荐必须从真实候选项中选择:
2. 推荐的四个阶段¶
| 阶段 | 主要方式 | 示例 |
|---|---|---|
| 候选获取 | 数据库查询 | 查询仍可报名的活动 |
| 硬规则过滤 | 后端代码 | 排除满员、冲突和无权限活动 |
| 排序 | 规则、相似度或模型 | 兴趣和时间匹配 |
| 解释 | 模型生成 | “与你关注的编程主题一致” |
大模型不应绕过前两步。
3. 推荐输入¶
只使用经过授权且与任务相关的数据:
不要未经说明使用:
- 私人聊天记录;
- 精确位置历史;
- 与推荐无关的个人资料;
- 其他平台抓取的数据;
- 用户已经拒绝使用的数据。
4. 候选项必须带稳定 ID¶
模型返回:
后端只接受候选列表中真实存在的 ID。
5. 校验推荐结果¶
实际去重应按 id 执行;示例中的 distinct() 依赖 RecommendedItem 的相等性定义。更稳妥的实现可以使用 LinkedHashMap<Long, RecommendedItem> 保持顺序并按 ID 去重。
6. 一个更稳定的混合推荐¶
第一版可以让代码负责排序,让模型只生成理由:
优点:
- 排序可解释、可复现;
- 模型不可用时仍能返回推荐列表;
- 模型不会创造不存在的候选项;
- 测试更容易;
- 成本和响应时间更可控。
7. 冷启动¶
新用户没有历史数据时,可以:
- 让用户主动选择兴趣;
- 展示热门或近期内容;
- 根据当前页面上下文推荐;
- 允许“不使用个性化推荐”;
- 不通过猜测隐私属性建立画像。
8. 推荐效果怎样评测¶
课程项目不必搭建复杂推荐实验平台,可以记录:
| 指标 | 说明 |
|---|---|
| 有效候选率 | 推荐项是否都真实存在且当前可用 |
| 点击率 | 用户是否点击推荐项 |
| 采纳率 | 用户是否报名、收藏或选择 |
| 无效推荐数 | 已满员、过期、无权限或不存在的项目 |
| 多样性 | 是否总是推荐同一类内容 |
| 用户反馈 | 推荐理由是否有帮助 |
| 降级可用性 | 模型失败时规则推荐是否正常 |
点击率和采纳率受到页面位置、标题和活动本身影响,不能单独证明模型质量。
七、统一设计结构化输出¶
生成长文本时可以返回字符串,分类和推荐更适合结构化 JSON。
1. 为什么需要结构化输出¶
后端需要明确知道:
- 类别代码是什么;
- 推荐对象 ID 是什么;
- 是否需要人工复核;
- 推荐理由对应哪个对象;
- 哪些字段可以进入后续业务。
自然语言很难可靠解析。
2. 提示词中给出严格格式¶
3. 后端处理顺序¶
不要使用字符串截取寻找关键字段,也不要使用 eval 执行模型输出。
4. 结构化不等于可信¶
即使 JSON 格式完全正确,也可能包含:
格式校验通过后,仍需业务校验。
八、将 AI 功能接入现有模块¶
1. 推荐的模块边界¶
AI 辅助接口不直接替代正式业务接口。
2. 接口示例¶
| 功能 | AI 辅助接口 | 正式业务接口 |
|---|---|---|
| 商品描述 | POST /api/ai/product-description |
POST /api/products |
| 报修分类 | POST /api/ai/repair-category |
POST /api/repairs |
| 活动推荐 | POST /api/ai/activity-recommendations |
POST /api/registrations |
3. 权限仍由原业务判断¶
- AI 可以建议类别,但不能授予操作权限;
- AI 可以推荐活动,但报名接口仍检查名额和时间;
- AI 可以生成商品描述,但发布接口仍检查字段和用户身份;
- AI 生成成功不代表正式业务一定提交成功;
- 正式业务数据以提交时的最新状态为准。
4. 防止状态过期¶
推荐时活动有名额,不代表用户点击报名时仍有名额。正式提交必须重新查询:
不能因为 AI 推荐过就跳过并发和状态校验。
九、设计人工确认与反馈¶
1. 不同功能的确认方式¶
| 功能 | 确认方式 |
|---|---|
| 文本生成 | 用户编辑后主动保存 |
| 智能分类 | 用户选择接受或改成其他类别 |
| 智能推荐 | 用户自主点击,不自动替用户报名 |
2. 页面标识¶
推荐使用:
不要把建议显示为确定结论:
3. 收集有用反馈¶
可以记录:
- 是否采用生成草稿;
- 是否修改建议类别;
- 是否点击推荐;
- 用户选择的正确类别;
- 用户主动给出的“有帮助 / 没帮助”;
- 失败类型和人工处理结果。
不应为了评测偷偷记录与功能无关的个人数据。
4. 反馈不能直接成为真相¶
用户修改结果可能因为个人偏好,也可能是误操作。反馈数据进入后续优化前,需要:
- 去除重复和异常记录;
- 保护用户隐私;
- 由业务人员抽样确认;
- 说明数据用途;
- 避免把攻击性输入重新用于提示词。
十、失败、降级与成本控制¶
1. 每种模式的降级¶
| 模式 | AI 成功 | AI 失败 |
|---|---|---|
| 文本生成 | 返回可编辑草稿 | 用户手工填写 |
| 智能分类 | 返回建议类别 | 显示原有类别选择 |
| 智能推荐 | 返回排序或理由 | 使用热门、最新或规则推荐 |
2. 不保存半成品¶
以下情况不应自动写入正式业务:
- 模型响应超时;
- JSON 解析失败;
- 类别代码无效;
- 推荐 ID 不在候选集合;
- 输出被截断;
- 用户尚未确认;
- 页面连接中断。
3. 降低调用量¶
- 用户点击后再调用,不随每次输入自动调用;
- 输入未变化时避免重复生成;
- 规则能完成的步骤不用模型;
- 推荐理由可以按候选结果缓存;
- 限制输入、输出、候选数量和调用频率;
- 测试使用模拟客户端;
- 记录每类功能的调用次数、耗时和失败率;
- 设置平台预算或额度提醒。
4. 缓存注意事项¶
缓存前先确认:
- 输入是否包含个人数据;
- 不同用户是否允许共享结果;
- 候选项是否可能过期;
- 资料或业务状态更新后怎样失效;
- 缓存键是否包含必要版本。
不能把 A 用户的个性化结果错误返回给 B 用户。
十一、测试三类 AI 业务功能¶
1. 通用测试¶
| 编号 | 场景 | 预期 |
|---|---|---|
| COMMON-01 | 正常输入 | 返回符合当前模式的有效结果 |
| COMMON-02 | 缺少必填项 | 后端拒绝,不调用模型 |
| COMMON-03 | 超长输入 | 返回明确提示 |
| COMMON-04 | 模型超时 | 进入降级,不阻断业务 |
| COMMON-05 | 返回空内容 | 不作为成功结果 |
| COMMON-06 | 返回格式错误 | 解析失败并人工处理 |
| COMMON-07 | 恶意指令 | 不泄露数据,不执行操作 |
| COMMON-08 | 重复点击 | 不产生失控的并发调用 |
| COMMON-09 | 未登录或无权限 | 后端拒绝访问 |
| COMMON-10 | 用户放弃结果 | 不写入正式业务 |
2. 文本生成专项测试¶
- 是否保留所有必要要点;
- 是否添加不存在的事实;
- 是否出现隐私、攻击或夸大表述;
- 是否超过长度;
- 用户修改后保存的是否是修改版本;
- 重新生成是否覆盖未经确认的重要内容。
3. 分类专项测试¶
- 所有返回类别是否来自允许列表;
- 各类别是否都有测试样例;
- 相近类别是否容易混淆;
- 信息不足时是否进入人工复核;
- 紧急规则是否始终优先;
- 模型配置变化后正确率是否下降。
4. 推荐专项测试¶
- 推荐 ID 是否都来自真实候选项;
- 过期、满员和无权限项目是否已经过滤;
- 是否出现重复推荐;
- 推荐理由是否与真实字段一致;
- 新用户能否得到合理的非个性化结果;
- 模型失败时规则推荐是否正常;
- 正式操作是否重新校验最新业务状态。
5. 建立基线¶
AI 功能需要和一个简单方案比较:
| 功能 | 基线方案 |
|---|---|
| 文本生成 | 用户完全手工填写 |
| 分类 | 关键词规则或人工选择 |
| 推荐 | 最新、热门或固定规则排序 |
比较内容可以包括:
- 完成时间;
- 正确率或有效率;
- 用户修改次数;
- 错误数量;
- 调用成本;
- 失败后是否可继续。
只有比基线更有价值,AI 功能才值得保留。
十二、效果评测记录模板¶
十三、🤖 让 AI 帮你设计业务功能¶
人工必须核对:
- 功能是否真的改善业务,而不是装饰;
- 是否可以用更简单的规则完成;
- 输入数据是否必要且获得授权;
- 结构化结果是否经过业务校验;
- 人工确认是否真实存在;
- 测试集是否包含失败和边界样例;
- AI 不可用时基础流程是否正常;
- 是否有可解释的基线比较。
十四、常见问题与修正方法¶
| 常见问题 | 后果 | 修正方法 |
|---|---|---|
| 三种功能全部一起做 | 范围失控、无法充分测试 | 只选择一种完成闭环 |
| 增加孤立聊天窗口 | 与业务无关 | 放到用户真正需要帮助的步骤 |
| AI 直接保存正式数据 | 错误内容进入业务 | 返回草稿或建议,用户确认后提交 |
| 模型自由创造类别 | 数据无法统计和流转 | 后端提供允许列表并再次校验 |
| 模型自由推荐对象 | 出现不存在或不可用内容 | 从真实候选集合选择稳定 ID |
| 用提示词替代权限 | 产生越权风险 | 权限始终由后端执行 |
| JSON 能解析就直接使用 | 无效代码或 ID 进入业务 | 继续执行枚举、候选和状态校验 |
| 推荐绕过硬规则 | 推荐满员或无权限项目 | 先由代码过滤,再排序和解释 |
| 只记录成功截图 | 无法判断真实效果 | 使用固定测试集和基线 |
| 只看总分类正确率 | 忽略少数类别失败 | 查看各类别和混淆情况 |
| 模型失败后页面不能操作 | AI 阻断核心业务 | 保留手工输入、选择和规则推荐 |
| 未经同意使用个人数据 | 隐私和信任风险 | 最少数据、明确用途、允许关闭 |
十五、提交前自查¶
业务设计¶
- 只选择一种主要 AI 模式;
- 功能对应一个明确用户问题;
- 已比较普通规则或人工基线;
- 功能位于现有业务流程的正确步骤;
- AI 结果不会直接执行高风险操作;
- 明确模型、后端规则和用户各自职责。
数据与输出¶
- 只发送完成任务所需的数据;
- 未经授权的隐私数据不会进入模型;
- 分类标签来自系统允许列表;
- 推荐对象来自真实候选集合;
- 结构化输出经过解析和业务校验;
- 文本草稿可编辑、放弃和重新生成。
稳定性与效果¶
- 模型失败时原有业务仍能继续;
- 已限制输入、输出、候选数量和调用频率;
- 正式提交时重新检查最新业务状态;
- 已完成正常、异常、边界和恶意输入测试;
- 已使用固定数据与基线比较;
- 已记录失败案例、人工修改和降级结果;
- 演示包含正常、修改和失败降级。
本节小结¶
AI 融入业务的关键不是模型调用次数,而是职责分工和可验证价值:
真实业务困难 → 选择生成、分类或推荐 → 后端确定规则 → 模型提供草稿或建议 → 结构化校验 → 人工确认 → 失败降级 → 与基线比较
完成本节后,你已经能够把模型能力放进具体业务,同时不让不确定输出破坏权限、状态和数据。下一节将认识 Tool Calling、MCP 与智能体,理解模型怎样在受控条件下选择和调用工具。
进入下一节:AI-05 Tool Calling、MCP 与智能体 返回上一节:AI-03 构建 RAG 知识库 返回扩展篇导读