codebizAI 实战课程
这是免费试读,不是全部。 本页有两样:《工具描述模板》全文(MCP 与工具接入:让 AI 用上你自己的系统配套材料第 1 份,共 4 份), 以及逐节讲稿第 1 节全文——注意看里面的「演示素材」和「常见偏差」,那是每一节都有的形态。 另外 3 份材料与其余 9 节讲稿在交付包内,付款后 1 个工作日内发到邮箱。 看完整课程大纲 →
免费试读 · 配套材料 01

工具描述模板

MCP 与工具接入:让 AI 用上你自己的系统 / 10 节 / 进阶 / 材料包 v1.0

对应 mcp-tools 第 2.1 节(2.2 参数、2.3 返回结构见第二、三节) · 形态:一页 + 可复制文本
用途:模型选工具、填参数、理解返回,唯一依据就是你写的这段契约。写不清不是它笨。

一、描述四段(复制填写)

【用途】一句话说明这个工具做什么(动词开头,不超过 20 字)

【什么时候用】列出 2–3 个具体场景,写清对象与条件

【什么时候不要用】列出 2–3 个易混场景,并指明该用哪个工具

【返回什么】返回的关键字段,以及失败时的返回形态

为什么第三段最重要

最多人漏「什么时候不要用」。不写边界,它就会在不该用的地方用——然后你会觉得它「变笨了」,其实是描述没写边界。

名字怎么起

坏名字问题好名字
query查什么?模型只能猜get_invoice_by_number
handle动词太空submit_expense_report
data_tool名词 + tool,无信息list_open_tickets

起名规则:动词 + 对象(+ 限定条件)。同一个系统里,动词只用几个固定词:get(单条)/ list(多条)/ create / update / delete / submit。


二、完整示例

【用途】按发票号码查询发票明细与报销状态。

【什么时候用】
· 用户给出具体发票号码,要查这张票的金额、开票方、是否已报销;
· 报销单关联了发票号,需要核对票面信息与报销单是否一致。

【什么时候不要用】
· 只有客户名或日期、没有发票号 → 用 list_invoices_by_customer;
· 要查一整批(超过 20 张)→ 用 export_invoices,本工具逐张查询会很慢;
· 要修改报销状态 → 用 update_reimbursement_status,本工具只读。

【返回什么】
成功:invoice_number / amount / issuer / issue_date / reimbursement_status / report_id
失败:error_code(NOT_FOUND / FORBIDDEN / UPSTREAM_TIMEOUT)+ 可读 message

三、参数:能写进结构的,不要写进描述

原则一句话:结构能管的,不靠自觉。 参数凡是没约束的,模型就会自己填一个——填得很合理,合理到你看不出来错。

约束项写在哪例
类型参数定义amount: number,不是「金额」
必填参数定义invoice_number 必填;include_void 可选
枚举参数定义status: draft / submitted / approved
范围参数定义limit: 1–100,默认 20
格式参数定义(正则)发票号 ^\d{8,20}$
示例参数描述"invoice_number": "01234567"

参数约束检查表

#检查项通过标准不通过的表现
1每个参数都有类型无 any / 无未声明传 "100" 和 100 都进得来
2区分必填与可选必填项缺失时明确报错缺参数时用空值继续跑
3枚举值穷尽列出全部合法值模型自己造一个「看起来对」的值
4有取值范围数字有上下限,字符串有长度limit: 100000 把下游打挂
5有默认值说明默认为空时,行为可预期默认行为不明确,结果每次不同
6每个参数有示例至少一个真实格式的示例模型按「常见格式」编,格式不对
7没有「万能参数」不存在 options / params 这类透传字段把下游的参数直接透出去,等于没有约束

第 7 条是隐蔽的坑:options: object 这种透传参数,看起来灵活,实际把所有约束都作废了——模型可以往里塞任何东西,而你的服务端照样接受。


四、返回结构:四段最小集

返回一段自然语言,模型每次都要重新理解一遍,结果必然不稳;返回结构化字段,它只需要取值。

段字段作用
状态status: ok / error一眼判断成败,不用读文本
数据data(对象或数组)只放业务字段,不放日志与内部 id
错误码error_code(枚举)让模型能据此选下一步动作
可读消息message给人看的一句话,不影响程序判断

错误返回的写法差异

