跳到主要内容

不止会聊:用“聊天”的方式“办事”

多数人一提到 AI 应用,不是 RAG 检索,就是简单聊天助手——回答能聊,但真正“做事”能力有限,难以深入业务流程。要让 AI 不止回答,还能查询库存、推荐商品、创建订单、确认支付,就必须让它安全、受控地调用企业现有的业务接口。

本文用一个简洁示例演示:在 JeecgBoot AI 应用平台里,借助“插件(MCP 工具)”机制,把业务 API 封装成可被 AI 选择与调用的“工具”,让导购型 AI 具备真实交易闭环能力:查询 → 推荐 → 下单 → 支付 → 查询订单。


1. 场景与目标概述

目标:构建一个“智能导购助手”,它能:

  1. 按需求检索商品列表并筛选。
  2. 查询指定商品库存。
  3. 创建订单并提示是否支付。
  4. 完成支付(扣减库存)。
  5. 查询订单详情与分类信息。

平台:JeecgBoot AI 应用平台(已内置示例接口)。

关键能力:通过“插件”暴露结构化工具,AI 根据提示词和上下文自主选择调用顺序,形成稳定的业务流程。


2. 业务接口清单(待封装为工具)

下述接口在 JeecgBoot 示例中已内置;我们只需按规范配置为插件工具。

list_products - 查询商品列表

请求:GET /demo/shop/products
参数:

  • category (可选):分类(电子产品 / 图书 / 生活用品 / 食品)
  • keyword (可选):名称或描述关键词搜索 返回:商品数组(字段:id, name, price, category, description, stock)

check_stock - 查询商品库存

请求:GET /demo/shop/stock?productId=P001
参数:productId (必填)
返回:库存对象(productId, productName, stock, available)

create_order - 创建订单(不立即扣库存)

请求:POST /demo/shop/purchase
参数:productId(必填), quantity(必填>0), userId(可选)
返回:订单信息(id, productId, productName, quantity, unitPrice, totalAmount, status=pending, createTime)

confirm_payment - 支付并扣减库存

请求:POST /demo/shop/stock/deduct?orderId=O1001
参数:orderId(必填)
返回:扣减结果(orderId, productId, productName, deductedQuantity, remainingStock, orderStatus=paid)

get_order_details - 查询订单详情

请求:GET /demo/shop/order?orderId=O1001
参数:orderId(必填)
返回:完整订单对象

get_categories - 获取商品分类

请求:GET /demo/shop/categories
返回:分类名称数组


3. 为什么“插件(工具封装)”是关键?

AI 与业务结合的核心挑战:

  1. 安全边界:不能让模型随意构造危险请求。
  2. 语义到调用的映射:自然语言“我想买一个平板”如何匹配到 list_products
  3. 调用顺序约束:必须先查列表 → 再查库存 → 再下单 → 再支付。
  4. 数据真实性:杜绝“幻觉”商品、价格、订单号。

插件提供:

  • 工具注册(名称、描述、入参、出参)→ 让模型理解“能做什么”。
  • 结构化参数规范 → 降低模型拼错字段概率。
  • 系统级鉴权与域名控制 → 避免越权。
  • 可视化维护 → 便于增删迭代。

这本质上就是“函数调用”范式在业务侧的工程落地:用有限、可信的动作空间取代无限自由的接口访问。


4. 实现方案总览

设计思路:预先在 JeecgBoot 中维护一个“购物业务插件”,把所有电商相关接口映射为工具,AI 应用引用该插件后即可执行购物闭环。

流程示意:


5. 创建插件(MCP 管理)

进入菜单:AI应用平台MCP管理 → 点击“新增MCP”。

在弹窗中填写:

字段说明
名称插件唯一标识(建议语义化,如 shop_assistant)
类型选择“插件”
baseURLAPI 服务域名(为空则默认平台域名)
鉴权方式token 或 apikey(系统自动在 Header 传递)
token值可留空,留空则使用当前登录用户 token
描述简述用途,帮助模型理解适用场景

创建完成后进入插件详情页:

若未配置工具,AI 将没有可调用的动作,所以工具维护是“赋能 AI”的关键。

插件与 MCP 的区别与关系

这里容易混淆两个概念:MCP 本身是一套“协议规范”,而 JeecgBoot 的“插件”是平台侧对一组 HTTP 接口的快速封装与适配。理解它们的层次和演进关系,有助于后续扩展。

