如何通过 Few-Shot 技巧让 AI 稳定输出符合特定 JSON 格式的 API 接口文档
别再试图通过长篇大论的自然语言描述来约束 AI 的 JSON 输出格式了,那种方式在处理复杂嵌套结构时极易崩溃。最稳妥的方案是采用 Few-Shot(少样本)提示,直接给它 2-3 个“输入 → 输出”的真实对照样本,强行把 AI 拉进你的逻辑轨道。
我之前在用 Cursor 快速生成一套内部 API 文档时,如果只告诉它“请输出 JSON 格式,包含字段名和类型”,它经常在 description 里乱加换行符,导致解析失败。后来我把 Prompt 改成了这种结构:
你是一个 API 文档专家。请将我的功能描述转换为特定 JSON 格式。
### 格式要求
- 每个接口必须包含:path, method, params(list), response(object)。
- 严禁输出 Markdown 代码块外的任何文字。
### 示例 1
输入:用户登录接口,路径 /auth/login,需要用户名和密码,返回 token 和过期时间。
输出:
{
"path": "/auth/login",
"method": "POST",
"params": [
{"name": "username", "type": "string", "required": true},
{"name": "password", "type": "string", "required": true}
],
"response": {"token": "string", "expires_in": "number"}
}
### 示例 2
输入:获取用户信息,路径 /user/info,需要 userId,返回姓名和头像。
输出:
{
"path": "/user/info",
"method": "GET",
"params": [
{"name": "userId", "type": "string", "required": true}
],
"response": {"nickname": "string", "avatar": "string"}
}
### 正式任务
输入:[这里放入实际的功能描述]
输出:这里有个关键配置技巧:如果你在用 Claude 3.5 Sonnet,可以在 .cursorrules 文件里把这个 Few-Shot 模板写死。这样每次在 Composer 模式下要求它写文档时,它会自动继承这个上下文,不需要你重复粘贴示例。
踩过的一个大坑是:示例数量不要过多。给 10 个例子并不会让它更聪明,反而会消耗大量 Token 导致上下文窗口压力增大,甚至让 AI 开始在示例中寻找并不存在的模式。通常 2-3 个具有代表性的差异化样本(比如一个 GET,一个 POST)就足够了。
为了进一步提升稳定性,我会在 Prompt 末尾强制加上 输出必须以 { 开头,这能有效过滤掉 AI 习惯性输出的“Here is the JSON output:”这类废话,直接让结果能被 JSON.parse() 识别。
免费 AI 工具箱 · 全部完全免费
全部回复 (0)
还没有回复,来发第一条吧!