坏写法问题好写法
「操作失败」等于没说,模型只能瞎猜「账户不存在,请确认客户编号」
「系统异常」无法区分是参数问题还是服务问题「下游超时(已重试 2 次),请稍后再试」
「权限不足」不知道缺哪个权限「当前账号无 report:read 权限,请联系管理员开通」

判断标准:模型读到这句话,能不能做出正确的下一步。不能,就是没写好。

返回体积

情况做法
结果 > 50 条分页(limit + offset),返回 total
单条记录字段 > 20 个返回摘要字段 + 一个「取详情」的工具
含长文本(正文、日志)截断到 200 字 + 标注「已截断」,另给取全文的工具

整段塞回去不是信息,是噪声——它会把真正重要的几个字段淹掉。


五、常见误用

误用后果
描述只写「用途」一段模型在相邻场景里选错工具,你以为是模型问题
名字用 query / handle / process无法区分,选错率高
参数全可选、无类型模型编造参数值
用 options 透传所有参数约束作废
返回自然语言长句下游每次重新理解,输出不稳定
错误只返回「失败」模型无法自我修正,只能反复重试

六、自查清单(交付前逐条打勾)

九条全过,再进 02-鉴权与权限清单.md——描述写错的代价是选错,权限写错的代价是赔钱,两件事不能混。

讲稿试读 · 第 1 节全文

讲稿长什么样:以第 1 节为例

每一节都包含:要解决 / 演示步骤 / 口播稿 / 演示素材(可直接照抄)/ 常见偏差 / 学员自查

1.1 客户端、服务端与工具的关系(约 25 分钟)

要解决:把三个概念摆正,避免「接了但不知道谁在干什么」。

演示步骤

  1. 白板画三方:使用方(客户端)→ 你的服务(服务端)→ 你的业务系统,标出各自的职责边界。
  2. 说明「工具」是服务端对外暴露的能力单元,不是一段提示词。
  3. 演示同一个业务接口包成「一个宽工具」与「三个窄工具」的差别。
  4. 讲清一个常见误解:模型不会直接连你的数据库,它只能调你暴露出来的工具。

口播稿

先把三方摆清楚:一边是使用方,一边是你的服务,最里面是你的业务系统。模型永远碰不到你的数据库,它只能调你暴露出来的工具。所以「安不安全」这件事,八成在你暴露了什么,不在模型聪不聪明。这一节记住一句话:工具是你给的菜单,模型只能点菜单上的菜。

演示素材(可直接照抄)

三方关系图(白板原样,可直接照画):

[使用方/客户端]  ←→  [你的服务(服务端)]  ←→  [你的业务系统(数据库/内部API)]
   模型在这里           工具在这里                    模型永远碰不到

「菜单」比喻落到实例上:业务系统里有 40 个接口,暴露成工具的只有 3 个——

工具名对应能力为什么只暴露这个
get_invoice_by_number按票号查发票高频只读场景
create_invoice_draft创建发票草稿(不生效)有草稿层兜底
get_monthly_summary月度汇总替代模型自己算汇总

宽工具与窄工具的对比:一个 manage_invoice(查/建/改/删四合一)vs 三个窄工具。宽工具的代价在 3.1 详拆,这里只看一个数据点:宽工具上线一周,出现了 2 次本应只查、结果调了改的误操作——菜单上有一道「全都要」,模型就会点它。

「安不安全八成在你暴露了什么」的自检顺序:列出你暴露的全部工具 → 逐个问「这个能力被滥用,最坏损失是什么」→ 最坏损失不可接受的,收紧或下线。先做这个,再谈模型侧的任何防护。

常见偏差

  1. 把工具当成「提示词模板」。工具是带鉴权、带参数约束、有真实副作用的接口能力——按提示词的随意程度对待它,出事只是时间问题。
  2. 「先都暴露出来,用不到的以后收」。收工具要通知所有使用方,比一开始就不开难得多。

学员自查:能画出自己系统的三方关系图,并说出「菜单」上有哪几道菜。

完整交付

MCP 与工具接入:让 AI 用上你自己的系统

10 节逐节讲稿 + 4 份配套材料,付款确认后 1 个工作日内发下载链接。录播视频在录制,完成后免费补发。

¥249一次性付费
立即购买 查看课程大纲