15|Prompt 结构化:目标-上下文-约束-输出格式

本篇目标:这是卷 2(提示工程实战)的第一篇。我们将告别"聊天式提问",学会像写代码一样写 Prompt,让 AI 的回答从"看运气"变成"稳定交付"。


一、为什么你的 Prompt 总是不稳定?

很多人的提问方式是碎片化的:

  • 第一句:"帮我写个 Python 脚本。"
  • AI 给了个脚本。
  • 第二句:"不对,要能读取 Excel 的。"
  • AI 改了。
  • 第三句:"要把结果存到数据库。"
  • AI 又改了。
  • 第四句:"能不能加个进度条?"

这种"挤牙膏"式的提问,不仅累,而且容易让 AI 迷失上下文 (记得卷 1 讲的遗忘原理吗?)。

更高效的做法是:一次性把话说完,并且说得有条理。 这就是 结构化 Prompt


二、结构化 Prompt 的四大支柱(GOCO 模型)

一个完美的 Prompt,应该包含四个核心模块:Goal(目标)、Context(上下文)、Constraints(约束)、Output(输出格式)

1. Goal(目标):你要干什么?

用一个动词开头,清晰定义任务。

  • :"看看这个代码。"
  • :"重构 这段 Python 代码,使其符合 PEP8 规范,并优化循环性能。"

2. Context(上下文):背景信息

告诉 AI 它不知道的信息。

  • 角色:你是谁?(资深后端工程师)
  • 环境:代码运行在哪里?(Ubuntu 22.04, Python 3.10)
  • 依赖:已经装了什么库?(Pandas, SQLAlchemy)
  • 业务背景:这是给谁用的?(给财务部门用的报表工具)

3. Constraints(约束):红线与边界

告诉 AI 不能做 什么,或者必须做什么。

  • "必须使用 pathlib,禁止使用 os.path。"
  • "代码必须包含类型注解(Type Hints)。"
  • "不要解释基础概念,直接给代码。"

4. Output(输出格式):交付物标准

告诉 AI 你想要什么样子的结果。

  • "返回一个 JSON 格式的列表。"
  • "只返回修复后的代码块,不要 Markdown 包裹。"
  • "先列出修改计划,再给代码。"

三、实战对比:从"路人甲"到"工程师"

任务:写一个 SQL 查询,统计每个用户的订单总额。

❌ 路人甲 Prompt

"写个 SQL 查用户订单总额。"

AI 回复(随机性大)

它可能会给你写个 MySQL 的,也可能写个 PostgreSQL 的;可能没考虑订单状态(退款的也算进去了?);字段名也是瞎编的。


✅ 结构化 Prompt

markdown 复制代码
# Goal
Write a SQL query to calculate the total order amount for each user.

# Context
- Database: PostgreSQL 15
- Table `users`: `id`, `username`
- Table `orders`: `id`, `user_id`, `amount` (decimal), `status` (string), `created_at` (timestamp)
- Business Logic: Only include orders with status 'completed'.

# Constraints
- Use `LEFT JOIN` to include users with zero orders (show 0 as total).
- Sort by total amount descending.
- Use `COALESCE` to handle NULL values.

# Output Format
- Return only the SQL code block.
- Add comments explaining the logic.

AI 回复(精准稳定)

sql 复制代码
-- Calculate total order amount for each user, including those with no orders
SELECT 
    u.id, 
    u.username, 
    COALESCE(SUM(o.amount), 0) AS total_amount
FROM 
    users u
LEFT JOIN 
    orders o ON u.id = o.user_id AND o.status = 'completed'
GROUP BY 
    u.id, u.username
ORDER BY 
    total_amount DESC;

结果完全符合预期:用了 Postgres 语法,过滤了状态,处理了 NULL 值,排序正确。


四、Prompt 的"积木化"管理

不要每次都从头写 Prompt。你应该建立自己的"Prompt 积木库"。

1. 角色积木(Role Block)

存一个文件 role_python.md

markdown 复制代码
You are a Senior Python Engineer.
- You prefer `pydantic` for data validation.
- You use `pytest` for testing.
- You follow Google Style Guide for docstrings.

2. 任务积木(Task Block)

存一个文件 task_refactor.md

markdown 复制代码
# Goal
Refactor the provided code for better readability and performance.
# Constraints
- Keep the original logic unchanged.
- Add comments for complex logic.

3. 组合使用

当你需要重构 Python 代码时,只需要把这两个积木拼起来,再贴上你的代码即可。

CursorTrae 中,你可以把这些积木存为 .cursorrules 或 Snippets,一键调用。


五、本篇产出:通用 Prompt 模板(可复制)

请把这个模板保存到你的笔记软件里,每次提问前填空。

markdown 复制代码
# Role (角色)
[你是谁?例如:资深前端开发,精通 React 和 Tailwind CSS]

# Goal (目标)
[你要做什么?例如:实现一个响应式的登录页面组件]

# Context (上下文)
[背景信息?例如:
- 使用 Next.js 14 App Router
- 已安装 lucide-react 图标库
- 需要适配深色模式
]

# Constraints (约束)
[规则是什么?例如:
- 使用 TypeScript
- 必须包含表单验证(Zod)
- 不要使用任何额外的 CSS 文件,全部用 Tailwind 类
]

# Output Format (输出格式)
[长什么样?例如:
- 只提供组件代码文件 (.tsx)
- 不解释基础 import
]

# Input Data (输入数据 - 可选)
[如果有代码要改,贴在这里]

练习题:修复这个烂 Prompt

烂 Prompt:"帮我把这个 excel 转成 csv。"

请用上面的模板,把它改成一个结构化 Prompt。

(提示:你要考虑 excel 有几个 sheet?csv 存哪里?编码格式是 utf-8 吗?要不要保留表头?)
点击查看参考答案

markdown 复制代码
# Goal
Write a Python script to convert an Excel file to CSV.

# Context
- Input file: `data.xlsx` (contains multiple sheets)
- Target sheet: "Sheet1" only

# Constraints
- Use `pandas` library.
- Encoding: UTF-8 with BOM (to support Chinese in Excel).
- Separator: Comma (`,`).
- Handle missing values: Fill with empty string.

# Output Format
- Provide the full Python script.

下一步 :掌握了结构化,你的 Prompt 已经及格了。但有时候,仅仅把话说清楚还不够,你得给 AI "打个样"。下一章我们将学习 Few-Shot Prompting(示例驱动)------这是让 AI 瞬间学会你团队代码风格的终极秘籍。

相关推荐
chushiyunen2 小时前
人工智能-function calling(函数调用)
数据库·ai编程
诸神缄默不语2 小时前
论文阅读笔记:AI编程用的AGENTS.md应该不写或少写
论文阅读·笔记·ai编程
刘 大 望2 小时前
MCP详细介绍以及IDE和Spring AI中应用
java·ide·人工智能·spring·ai·aigc·ai编程
小陈工3 小时前
2026年3月23日技术资讯洞察:AI Agent失控,Claude Code引领AI编程新趋势
开发语言·数据库·人工智能·后端·python·性能优化·ai编程
wuhen_n3 小时前
初识Function Calling:让AI学会“调用工具”
前端·vue.js·ai编程
chushiyunen3 小时前
prompt提示词工程笔记
笔记·prompt
Makesths12 小时前
【JSReverser-MCP】一句话逆向猿人学21题
ai·ai编程
saifeng14 小时前
安装 Claude Code
ai编程
多年小白14 小时前
OpenClaw 本周技术更新速递
人工智能·ai·ai编程·openclaw