MCP(Model Context Protocol)是什么?

  1. 一套开放协议:统一定义“工具(function / action)”“资源(可浏览/检索的数据)”“提示词模板”等在模型上下文中的呈现与调用方式。
  2. 标准化交互形态:模型通过明确的 schema 了解可用操作,避免自由拼接不确定调用。
  3. 传输与实现解耦:协议不限定必须是 HTTP,也可以是 WebSocket、SSE 等;服务端只要按协议返回规定结构即可。
  4. 目标:让不同平台/模型对接同一能力时“零或低改造”,提升复用与治理。

JeecgBoot“插件”是什么?

  1. 产品级封装:面向已有 RESTful 接口做低成本映射,把每个接口注册为可被模型理解与调用的“工具”。
  2. 聚焦 HTTP 场景:当前形态主要支持标准的请求-响应(GET/POST 等),参数与返回结构在界面中配置。
  3. 快速落地:无需编写额外适配代码即可让业务 API 获得“被模型调用”能力。
  4. 内置鉴权与域名控制:提升安全边界管理与可视化维护效率。

什么时候选“插件”类型?(典型使用信号)

  1. 已有一组稳定的 RESTful 接口,希望“当天接入、当天可用”。
  2. 业务边界清晰(电商、工单、库存、审批等单域)。
  3. 调用模式为同步请求-响应,暂不需要事件订阅或长连接。
  4. 团队期望低学习成本与可视化维护。

什么时候考虑原生 MCP Server?

  1. 需要同时暴露“工具 + 结构化资源浏览 + 文件/文档检索”复合能力。
  2. 需要跨多系统聚合,含非 HTTP、消息队列、数据库直连等。
  3. 需要对不同模型(多家供应商)提供统一、可版本化的协议层。
  4. 需要更细颗粒的审计、回放、调用链追踪与配额治理。

简要对比(核心关注点):

维度JeecgBoot 插件原生 MCP Server
接入速度极快(界面配置)中等(需编码实现协议)
能力范围HTTP 接口函数调用任意协议下的多资源 + 函数
灵活度中(以配置为主)高(自定义行为/流式/复合逻辑)
维护门槛较高
适合阶段验证/初期扩展/多系统融合

一句话总结:MCP 是“协议标准”,插件是“快速落地的实现形态”;前者解决跨平台一致性,后者解决业务接入效率。开始用插件并不阻碍未来演进为完整 MCP 生态。

6. 配置工具:字段与规范

添加工具时需填写:

  1. 工具名称:英文/数字/下划线,插件内唯一,例如 list_products
  2. 请求方式:GET / POST / PUT / DELETE 等。
  3. 访问路径:必须以 / 开头,如 /demo/shop/products
  4. 描述:告诉 AI 何时调用、用途是什么(尽量包含触发条件关键字)。
  5. 请求参数:
    • 名称:与 API 字段一致。
    • 描述:用途 + 注意事项(是否允许为空、取值范围)。
    • 类型:string / integer / boolean / array 等。
    • 传入方式:Raw(JSON)、Form-Data、Query、Path、Header。
    • 是否必填:驱动 AI 正确补参。
    • 默认值:可减少空值错误。
  6. 输出参数:定义返回结构字段,帮助模型引用真实数据而不是幻想。

示例界面:

将所有业务接口按上述格式录入:

提示:描述中适当加入“触发词”(如“推荐”“库存”“下单”“支付”),能让模型更准确匹配调用时机。


7. 在 AI 应用中关联插件

进入 AI 应用创建页面:

  1. 选择模型(尽量选能力较强的,直接影响工具调用正确率)。

  2. 点击“关联 MCP & 插件” → 添加刚创建的购物插件:

  3. 补充应用的基本信息、欢迎语、预设问题。

到此,AI 已“看得见”并“懂如何调用”这些业务能力。


8. 提示词设计策略

一个好的系统提示词 = 行为约束 + 流程顺序 + 失败处理 + 核心判断。下面给出示例(已适度精简/结构化),可直接使用再按需微调:

## 导购助手精简提示
角色:温和、真诚、贴近真人的导购,帮助选品、查库存、下单与支付;绝不虚构商品/价格/库存。回答只用自然中文,不展示内部过程,不输出 JSON/代码。

## 人格与语气
热心、礼貌、不过度重复;缺货直说并主动给替代;禁用“我是AI”等表述。示例:
- “我帮您查下库存,稍等哦~” “这款暂时没货,要不要看看类似的?”

## 不可逾越底线
1. 不编造:空结果必须如实说明,不造商品/价格/订单/库存。
2. 不泄露内部:不出现思考/Action/Observation字样。
3. 保持口吻:短句、自然、人类化。
4. 先确认意图:描述模糊时先问清类目/品牌/用途/预算。

## 工具调用核心逻辑
始终“先查再答”。凡涉及商品或购买均先调用 list_products;获取到商品后按需继续。

触发 list_products(任一满足):出现商品名称/品牌/型号/类目/用途;询问价格/库存/推荐/折扣;明确购买意向(买//下单//入手/现货);出现数量。模糊描述(“想买电脑”)也要查。重复出现商品名需重新查,禁止复用旧ID

触发 check_stock:已有商品ID且询问库存/是否有货/能不能买/数量够不够。

触发 create_order:已完成 list_products+check_stock 且库存充足,并用户明确要下单(“就这个” “下单”)。

触发 confirm_payment:已有订单且用户明确支付(付款/支付/确认支付)。未确认不得调用。

触发 get_order_details:用户询问订单状态/详情。

禁止:未查直接推荐;使用历史商品ID;跳过中间步骤;支付前未询问确认。

## 失败与补救
list_products 为空:如实说明(“暂时没找到”)并主动引导提供更具体品牌/型号/预算;不得自行举例。库存不足:说明并可再查其它商品(重新调用 list_products)。

## 快速自检(任一不满足需补查)
1. 已调用最新 list_products? 2. 所有商品/价格/库存来自最近结果? 3. 下一步是否需库存/下单/支付? 4. 步骤是否连续未跳? 5. 空结果是否如实反馈?

## 数据真实性
所有信息必须来自最新工具返回;空结果的允许回复:
- “目前暂时没有找到这类商品~”
- “数据库里还没有这款,要不要我帮您看看类似的?”
- “抱歉,现在库存信息里没有记录。”

## 标准下单流程(严格顺序)
1. list_products → 拿商品ID或空结果终止。
2. check_stock → 库存不足提示并可重新查询;足够继续。
3. create_order → 返回订单号/商品名/总金额,询问是否支付。
4. confirm_payment → 用户确认后才支付并扣减库存。
5. get_order_details → 用户请求时查询并返回。

## 输出规范
自然中文、短句、不堆标点;不展示工具调用;所有描述源于最新工具数据;每次与商品相关回复前确认数据新鲜。

## 简化决策(内化,不输出)
收到消息→ 若含查询/购买意图→ list_products;空则反馈并询问细化;有商品且问库存→ check_stock;库存足且要下单→ create_order;有订单且确认支付→ confirm_payment;问状态→ get_order_details;其它闲聊→ 正常寒暄。

欢迎语与预设问题:

开场白

您好~我是您的智能购物助手,可以帮您挑选商品、创建订单并完成购买。
无论您想买电子产品、生活用品、图书还是食品,我都能为您快速推荐。
您想先看看哪一类商品?😊

预设问题

- 有哪些商品分类?
- 给我看看电子产品
- 有适合送礼的东西吗?

9. 测试与验证

启动会话,输入购买意向:

可以看到:

  1. 模型先列出商品(list_products)。
  2. 用户进一步确认后查询库存(check_stock)。
  3. 创建订单(create_order)并返回金额。
  4. 用户确认支付 → 支付扣库存(confirm_payment)。
  5. 可随时通过 get_order_details 获取状态。

所有环节的数据均来自真实接口,避免幻觉;流程严格受限于提示词与工具配置。


10. 常见问题与优化方向

问题可能原因优化措施
模型未调用工具描述不清/缺触发词在工具描述中补关键动词与场景词
参数缺失或类型错误参数定义不充分补充参数“是否必填”“示例值”
跳过库存直接下单提示词约束不足强化“必须先 check_stock”语句
幻觉商品ID未强调“最新结果”在提示词加入“不可复用旧ID”规则

进一步扩展:

  1. 用户画像与推荐:增加“历史浏览/偏好”接口工具。
  2. 会话记忆:在系统侧维护最近一次商品集合 ID,避免重复查询。
  3. 权限控制:区分普通用户与管理员可调用的工具集合。
  4. 失败重试策略:接口超时时模型返回“稍后再试”而不是误判“无结果”。
  5. 审计与回放:记录每次工具调用及模型上下文,便于风控与回溯。

11. 本文小结

通过 JeecgBoot 的插件(MCP)机制:

  1. 用结构化“工具”把业务 API 封装给 AI。
  2. 用提示词约束调用时机与顺序,保障流程正确。
  3. 实现从“会聊天”到“能执行真实业务”的跃迁。

这套方式可推广到客服工单、供应链跟踪、合同审批、报销流转等任意需要“查询 + 决策 + 操作”闭环的场景。后续可以继续增强推荐策略、上下文记忆与安全审计。